Prechádzať zdrojové kódy

Site updated: 2020-04-07 15:22:45

schtonn 5 rokov pred
rodič
commit
3018b21d6e

+ 1618 - 0
analytics.js

@@ -0,0 +1,1618 @@
+'use strict';
+var _typeof = 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator ? function (t) {
+    return typeof t;
+} : function (t) {
+    return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t;
+};
+!function () {
+    function t(t, e) {
+        t = t.split('.');
+        var n, r = h;
+        t[0] in r || void 0 === r.execScript || r.execScript('var ' + t[0]);
+        for (; t.length && (n = t.shift());)
+            t.length || void 0 === e ? r = r[n] && r[n] !== Object.prototype[n] ? r[n] : r[n] = {} : r[n] = e;
+    }
+    function u(t, e) {
+        for (var n in e)
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+    }
+    function i(t) {
+        for (var e in t)
+            if (t.hasOwnProperty(e))
+                return 1;
+    }
+    function o(t, e) {
+        p.addEventListener ? p.addEventListener(t, e, !1) : p.attachEvent && p.attachEvent('on' + t, e);
+    }
+    function a() {
+        e.TAGGING = e.TAGGING || [], e.TAGGING[1] = !0;
+    }
+    function s(t, e) {
+        'protocol' !== (e = e && String(e).toLowerCase()) && 'port' !== e || (t.protocol = w(t.protocol) || w(d.location.protocol)), 'port' === e ? t.port = String(Number(t.hostname ? t.port : d.location.port) || ('http' == t.protocol ? 80 : 'https' == t.protocol ? 443 : '')) : 'host' === e && (t.hostname = (t.hostname || d.location.hostname).replace(m, '').toLowerCase());
+        var n = w(t.protocol);
+        switch (e = e && String(e).toLowerCase()) {
+        case 'url_no_fragment':
+            e = '', t && t.href && (e = (e = t.href.indexOf('#')) < 0 ? t.href : t.href.substr(0, e)), t = e;
+            break;
+        case 'protocol':
+            t = n;
+            break;
+        case 'host':
+            t = t.hostname.replace(m, '').toLowerCase();
+            break;
+        case 'port':
+            t = String(Number(t.port) || ('http' == n ? 80 : 'https' == n ? 443 : ''));
+            break;
+        case 'path':
+            t.pathname || t.hostname || a();
+            t:
+                if (e = (t = (t = '/' == t.pathname.substr(0, 1) ? t.pathname : '/' + t.pathname).split('/'))[t.length - 1], n = [], Array.prototype.indexOf)
+                    e = n.indexOf(e), e = 'number' == typeof e ? e : -1;
+                else {
+                    for (var r = 0; r < n.length; r++)
+                        if (n[r] === e) {
+                            e = r;
+                            break t;
+                        }
+                    e = -1;
+                }
+            0 <= e && (t[t.length - 1] = ''), t = t.join('/');
+            break;
+        case 'query':
+            t = t.search.replace('?', '');
+            break;
+        case 'extension':
+            t = (t = 1 < (t = t.pathname.split('.')).length ? t[t.length - 1] : '').split('/')[0];
+            break;
+        case 'fragment':
+            t = t.hash.replace('#', '');
+            break;
+        default:
+            t = t && t.href;
+        }
+        return t;
+    }
+    function c(t) {
+        var e = p.createElement('a');
+        t && (e.href = t);
+        var n = e.pathname;
+        return '/' !== n[0] && (t || a(), n = '/' + n), t = e.hostname.replace(m, ''), {
+            href: e.href,
+            protocol: e.protocol,
+            host: e.host,
+            hostname: t,
+            pathname: n,
+            search: e.search,
+            hash: e.hash,
+            port: e.port
+        };
+    }
+    var l, f, g, h = this || self, d = window, p = document, v = /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i, e = {}, m = /:[0-9]+$/, w = function (t) {
+            return t ? t.replace(':', '').toLowerCase() : '';
+        };
+    function _() {
+        for (var t = l, e = {}, n = 0; n < t.length; ++n)
+            e[t[n]] = n;
+        return e;
+    }
+    function b() {
+        var t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+        return (t += t.toLowerCase() + '0123456789-_') + '.';
+    }
+    function y(t) {
+        l = l || b(), f = f || _();
+        for (var e = [], n = 0; n < t.length; n += 3) {
+            var r = n + 1 < t.length, a = n + 2 < t.length, o = t.charCodeAt(n), i = r ? t.charCodeAt(n + 1) : 0, s = a ? t.charCodeAt(n + 2) : 0, c = o >> 2;
+            o = (3 & o) << 4 | i >> 4, i = (15 & i) << 2 | s >> 6, s &= 63, a || (s = 64, r || (i = 64)), e.push(l[c], l[o], l[i], l[s]);
+        }
+        return e.join('');
+    }
+    function k(r) {
+        function t(t) {
+            for (; a < r.length;) {
+                var e = r.charAt(a++), n = f[e];
+                if (null != n)
+                    return n;
+                if (!/^[\s\xa0]*$/.test(e))
+                    throw Error('Unknown base64 encoding at char: ' + e);
+            }
+            return t;
+        }
+        l = l || b(), f = f || _();
+        for (var e = '', a = 0;;) {
+            var n = t(-1), o = t(0), i = t(64), s = t(64);
+            if (64 === s && -1 === n)
+                return e;
+            e += String.fromCharCode(n << 2 | o >> 4), 64 != i && (e += String.fromCharCode(o << 4 & 240 | i >> 2), 64 != s && (e += String.fromCharCode(i << 6 & 192 | s)));
+        }
+    }
+    function O() {
+        function t(t) {
+            e(t.target || t.srcElement || {});
+        }
+        var e = D, n = G, r = S();
+        if (!r.init) {
+            o('mousedown', t), o('keyup', t), o('submit', function (t) {
+                n(t.target || t.srcElement || {});
+            });
+            var a = HTMLFormElement.prototype.submit;
+            HTMLFormElement.prototype.submit = function () {
+                n(this), a.call(this);
+            }, r.init = !0;
+        }
+    }
+    function x(t, e, n) {
+        for (var r = S().decorators, a = {}, o = 0; o < r.length; ++o) {
+            var i, s = r[o];
+            if (i = !n || s.forms)
+                t: {
+                    var c = t;
+                    if ((i = s.domains) && (s.sameHost || c !== p.location.hostname))
+                        for (var l = 0; l < i.length; l++)
+                            if (i[l] instanceof RegExp) {
+                                if (i[l].test(c)) {
+                                    i = !0;
+                                    break t;
+                                }
+                            } else if (0 <= c.indexOf(i[l])) {
+                                i = !0;
+                                break t;
+                            }
+                    i = !1;
+                }
+            i && (null == (i = s.placement) && (i = s.fragment ? 2 : 1), i === e && u(a, s.callback()));
+        }
+        return a;
+    }
+    var S = function () {
+            var t = {}, e = d.google_tag_data;
+            return d.google_tag_data = void 0 === e ? t : e, (e = (t = d.google_tag_data).gl) && e.decorators || (e = { decorators: [] }, t.gl = e), e;
+        }, T = /(.*?)\*(.*?)\*(.*)/, C = /([^?#]+)(\?[^#]*)?(#.*)?/;
+    function j(t) {
+        return new RegExp('(.*?)(^|&)' + t + '=([^&]*)&?(.*)');
+    }
+    function A(t) {
+        var e, n = [];
+        for (e in t)
+            if (t.hasOwnProperty(e)) {
+                var r = t[e];
+                void 0 !== r && r == r && null !== r && '[object Object]' !== r.toString() && (n.push(e), n.push(y(String(r))));
+            }
+        return t = n.join('*'), ["1",N(t),t].join('*');
+    }
+    var N = function (t, e) {
+        if (t = [window.navigator.userAgent,(new Date).getTimezoneOffset(),window.navigator.userLanguage||window.navigator.language,Math.floor((new Date).getTime()/60/1e3)-(void 0===e?0:e),t].join('*'), !(e = g)) {
+            e = Array(256);
+            for (var n = 0; n < 256; n++) {
+                for (var r = n, a = 0; a < 8; a++)
+                    r = 1 & r ? r >>> 1 ^ 3988292384 : r >>> 1;
+                e[n] = r;
+            }
+        }
+        for (g = e, e = 4294967295, n = 0; n < t.length; n++)
+            e = e >>> 8 ^ g[255 & (e ^ t.charCodeAt(n))];
+        return ((-1 ^ e) >>> 0).toString(36);
+    };
+    function E(t, e) {
+        if (t = j(t).exec(e)) {
+            var n = t[2], r = t[4];
+            e = t[1], r && (e = e + n + r);
+        }
+        return e;
+    }
+    var I = function (t, e, n) {
+            function r(t, e) {
+                return (t = E('_gl', t)).length && (t = e + t), t;
+            }
+            if (d.history && d.history.replaceState) {
+                var a = j('_gl');
+                (a.test(e) || a.test(n)) && (t = s(t, 'path'), e = r(e, '?'), n = r(n, '#'), d.history.replaceState({}, void 0, '' + t + e + n));
+            }
+        }, R = function (t) {
+            var e = void 0 === e ? 3 : e;
+            try {
+                if (t) {
+                    t: {
+                        for (var n = 0; n < 3; ++n) {
+                            var r = T.exec(t);
+                            if (r) {
+                                var a = r;
+                                break t;
+                            }
+                            t = decodeURIComponent(t);
+                        }
+                        a = void 0;
+                    }
+                    if (a && '1' === a[1]) {
+                        var o = a[2], i = a[3];
+                        t: {
+                            for (a = 0; a < e; ++a)
+                                if (o === N(i, a)) {
+                                    var s = !0;
+                                    break t;
+                                }
+                            s = !1;
+                        }
+                        if (s) {
+                            e = {};
+                            var c = i ? i.split('*') : [];
+                            for (i = 0; i < c.length; i += 2)
+                                e[c[i]] = k(c[i + 1]);
+                            return e;
+                        }
+                    }
+                }
+            } catch (t) {
+            }
+        };
+    function L(n, t, e, r) {
+        function a(t) {
+            var e = (t = E(n, t)).charAt(t.length - 1);
+            return t && '&' !== e && (t += '&'), t + s;
+        }
+        r = void 0 !== r && r;
+        var o = C.exec(e);
+        if (!o)
+            return '';
+        e = o[1];
+        var i = o[2] || '';
+        o = o[3] || '';
+        var s = n + '=' + t;
+        return r ? o = '#' + a(o.substring(1)) : i = '?' + a(i.substring(1)), '' + e + i + o;
+    }
+    function $(t, e) {
+        var n = 'FORM' === (t.tagName || '').toUpperCase(), r = x(e, 1, n), a = x(e, 2, n);
+        for (var o in (e = x(e, 3, n), i(r) && (r = A(r), n ? U('_gl', r, t) : M('_gl', r, t, !1)), !n && i(a) && M('_gl', n = A(a), t, !0), e))
+            e.hasOwnProperty(o) && P(o, e[o], t);
+    }
+    function P(t, e, n, r) {
+        if (n.tagName) {
+            if ('a' === n.tagName.toLowerCase())
+                return M(t, e, n, r);
+            if ('form' === n.tagName.toLowerCase())
+                return U(t, e, n);
+        }
+        if ('string' == typeof n)
+            return L(t, e, n, r);
+    }
+    function M(t, e, n, r) {
+        n.href && (t = L(t, e, n.href, void 0 !== r && r), v.test(t) && (n.href = t));
+    }
+    function U(t, e, n) {
+        if (n && n.action) {
+            var r = (n.method || '').toLowerCase();
+            if ('get' === r) {
+                r = n.childNodes || [];
+                for (var a = !1, o = 0; o < r.length; o++) {
+                    var i = r[o];
+                    if (i.name === t) {
+                        i.setAttribute('value', e), a = !0;
+                        break;
+                    }
+                }
+                a || ((r = p.createElement('input')).setAttribute('type', 'hidden'), r.setAttribute('name', t), r.setAttribute('value', e), n.appendChild(r));
+            } else
+                'post' === r && (t = L(t, e, n.action), v.test(t) && (n.action = t));
+        }
+    }
+    var D = function (t) {
+            try {
+                t: {
+                    for (var e = 100; t && 0 < e;) {
+                        if (t.href && t.nodeName.match(/^a(?:rea)?$/i)) {
+                            var n = t;
+                            break t;
+                        }
+                        t = t.parentNode, e--;
+                    }
+                    n = null;
+                }
+                if (n) {
+                    var r = n.protocol;
+                    'http:' !== r && 'https:' !== r || $(n, n.hostname);
+                }
+            } catch (t) {
+            }
+        }, G = function (t) {
+            try {
+                if (t.action)
+                    $(t, s(c(t.action), 'host'));
+            } catch (t) {
+            }
+        };
+    t('google_tag_data.glBridge.auto', function (t, e, n, r) {
+        O(), t = {
+            callback: t,
+            domains: e,
+            fragment: 2 === (n = 'fragment' === n ? 2 : 1),
+            placement: n,
+            forms: !!r,
+            sameHost: !1
+        }, S().decorators.push(t);
+    }), t('google_tag_data.glBridge.decorate', function (t, e, n) {
+        return P('_gl', t = A(t), e, !!n);
+    }), t('google_tag_data.glBridge.generate', A), t('google_tag_data.glBridge.get', function (t, e) {
+        var i, n = (i = !!e, function (t) {
+                var e = c(d.location.href), n = e.search.replace('?', '');
+                t: {
+                    for (var r = n.split('&'), a = 0; a < r.length; a++) {
+                        var o = r[a].split('=');
+                        if ('_gl' === decodeURIComponent(o[0]).replace(/\+/g, ' ')) {
+                            r = o.slice(1).join('=');
+                            break t;
+                        }
+                    }
+                    r = void 0;
+                }
+                t.query = R(r || '') || {}, a = (r = s(e, 'fragment')).match(j('_gl')), t.fragment = R(a && a[3] || '') || {}, i && I(e, n, r);
+            });
+        return (e = S()).data || (e.data = {
+            query: {},
+            fragment: {}
+        }, n(e.data)), n = {}, (e = e.data) && (u(n, e.query), t && u(n, e.fragment)), n;
+    });
+}(window), function () {
+    function i(t) {
+        var e, n = 1;
+        if (t)
+            for (n = 0, e = t.length - 1; 0 <= e; e--) {
+                var r = t.charCodeAt(e);
+                n = 0 != (r = 266338304 & (n = (n << 6 & 268435455) + r + (r << 14))) ? n ^ r >> 21 : n;
+            }
+        return n;
+    }
+    function a(t) {
+        this.w = t || [];
+    }
+    a.prototype.set = function (t) {
+        this.w[t] = !0;
+    }, a.prototype.encode = function () {
+        for (var t = [], e = 0; e < this.w.length; e++)
+            this.w[e] && (t[Math.floor(e / 6)] ^= 1 << e % 6);
+        for (e = 0; e < t.length; e++)
+            t[e] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'.charAt(t[e] || 0);
+        return t.join('') + '~';
+    };
+    var t, e, n = window.GoogleAnalyticsObject;
+    if ((t = null != n) && (t = -1 < (n.constructor + '').indexOf('String')), e = t) {
+        var r = window.GoogleAnalyticsObject;
+        e = r ? r.replace(/^[\s\xa0]+|[\s\xa0]+$/g, '') : '';
+    }
+    var o = e || 'ga', c = /^(?:utma\.)?\d+\.\d+$/, l = /^amp-[\w.-]{22,64}$/, s = !1, u = new a();
+    function f(t) {
+        u.set(t);
+    }
+    function g(t) {
+        t = S(t), t = new a(t);
+        for (var e = u.w.slice(), n = 0; n < t.w.length; n++)
+            e[n] = e[n] || t.w[n];
+        return new a(e).encode();
+    }
+    function h(t) {
+        return 'function' == typeof t;
+    }
+    function d(t) {
+        return null != t && -1 < (t.constructor + '').indexOf('String');
+    }
+    function p() {
+        for (var t = W.navigator.userAgent + (Z.cookie ? Z.cookie : '') + (Z.referrer ? Z.referrer : ''), e = t.length, n = W.history.length; 0 < n;)
+            t += n-- ^ e++;
+        return [Tt()^2147483647&i(t),Math.round((new Date).getTime()/1e3)].join('.');
+    }
+    function v(t) {
+        var e = Z.createElement('img');
+        return e.width = 1, e.height = 1, e.src = t, e;
+    }
+    function m() {
+    }
+    function w(t) {
+        return encodeURIComponent instanceof Function ? encodeURIComponent(t) : (f(28), t);
+    }
+    function _(t, e, n, r) {
+        try {
+            t.addEventListener ? t.addEventListener(e, n, !!r) : t.attachEvent && t.attachEvent('on' + e, n);
+        } catch (t) {
+            f(27);
+        }
+    }
+    function b(t, e) {
+        return N(Z.location[e ? 'href' : 'search'], t);
+    }
+    function y() {
+        var t = '' + Z.location.hostname;
+        return 0 == t.indexOf('www.') ? t.substring(4) : t;
+    }
+    function k(t, e) {
+        var n = t.indexOf(e);
+        return !(5 != n && 6 != n || '/' != (t = t.charAt(n + e.length)) && '?' != t && '' != t && ':' != t);
+    }
+    function O(t, e) {
+        if (1 == e.length && null != e[0] && 'object' === _typeof(e[0]))
+            return e[0];
+        for (var n = {}, r = Math.min(t.length + 1, e.length), a = 0; a < r; a++) {
+            if ('object' === _typeof(e[a])) {
+                for (var o in e[a])
+                    e[a].hasOwnProperty(o) && (n[o] = e[a][o]);
+                break;
+            }
+            a < t.length && (n[t[a]] = e[a]);
+        }
+        return n;
+    }
+    function x() {
+        this.keys = [], this.values = {}, this.m = {};
+    }
+    var S = function (t) {
+            return t = t.get(De), T(t) || (t = []), t;
+        }, T = function (t) {
+            return '[object Array]' == Object.prototype.toString.call(Object(t));
+        }, C = function (t, e) {
+            return 0 == t.indexOf(e);
+        }, j = /^[\w\-:/.?=&%!\[\]]+$/, A = /^[\w+/_-]+[=]{0,2}$/, N = function (t, e) {
+            return (t = t.match('(?:&|#|\\?)' + w(e).replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1') + '=([^&#]*)')) && 2 == t.length ? t[1] : '';
+        };
+    x.prototype.set = function (t, e, n) {
+        this.keys.push(t), n ? this.m[':' + t] = e : this.values[':' + t] = e;
+    }, x.prototype.get = function (t) {
+        return this.m.hasOwnProperty(':' + t) ? this.m[':' + t] : this.values[':' + t];
+    }, x.prototype.map = function (t) {
+        for (var e = 0; e < this.keys.length; e++) {
+            var n = this.keys[e], r = this.get(n);
+            r && t(n, r);
+        }
+    };
+    function E(t, e) {
+        return setTimeout(t, e);
+    }
+    function I(t) {
+        var e = Y._gaUserPrefs;
+        if (e && e.ioo && e.ioo() || t && !0 === Y['ga-disable-' + t])
+            return 1;
+        try {
+            var n = Y.external;
+            if (n && n._gaUserPrefs && 'oo' == n._gaUserPrefs)
+                return 1;
+        } catch (t) {
+        }
+        for (t = [], e = String(J.cookie || document.cookie).split(';'), n = 0; n < e.length; n++) {
+            var r = e[n].split('='), a = r[0].replace(/^\s*|\s*$/g, '');
+            a && 'AMP_TOKEN' == a && ((r = r.slice(1).join('=').replace(/^\s*|\s*$/g, '')) && (r = decodeURIComponent(r)), t.push(r));
+        }
+        for (e = 0; e < t.length; e++)
+            if ('$OPT_OUT' == t[e])
+                return 1;
+        return !!J.getElementById('__gaOptOutExtension');
+    }
+    function R(t) {
+        var e = [], n = Z.cookie.split(';');
+        t = new RegExp('^\\s*' + t + '=\\s*(.*?)\\s*$');
+        for (var r = 0; r < n.length; r++) {
+            var a = n[r].match(t);
+            a && e.push(a[1]);
+        }
+        return e;
+    }
+    function L(t, e, n, r, a, o, i) {
+        if (a = !I(a) && !(tt.test(Z.location.hostname) || '/' == n && Q.test(r))) {
+            if (e && 1200 < e.length && (e = e.substring(0, 1200)), n = t + '=' + e + '; path=' + n + '; ', o && (n += 'expires=' + new Date(new Date().getTime() + o).toGMTString() + '; '), r && 'none' !== r && (n += 'domain=' + r + ';'), i && (n += i + ';'), r = Z.cookie, Z.cookie = n, !(r = r != Z.cookie))
+                t: {
+                    for (t = R(t), r = 0; r < t.length; r++)
+                        if (e == t[r]) {
+                            r = !0;
+                            break t;
+                        }
+                    r = !1;
+                }
+            return r;
+        }
+    }
+    function $(t) {
+        return encodeURIComponent ? encodeURIComponent(t).replace(/\(/g, '%28').replace(/\)/g, '%29') : t;
+    }
+    function P() {
+        if (void 0 !== W.__ga4__)
+            return W.__ga4__;
+        if (void 0 === H) {
+            var t = W.navigator.userAgent;
+            if (t) {
+                var e = t;
+                try {
+                    e = decodeURIComponent(t);
+                } catch (t) {
+                }
+                (t = !(0 <= e.indexOf('Chrome') || 0 <= e.indexOf('CriOS') || !(0 <= e.indexOf('Safari/') || 0 <= e.indexOf('Safari,')))) && (t = 11 <= ((e = et.exec(e)) ? Number(e[1]) : -1)), H = t;
+            } else
+                H = !1;
+        }
+        return H;
+    }
+    function M(t) {
+        return (t || s || 'https:' == Z.location.protocol ? 'https:' : 'http:') + '//www.google-analytics.com';
+    }
+    function U(t) {
+        this.name = 'len', this.message = t + '-8192';
+    }
+    function D(t, e, n) {
+        if (n = n || m, e.length <= 2036)
+            gt(t, e, n);
+        else {
+            if (!(e.length <= 8192))
+                throw pt('len', e.length), new U(e.length);
+            dt(t, e, n) || ht(t, e, n) || gt(t, e, n);
+        }
+    }
+    function G(t, e, n, r) {
+        ht(t + '?' + e, '', r = r || m, n);
+    }
+    function q() {
+        return W.gaData = W.gaData || {};
+    }
+    function V(t) {
+        var e = q();
+        return e[t] = e[t] || {};
+    }
+    function F() {
+        this.M = [];
+    }
+    var H, B, z, K, X, W = window, Z = document, Y = window, J = document, Q = /^(www\.)?google(\.com?)?(\.[a-z]{2})?$/, tt = /(^|\.)doubleclick\.net$/i, et = /^.*Version\/?(\d+)[^\d].*$/i, nt = /^https?:\/\/[^/]*cdn\.ampproject\.org\//, rt = /^(?:www\.|m\.|amp\.)+/, at = [], ot = function () {
+            ta.D([m]);
+        }, it = function t(e, n) {
+            var r = R('AMP_TOKEN');
+            return 1 < r.length ? (f(55), !1) : '$OPT_OUT' == (r = decodeURIComponent(r[0] || '')) || '$ERROR' == r || I(n) ? (f(62), !1) : nt.test(Z.referrer) || '$NOT_FOUND' != r ? void 0 !== X ? (f(56), E(function () {
+                e(X);
+            }, 0), !0) : B ? (at.push(e), !0) : '$RETRIEVING' == r ? (f(57), E(function () {
+                t(e, n);
+            }, 10000), !0) : (B = !0, r && '$' != r[0] || (lt('$RETRIEVING', 30000), setTimeout(ct, 30000), r = ''), !!st(r, n) && (at.push(e), !0)) : (f(68), !1);
+        }, st = function e(n, r, a) {
+            if (!window.JSON)
+                return f(58), !1;
+            var t = W.XMLHttpRequest;
+            if (!t)
+                return f(59), !1;
+            var o = new t();
+            return 'withCredentials' in o ? (o.open('POST', (a || 'https://ampcid.google.com/v1/publisher:getClientId') + '?key=AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM', !0), o.withCredentials = !0, o.setRequestHeader('Content-Type', 'text/plain'), o.onload = function () {
+                if (B = !1, 4 == o.readyState) {
+                    try {
+                        200 != o.status && (f(61), ut('', '$ERROR', 30000));
+                        var t = JSON.parse(o.responseText);
+                        t.optOut ? (f(63), ut('', '$OPT_OUT', 31536000000)) : t.clientId ? ut(t.clientId, t.securityToken, 31536000000) : !a && t.alternateUrl ? (z && clearTimeout(z), B = !0, e(n, r, t.alternateUrl)) : (f(64), ut('', '$NOT_FOUND', 3600000));
+                    } catch (t) {
+                        f(65), ut('', '$ERROR', 30000);
+                    }
+                    o = null;
+                }
+            }, t = { originScope: 'AMP_ECID_GOOGLE' }, n && (t.securityToken = n), o.send(JSON.stringify(t)), z = E(function () {
+                f(66), ut('', '$ERROR', 30000);
+            }, 10000), !0) : (f(60), !1);
+        }, ct = function () {
+            B = !1;
+        }, lt = function (t, e) {
+            if (void 0 === K) {
+                K = '';
+                for (var n = nr(), r = 0; r < n.length; r++) {
+                    var a = n[r];
+                    if (L('AMP_TOKEN', encodeURIComponent(t), '/', a, '', e))
+                        return void (K = a);
+                }
+            }
+            L('AMP_TOKEN', encodeURIComponent(t), '/', K, '', e);
+        }, ut = function (t, e, n) {
+            for (z && clearTimeout(z), e && lt(e, n), X = t, e = at, at = [], n = 0; n < e.length; n++)
+                e[n](t);
+        }, ft = function (t) {
+            t: {
+                if (nt.test(Z.referrer)) {
+                    var e = Z.location.hostname.replace(rt, '');
+                    e: {
+                        var n = Z.referrer, r = (n = n.replace(/^https?:\/\//, '')).replace(/^[^/]+/, '').split('/'), a = r[2];
+                        if (!(r = (r = 's' == a ? r[3] : a) ? decodeURIComponent(r) : r)) {
+                            if (0 == n.indexOf('xn--')) {
+                                n = '';
+                                break e;
+                            }
+                            (n = n.match(/(.*)\.cdn\.ampproject\.org\/?$/)) && 2 == n.length && (r = n[1].replace(/-/g, '.').replace(/\.\./g, '-'));
+                        }
+                        n = r ? r.replace(rt, '') : '';
+                    }
+                    if ((r = e === n) || (n = '.' + n, r = e.substring(e.length - n.length, e.length) === n), r) {
+                        e = !0;
+                        break t;
+                    }
+                    f(78);
+                }
+                e = !1;
+            }
+            return e && !1 !== t;
+        }, gt = function (t, e, n) {
+            var r = v(t + '?' + e);
+            r.onload = r.onerror = function () {
+                r.onload = null, r.onerror = null, n();
+            };
+        }, ht = function (t, e, r, a) {
+            var n = W.XMLHttpRequest;
+            if (!n)
+                return !1;
+            var o = new n();
+            return 'withCredentials' in o && (t = t.replace(/^http:/, 'https:'), o.open('POST', t, !0), o.withCredentials = !0, o.setRequestHeader('Content-Type', 'text/plain'), o.onreadystatechange = function () {
+                if (4 == o.readyState) {
+                    if (a)
+                        try {
+                            var t = o.responseText;
+                            if (t.length < 1)
+                                pt('xhr', 'ver', '0'), r();
+                            else if ('1' != t.charAt(0))
+                                pt('xhr', 'ver', String(t.length)), r();
+                            else if (3 < a.count++)
+                                pt('xhr', 'tmr', '' + a.count), r();
+                            else if (1 == t.length)
+                                r();
+                            else {
+                                var e = t.charAt(1);
+                                if ('d' == e)
+                                    G('https://stats.g.doubleclick.net/j/collect', a.U, a, r);
+                                else if ('g' == e) {
+                                    gt('https://www.google.%/ads/ga-audiences'.replace('%', 'com'), a.google, r);
+                                    var n = t.substring(2);
+                                    n && (/^[a-z.]{1,6}$/.test(n) ? gt('https://www.google.%/ads/ga-audiences'.replace('%', n), a.google, m) : pt('tld', 'bcc', n));
+                                } else
+                                    pt('xhr', 'brc', e), r();
+                            }
+                        } catch (t) {
+                            pt('xhr', 'rsp'), r();
+                        }
+                    else
+                        r();
+                    o = null;
+                }
+            }, o.send(e), !0);
+        }, dt = function (t, e, n) {
+            return !!W.navigator.sendBeacon && (!!W.navigator.sendBeacon(t, e) && (n(), !0));
+        }, pt = function (t, e, n) {
+            1 <= 100 * Math.random() || I('?') || (t = ["t=error","_e="+t,"_v=j81","sr=1"], e && t.push('_f=' + e), n && t.push('_m=' + w(n.substring(0, 100))), t.push('aip=1'), t.push('z=' + Tt()), gt(M(!0) + '/u/d', t.join('&'), m));
+        };
+    function vt(t) {
+        if (100 != t.get(yn) && i(At(t, an)) % 10000 >= 100 * Nt(t, yn))
+            throw 'abort';
+    }
+    function mt(t) {
+        if (I(At(t, ln)))
+            throw 'abort';
+    }
+    function wt() {
+        var t = Z.location.protocol;
+        if ('http:' != t && 'https:' != t)
+            throw 'abort';
+    }
+    function _t(n) {
+        try {
+            W.navigator.sendBeacon ? f(42) : W.XMLHttpRequest && 'withCredentials' in new W.XMLHttpRequest() && f(40);
+        } catch (t) {
+        }
+        n.set(Ue, g(n), !0), n.set(Xt, Nt(n, Xt) + 1);
+        var r = [];
+        Pt.map(function (t, e) {
+            e.F && (null != (t = n.get(t)) && t != e.defaultValue && ('boolean' == typeof t && (t *= 1), r.push(e.F + '=' + w('' + t))));
+        }), !1 === n.get(Un) && r.push('npa=1'), r.push('z=' + St()), n.set(Bt, r.join('&'), !0);
+    }
+    function bt(t) {
+        var e = At(t, Kt);
+        !e && t.get(zt) && (e = 'beacon');
+        var n = At(t, Rn), r = At(t, In), a = n || (r ? r + '/3' : M(!1) + '/collect');
+        switch (At(t, Pn)) {
+        case 'd':
+            a = n || (r ? r + '/32' : M(!1) + '/j/collect'), e = t.get($n) || void 0, G(a, At(t, Bt), e, t.Z(Ht));
+            break;
+        case 'b':
+            a = n || (r ? r + '/31' : M(!1) + '/r/collect');
+        default:
+            e ? (n = At(t, Bt), r = (r = t.Z(Ht)) || m, 'image' == e ? gt(a, n, r) : 'xhr' == e && ht(a, n, r) || 'beacon' == e && dt(a, n, r) || D(a, n, r)) : D(a, At(t, Bt), t.Z(Ht));
+        }
+        a = At(t, ln), e = (a = V(a)).hitcount, a.hitcount = e ? e + 1 : 1, a = At(t, ln), delete V(a).pending_experiments, t.set(Ht, m, !0);
+    }
+    function yt(t) {
+        q().expId && t.set(je, q().expId), q().expVar && t.set(Ae, q().expVar);
+        var e = At(t, ln);
+        if (e = V(e).pending_experiments) {
+            var n = [];
+            for (r in e)
+                e.hasOwnProperty(r) && e[r] && n.push(encodeURIComponent(r) + '.' + encodeURIComponent(e[r]));
+            var r = n.join('!');
+        } else
+            r = void 0;
+        r && t.set(Ne, r, !0);
+    }
+    function kt() {
+        if (W.navigator && 'preview' == W.navigator.loadPurpose)
+            throw 'abort';
+    }
+    function Ot(t) {
+        var e = W.gaDevIds;
+        T(e) && 0 != e.length && t.set('&did', e.join(','), !0);
+    }
+    function xt(t) {
+        if (!t.get(ln))
+            throw 'abort';
+    }
+    F.prototype.add = function (t) {
+        this.M.push(t);
+    }, F.prototype.D = function (t) {
+        try {
+            for (var e = 0; e < this.M.length; e++) {
+                var n = t.get(this.M[e]);
+                n && h(n) && n.call(W, t);
+            }
+        } catch (t) {
+        }
+        (e = t.get(Ht)) != m && h(e) && (t.set(Ht, m, !0), setTimeout(e, 10));
+    };
+    function St() {
+        try {
+            var t = new Uint32Array(1);
+            return W.crypto.getRandomValues(t), 2147483647 & t[0];
+        } catch (t) {
+            return Tt();
+        }
+    }
+    var Tt = function () {
+        return Math.round(2147483647 * Math.random());
+    };
+    function Ct(t) {
+        var e = Nt(t, Le);
+        500 <= e && f(15);
+        var n = At(t, Ft);
+        if ('transaction' != n && 'item' != n) {
+            n = Nt(t, Pe);
+            var r = new Date().getTime(), a = Nt(t, $e);
+            if (0 == a && t.set($e, r), 0 < (a = Math.round(2 * (r - a) / 1000)) && (n = Math.min(n + a, 20), t.set($e, r)), n <= 0)
+                throw 'abort';
+            t.set(Pe, --n);
+        }
+        t.set(Le, ++e);
+    }
+    function jt() {
+        this.data = new x();
+    }
+    jt.prototype.get = function (t) {
+        var e = Ut(t), n = this.data.get(t);
+        return e && null == n && (n = h(e.defaultValue) ? e.defaultValue() : e.defaultValue), e && e.Z ? e.Z(this, t, n) : n;
+    };
+    function At(t, e) {
+        return null == (t = t.get(e)) ? '' : '' + t;
+    }
+    function Nt(t, e) {
+        return null == (t = t.get(e)) || '' === t ? 0 : Number(t);
+    }
+    jt.prototype.Z = function (t) {
+        return (t = this.get(t)) && h(t) ? t : m;
+    }, jt.prototype.set = function (t, e, n) {
+        if (t)
+            if ('object' == (void 0 === t ? 'undefined' : _typeof(t)))
+                for (var r in t)
+                    t.hasOwnProperty(r) && $t(this, r, t[r], n);
+            else
+                $t(this, t, e, n);
+    };
+    function Et(t, e, n, r, a) {
+        this.name = t, this.F = e, this.Z = r, this.o = a, this.defaultValue = n;
+    }
+    function It(t, e, n, r, a) {
+        return t = new Et(t, e, n, r, a), Pt.set(t.name, t), t.name;
+    }
+    function Rt(t, e) {
+        Mt.push([new RegExp("^"+t+"$"),e]);
+    }
+    function Lt(t, e, n) {
+        return It(t, e, n, void 0, Dt);
+    }
+    var $t = function (t, e, n, r) {
+            if (null != n)
+                switch (e) {
+                case ln:
+                    $r.test(n);
+                }
+            var a = Ut(e);
+            a && a.o ? a.o(t, e, n, r) : t.data.set(e, n, r);
+        }, Pt = new x(), Mt = [], Ut = function (t) {
+            var e = Pt.get(t);
+            if (!e)
+                for (var n = 0; n < Mt.length; n++) {
+                    var r = Mt[n], a = r[0].exec(t);
+                    if (a) {
+                        e = r[1](a), Pt.set(e.name, e);
+                        break;
+                    }
+                }
+            return e;
+        }, Dt = function () {
+        }, Gt = Lt('apiVersion', 'v'), qt = Lt('clientVersion', '_v');
+    It('anonymizeIp', 'aip');
+    var Vt = It('adSenseId', 'a'), Ft = It('hitType', 't'), Ht = It('hitCallback'), Bt = It('hitPayload');
+    It('nonInteraction', 'ni'), It('currencyCode', 'cu'), It('dataSource', 'ds');
+    var zt = It('useBeacon', void 0, !1), Kt = It('transport');
+    It('sessionControl', 'sc', ''), It('sessionGroup', 'sg'), It('queueTime', 'qt');
+    var Xt = It('_s', '_s');
+    It('screenName', 'cd');
+    var Wt = It('location', 'dl', ''), Zt = It('referrer', 'dr'), Yt = It('page', 'dp', '');
+    It('hostname', 'dh');
+    var Jt = It('language', 'ul'), Qt = It('encoding', 'de');
+    It('title', 'dt', function () {
+        return Z.title || void 0;
+    }), Rt('contentGroup([0-9]+)', function (t) {
+        return new Et(t[0], 'cg' + t[1]);
+    });
+    var te = It('screenColors', 'sd'), ee = It('screenResolution', 'sr'), ne = It('viewportSize', 'vp'), re = It('javaEnabled', 'je'), ae = It('flashVersion', 'fl');
+    It('campaignId', 'ci'), It('campaignName', 'cn'), It('campaignSource', 'cs'), It('campaignMedium', 'cm'), It('campaignKeyword', 'ck'), It('campaignContent', 'cc');
+    var oe = It('eventCategory', 'ec'), ie = It('eventAction', 'ea'), se = It('eventLabel', 'el'), ce = It('eventValue', 'ev'), le = It('socialNetwork', 'sn'), ue = It('socialAction', 'sa'), fe = It('socialTarget', 'st'), ge = It('l1', 'plt'), he = It('l2', 'pdt'), de = It('l3', 'dns'), pe = It('l4', 'rrt'), ve = It('l5', 'srt'), me = It('l6', 'tcp'), we = It('l7', 'dit'), _e = It('l8', 'clt'), be = It('l9', '_gst'), ye = It('l10', '_gbt'), ke = It('l11', '_cst'), Oe = It('l12', '_cbt'), xe = It('timingCategory', 'utc'), Se = It('timingVar', 'utv'), Te = It('timingLabel', 'utl'), Ce = It('timingValue', 'utt');
+    It('appName', 'an'), It('appVersion', 'av', ''), It('appId', 'aid', ''), It('appInstallerId', 'aiid', ''), It('exDescription', 'exd'), It('exFatal', 'exf');
+    var je = It('expId', 'xid'), Ae = It('expVar', 'xvar'), Ne = It('exp', 'exp'), Ee = It('_utma', '_utma'), Ie = It('_utmz', '_utmz'), Re = It('_utmht', '_utmht'), Le = It('_hc', void 0, 0), $e = It('_ti', void 0, 0), Pe = It('_to', void 0, 20);
+    Rt('dimension([0-9]+)', function (t) {
+        return new Et(t[0], 'cd' + t[1]);
+    }), Rt('metric([0-9]+)', function (t) {
+        return new Et(t[0], 'cm' + t[1]);
+    }), It('linkerParam', void 0, void 0, function (t) {
+        if (t.get(Me))
+            return f(35), lr.generate(_r(t));
+        var e = At(t, an), n = At(t, xn) || '';
+        return e = '_ga=2.' + w(hr(n + e, 0) + '.' + n + '-' + e), t = (t = br(t)) ? (f(44), '&_gac=1.' + w([hr(t.qa,0),t.timestamp,t.qa].join('.'))) : '', e + t;
+    }, Dt);
+    var Me = Lt('_cd2l', void 0, !1), Ue = It('usage', '_u'), De = It('_um');
+    It('forceSSL', void 0, void 0, function () {
+        return s;
+    }, function (t, e, n) {
+        f(34), s = !!n;
+    });
+    var Ge = It('_j1', 'jid'), qe = It('_j2', 'gjid');
+    Rt('\\&(.*)', function (t) {
+        var n, r, e = new Et(t[0], t[1]), a = (n = t[0].substring(1), Pt.map(function (t, e) {
+                e.F == n && (r = e);
+            }), r && r.name);
+        return a && (e.Z = function (t) {
+            return t.get(a);
+        }, e.o = function (t, e, n, r) {
+            t.set(a, n, r);
+        }, e.F = void 0), e;
+    });
+    var Ve = Lt('_oot'), Fe = It('previewTask'), He = It('checkProtocolTask'), Be = It('validationTask'), ze = It('checkStorageTask'), Ke = It('historyImportTask'), Xe = It('samplerTask'), We = It('_rlt'), Ze = It('buildHitTask'), Ye = It('sendHitTask'), Je = It('ceTask'), Qe = It('devIdTask'), tn = It('timingTask'), en = It('displayFeaturesTask'), nn = It('customTask'), rn = Lt('name'), an = Lt('clientId', 'cid'), on = Lt('clientIdTime'), sn = Lt('storedClientId'), cn = It('userId', 'uid'), ln = Lt('trackingId', 'tid'), un = Lt('cookieName', void 0, '_ga'), fn = Lt('cookieDomain'), gn = Lt('cookiePath', void 0, '/'), hn = Lt('cookieExpires', void 0, 63072000), dn = Lt('cookieUpdate', void 0, !0), pn = Lt('cookieFlags', void 0, ''), vn = Lt('legacyCookieDomain'), mn = Lt('legacyHistoryImport', void 0, !0), wn = Lt('storage', void 0, 'cookie'), _n = Lt('allowLinker', void 0, !1), bn = Lt('allowAnchor', void 0, !0), yn = Lt('sampleRate', 'sf', 100), kn = Lt('siteSpeedSampleRate', void 0, 1), On = Lt('alwaysSendReferrer', void 0, !1), xn = Lt('_gid', '_gid'), Sn = Lt('_gcn'), Tn = Lt('useAmpClientId'), Cn = Lt('_gclid'), jn = Lt('_gt'), An = Lt('_ge', void 0, 7776000000), Nn = Lt('_gclsrc'), En = Lt('storeGac', void 0, !0), In = It('_x_19'), Rn = It('transportUrl'), Ln = It('_r', '_r'), $n = It('_dp'), Pn = It('_jt', void 0, 'n'), Mn = It('allowAdFeatures', void 0, !0), Un = It('allowAdPersonalizationSignals', void 0, !0);
+    function Dn(e, t, n, r) {
+        t[e] = function () {
+            try {
+                return r && f(r), n.apply(this, arguments);
+            } catch (t) {
+                throw pt('exc', e, t && t.name), t;
+            }
+        };
+    }
+    function Gn() {
+        this.V = 100, this.$ = this.fa = !1, this.oa = 'detourexp', this.groups = 1;
+    }
+    function qn(o) {
+        return function (t) {
+            if ('pageview' == t.get(Ft) && !o.I) {
+                o.I = !0;
+                var e = (r = t, a = Math.min(Nt(r, kn), 100), !(i(At(r, an)) % 100 >= a)), n = 0 < N(At(t, Wt), 'gclid').length;
+                (e || n) && function t(e) {
+                    var n = {};
+                    if (Bn(n) || zn(n)) {
+                        var r = n[ge];
+                        null == r || 1 / 0 == r || isNaN(r) || (0 < r ? (Kn(n, de), Kn(n, me), Kn(n, ve), Kn(n, he), Kn(n, pe), Kn(n, we), Kn(n, _e), Kn(n, be), Kn(n, ye), Kn(n, ke), Kn(n, Oe), E(function () {
+                            e(n);
+                        }, 10)) : _(W, 'load', function () {
+                            t(e);
+                        }, !1));
+                    }
+                }(function (t) {
+                    e && o.send('timing', t), n && o.send('adtiming', t);
+                });
+            }
+            var r, a;
+        };
+    }
+    function Vn(t) {
+        if ('cookie' == At(t, wn)) {
+            if (t.get(dn) || At(t, sn) != At(t, an)) {
+                var e = 1000 * Nt(t, hn);
+                Wn(t, an, un, e);
+            }
+            if (!t.get(dn) && Zn(t) == At(t, xn) || Wn(t, xn, Sn, 86400000), t.get(En)) {
+                var n = At(t, Cn);
+                if (n) {
+                    var r = Math.min(Nt(t, An), 1000 * Nt(t, hn));
+                    r = Math.min(r, 1000 * Nt(t, jn) + r - new Date().getTime()), t.data.set(An, r), e = {};
+                    var a = At(t, jn), o = At(t, Nn), i = rr(At(t, gn)), s = er(At(t, fn)), c = At(t, ln);
+                    t = At(t, pn), o && 'aw.ds' != o ? e && (e.ua = !0) : (n = ["1",a,$(n)].join('.'), 0 < r && (e && (e.ta = !0), L('_gac_' + $(c), n, i, s, c, r, t))), or(e);
+                }
+            } else
+                f(75);
+        }
+    }
+    function Fn(t) {
+        if ('cookie' == At(t, wn) && !Xn && (Vn(t), !Xn))
+            throw 'abort';
+    }
+    function Hn(t) {
+        if (t.get(mn)) {
+            var e = At(t, fn), n = At(t, vn) || y(), r = ir('__utma', n, e);
+            r && (f(19), t.set(Re, new Date().getTime(), !0), t.set(Ee, r.R), (e = ir('__utmz', n, e)) && r.hash == e.hash && t.set(Ie, e.R));
+        }
+    }
+    var Bn = function (t) {
+            var e = W.performance || W.webkitPerformance;
+            if (!(e = e && e.timing))
+                return !1;
+            var n = e.navigationStart;
+            return 0 != n && (t[ge] = e.loadEventStart - n, t[de] = e.domainLookupEnd - e.domainLookupStart, t[me] = e.connectEnd - e.connectStart, t[ve] = e.responseStart - e.requestStart, t[he] = e.responseEnd - e.responseStart, t[pe] = e.fetchStart - n, t[we] = e.domInteractive - n, t[_e] = e.domContentLoadedEventStart - n, t[be] = ea.L - n, t[ye] = ea.ya - n, W.google_tag_manager && W.google_tag_manager._li && (e = W.google_tag_manager._li, t[ke] = e.cst, t[Oe] = e.cbt), !0);
+        }, zn = function (t) {
+            if (W.top != W)
+                return !1;
+            var e = W.external, n = e && e.onloadT;
+            return e && !e.isValidLoadTime && (n = void 0), 2147483648 < n && (n = void 0), 0 < n && e.setPageReadyTime(), null != n && (t[ge] = n, !0);
+        }, Kn = function (t, e) {
+            var n = t[e];
+            (isNaN(n) || 1 / 0 == n || n < 0) && (t[e] = void 0);
+        }, Xn = !1, Wn = function (t, e, n, r) {
+            var a = Yn(t, e);
+            if (a) {
+                n = At(t, n);
+                var o = rr(At(t, gn)), i = er(At(t, fn)), s = At(t, pn), c = At(t, ln);
+                if ('auto' != i)
+                    L(n, a, o, i, c, r, s) && (Xn = !0);
+                else {
+                    f(32);
+                    for (var l = nr(), u = 0; u < l.length; u++)
+                        if (i = l[u], t.data.set(fn, i), a = Yn(t, e), L(n, a, o, i, c, r, s))
+                            return void (Xn = !0);
+                    t.data.set(fn, 'auto');
+                }
+            }
+        }, Zn = function (t) {
+            var e = R(At(t, Sn));
+            return Jn(t, e);
+        }, Yn = function (t, e) {
+            e = $(At(t, e));
+            var n = er(At(t, fn)).split('.').length;
+            return 1 < (t = ar(At(t, gn))) && (n += '-' + t), e ? ["GA1",n,e].join('.') : '';
+        }, Jn = function (t, e) {
+            return Qn(e, At(t, fn), At(t, gn));
+        }, Qn = function (t, e, n) {
+            if (!t || t.length < 1)
+                f(12);
+            else {
+                for (var r = [], a = 0; a < t.length; a++) {
+                    var o = t[a], i = o.split('.'), s = i.shift();
+                    (i = ('GA1' == s || '1' == s) && 1 < i.length ? (1 == (o = i.shift().split('-')).length && (o[1] = '1'), o[0] *= 1, o[1] *= 1, {
+                        H: o,
+                        s: i.join('.')
+                    }) : l.test(o) ? {
+                        H: [0,0],
+                        s: o
+                    } : void 0) && r.push(i);
+                }
+                if (1 == r.length)
+                    return f(13), r[0].s;
+                if (0 != r.length)
+                    return f(14), 1 == (r = tr(r, er(e).split('.').length, 0)).length ? r[0].s : (1 < (r = tr(r, ar(n), 1)).length && f(41), r[0] && r[0].s);
+                f(12);
+            }
+        }, tr = function (t, e, n) {
+            for (var r, a = [], o = [], i = 0; i < t.length; i++) {
+                var s = t[i];
+                s.H[n] == e ? a.push(s) : null == r || s.H[n] < r ? (o = [s], r = s.H[n]) : s.H[n] == r && o.push(s);
+            }
+            return 0 < a.length ? a : o;
+        }, er = function (t) {
+            return 0 == t.indexOf('.') ? t.substr(1) : t;
+        }, nr = function () {
+            var t = [], e = y().split('.');
+            if (4 == e.length) {
+                var n = e[e.length - 1];
+                if (parseInt(n, 10) == n)
+                    return ["none"];
+            }
+            for (n = e.length - 2; 0 <= n; n--)
+                t.push(e.slice(n).join('.'));
+            return e = Z.location.hostname, tt.test(e) || Q.test(e) || t.push('none'), t;
+        }, rr = function (t) {
+            return t ? (1 < t.length && t.lastIndexOf('/') == t.length - 1 && (t = t.substr(0, t.length - 1)), 0 != t.indexOf('/') && (t = '/' + t), t) : '/';
+        }, ar = function (t) {
+            return '/' == (t = rr(t)) ? 1 : t.split('/').length;
+        }, or = function (t) {
+            t.ta && f(77), t.na && f(74), t.pa && f(73), t.ua && f(69);
+        };
+    function ir(t, e, n) {
+        'none' == e && (e = '');
+        var r = [], a = R(t);
+        t = '__utma' == t ? 6 : 2;
+        for (var o = 0; o < a.length; o++) {
+            var i = ('' + a[o]).split('.');
+            i.length >= t && r.push({
+                hash: i[0],
+                R: a[o],
+                O: i
+            });
+        }
+        if (0 != r.length)
+            return 1 != r.length && (sr(e, r) || sr(n, r) || sr(null, r)) || r[0];
+    }
+    function sr(t, e) {
+        if (null == t)
+            var n = t = 1;
+        else
+            n = i(t), t = i(C(t, '.') ? t.substring(1) : '.' + t);
+        for (var r = 0; r < e.length; r++)
+            if (e[r].hash == n || e[r].hash == t)
+                return e[r];
+    }
+    var cr = new RegExp(/^https?:\/\/([^\/:]+)/), lr = W.google_tag_data.glBridge, ur = /(.*)([?&#])(?:_ga=[^&#]*)(?:&?)(.*)/, fr = /(.*)([?&#])(?:_gac=[^&#]*)(?:&?)(.*)/;
+    function gr(t, e) {
+        var n = new Date(), r = W.navigator, a = r.plugins || [];
+        for (t = [t,r.userAgent,n.getTimezoneOffset(),n.getYear(),n.getDate(),n.getHours(),n.getMinutes()+e], e = 0; e < a.length; ++e)
+            t.push(a[e].description);
+        return i(t.join('.'));
+    }
+    function hr(t, e) {
+        var n = new Date(), r = W.navigator, a = n.getHours() + Math.floor((n.getMinutes() + e) / 60);
+        return i([t,r.userAgent,r.language||"",n.getTimezoneOffset(),n.getYear(),n.getDate()+Math.floor(a/24),(24+a)%24,(60+n.getMinutes()+e)%60].join('.'));
+    }
+    function dr(t) {
+        f(48), this.target = t, this.T = !1;
+    }
+    dr.prototype.ca = function (t, e) {
+        if (t) {
+            if (this.target.get(Me))
+                return lr.decorate(_r(this.target), t, e);
+            if (t.tagName) {
+                if ('a' == t.tagName.toLowerCase())
+                    return void (t.href && (t.href = pr(this, t.href, e)));
+                if ('form' == t.tagName.toLowerCase())
+                    return vr(this, t);
+            }
+            if ('string' == typeof t)
+                return pr(this, t, e);
+        }
+    };
+    var pr = function (t, e, n) {
+            var r = ur.exec(e);
+            r && 3 <= r.length && (e = r[1] + (r[3] ? r[2] + r[3] : '')), (r = fr.exec(e)) && 3 <= r.length && (e = r[1] + (r[3] ? r[2] + r[3] : '')), t = t.target.get('linkerParam');
+            var a = e.indexOf('?');
+            return r = e.indexOf('#'), n ? e += (-1 == r ? '#' : '&') + t : (n = -1 == a ? '?' : '&', e = -1 == r ? e + (n + t) : e.substring(0, r) + n + t + e.substring(r)), (e = e.replace(/&+_ga=/, '&_ga=')).replace(/&+_gac=/, '&_gac=');
+        }, vr = function (t, e) {
+            if (e && e.action)
+                if ('get' == e.method.toLowerCase()) {
+                    t = t.target.get('linkerParam').split('&');
+                    for (var n = 0; n < t.length; n++) {
+                        var r = t[n].split('='), a = r[1];
+                        r = r[0];
+                        for (var o = e.childNodes || [], i = !1, s = 0; s < o.length; s++)
+                            if (o[s].name == r) {
+                                o[s].setAttribute('value', a), i = !0;
+                                break;
+                            }
+                        i || ((o = Z.createElement('input')).setAttribute('type', 'hidden'), o.setAttribute('name', r), o.setAttribute('value', a), e.appendChild(o));
+                    }
+                } else
+                    'post' == e.method.toLowerCase() && (e.action = pr(t, e.action));
+        };
+    function mr(t, e) {
+        if (e != Z.location.hostname)
+            for (var n = 0; n < t.length; n++)
+                if (t[n] instanceof RegExp) {
+                    if (t[n].test(e))
+                        return 1;
+                } else if (0 <= e.indexOf(t[n]))
+                    return 1;
+    }
+    function wr(t, e) {
+        return e != gr(t, 0) && e != gr(t, -1) && e != gr(t, -2) && e != hr(t, 0) && e != hr(t, -1) && e != hr(t, -2);
+    }
+    function _r(t) {
+        var e = br(t);
+        return {
+            _ga: t.get(an),
+            _gid: t.get(xn) || void 0,
+            _gac: e ? [e.qa,e.timestamp].join('.') : void 0
+        };
+    }
+    function br(t) {
+        function e(t) {
+            return null == t || '' === t ? 0 : Number(t);
+        }
+        var n = t.get(Cn);
+        if (n && t.get(En)) {
+            var r = e(t.get(jn));
+            if (!(1000 * r + e(t.get(An)) <= new Date().getTime()))
+                return {
+                    timestamp: r,
+                    qa: n
+                };
+            f(76);
+        }
+    }
+    dr.prototype.S = function (r, a, t) {
+        function e(t) {
+            try {
+                t = t || W.event;
+                t: {
+                    var e = t.target || t.srcElement;
+                    for (t = 100; e && 0 < t;) {
+                        if (e.href && e.nodeName.match(/^a(?:rea)?$/i)) {
+                            var n = e;
+                            break t;
+                        }
+                        e = e.parentNode, t--;
+                    }
+                    n = {};
+                }
+                ('http:' == n.protocol || 'https:' == n.protocol) && mr(r, n.hostname || '') && n.href && (n.href = pr(o, n.href, a));
+            } catch (t) {
+                f(26);
+            }
+        }
+        var o = this;
+        this.target.get(Me) ? lr.auto(function () {
+            return _r(o.target);
+        }, r, a ? 'fragment' : '', t) : (this.T || (this.T = !0, _(Z, 'mousedown', e, !1), _(Z, 'keyup', e, !1)), t && _(Z, 'submit', function (t) {
+            if ((t = (t = t || W.event).target || t.srcElement) && t.action) {
+                var e = t.action.match(cr);
+                e && mr(r, e[1]) && vr(o, t);
+            }
+        }));
+    };
+    function yr(t, e, n) {
+        this.aa = e, (e = n) || (e = (e = At(t, rn)) && 't0' != e ? Lr.test(e) ? '_gat_' + $(At(t, ln)) : '_gat_' + $(e) : '_gat'), this.Y = e, this.ra = null;
+    }
+    function kr(t, e) {
+        if (!(t = t.b).get('dcLoaded')) {
+            var n, r = new a(S(t));
+            r.set(29), t.set(De, r.w), (e = e || {})[un] && (n = $(e[un])), function (r, t) {
+                var n = t.get(Ze);
+                t.set(Ze, function (t) {
+                    Ar(r, t, Ge), Ar(r, t, qe);
+                    var e = n(t);
+                    return Nr(r, t), e;
+                });
+                var a = t.get(Ye);
+                t.set(Ye, function (t) {
+                    var e = a(t);
+                    if (Er(t)) {
+                        if (P() !== Rr(r, t)) {
+                            f(80);
+                            var n = {
+                                U: Ir(r, t, 1),
+                                google: Ir(r, t, 2),
+                                count: 0
+                            };
+                            G('https://stats.g.doubleclick.net/j/collect', n.U, n);
+                        } else
+                            v(Ir(r, t, 0));
+                        t.set(Ge, '', !0);
+                    }
+                    return e;
+                });
+            }(e = new yr(t, 'https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&', n), t), t.set('dcLoaded', !0);
+        }
+    }
+    function Or(t) {
+        if (!t.get('dcLoaded') && 'cookie' == t.get(wn)) {
+            var e = new yr(t);
+            if (Ar(e, t, Ge), Ar(e, t, qe), Nr(e, t), Er(t)) {
+                var n = P() !== Rr(e, t);
+                t.set(Ln, 1, !0), n ? (f(79), t.set(Pn, 'd', !0), t.set($n, {
+                    U: Ir(e, t, 1),
+                    google: Ir(e, t, 2),
+                    count: 0
+                }, !0)) : t.set(Pn, 'b', !0);
+            }
+        }
+    }
+    function xr(t) {
+        function n(t, e) {
+            o.b.data.set(t, e);
+        }
+        function e(t, e) {
+            n(t, e), o.filters.add(t);
+        }
+        var r, a, o = this;
+        this.b = new jt(), this.filters = new F(), n(rn, t[rn]), n(ln, (r = t[ln]) ? r.replace(/^[\s\xa0]+|[\s\xa0]+$/g, '') : ''), n(un, t[un]), n(fn, t[fn] || y()), n(gn, t[gn]), n(hn, t[hn]), n(dn, t[dn]), n(pn, t[pn]), n(vn, t[vn]), n(mn, t[mn]), n(_n, t[_n]), n(bn, t[bn]), n(yn, t[yn]), n(kn, t[kn]), n(On, t[On]), n(wn, t[wn]), n(cn, t[cn]), n(on, t[on]), n(Tn, t[Tn]), n(En, t[En]), n(Me, t[Me]), n(In, t[In]), n(Gt, 1), n(qt, 'j81'), e(Ve, mt), e(nn, m), e(Fe, kt), e(He, wt), e(Be, xt), e(ze, Fn), e(Ke, Hn), e(Xe, vt), e(We, Ct), e(Je, yt), e(Qe, Ot), e(en, Or), e(Ze, _t), e(Ye, bt), e(tn, qn(this)), Mr(this.b), Pr(this.b, t[an]), this.b.set(Vt, (a = W.gaGlobal = W.gaGlobal || {}).hid = a.hid || Tt());
+    }
+    var Sr = /^(GTM|OPT)-[A-Z0-9]+$/, Tr = /;_gaexp=[^;]*/g, Cr = /;((__utma=)|([^;=]+=GAX?\d+\.))[^;]*/g, jr = /^https?:\/\/[\w\-.]+\.google.com(:\d+)?\/optimize\/opt-launch\.html\?.*$/, Ar = function (t, e, n) {
+            !1 === e.get(Mn) || e.get(n) || ('1' == R(t.Y)[0] ? e.set(n, '', !0) : e.set(n, '' + Tt(), !0));
+        }, Nr = function (t, e) {
+            Er(e) && L(t.Y, '1', At(e, gn), At(e, fn), At(e, ln), 60000, At(e, pn));
+        }, Er = function (t) {
+            return !!t.get(Ge) && !1 !== t.get(Mn);
+        }, Ir = function (t, e, n) {
+            function r(t) {
+                Ut(t).F && a.set(Ut(t).F, e.get(t));
+            }
+            var a = new x();
+            r(Gt), r(qt), r(ln), r(an), r(Ge), 0 != n && 1 != n || (r(cn), r(qe), r(xn)), a.set(Ut(Ue).F, g(e));
+            var o = '';
+            return a.map(function (t, e) {
+                o += w(t) + '=', o += w('' + e) + '&';
+            }), o += 'z=' + Tt(), 0 == n ? o = t.aa + o : 1 == n ? o = 't=dc&aip=1&_r=3&' + o : 2 == n && (o = 't=sr&aip=1&_r=4&slf_rd=1&' + o), o;
+        }, Rr = function (t, e) {
+            return null === t.ra && (t.ra = 1 === function (t) {
+                var e, n = new Gn();
+                if (n.fa && n.$)
+                    return 0;
+                if (n.$ = !0, t) {
+                    if (n.oa && void 0 !== t.get(n.oa))
+                        return Nt(t, n.oa);
+                    if (0 == t.get(kn))
+                        return 0;
+                }
+                return 0 == n.V ? 0 : (void 0 === e && (e = St()), 0 == e % n.V ? Math.floor(e / n.V) % n.groups + 1 : 0);
+            }(e), t.ra && f(33)), t.ra;
+        }, Lr = /^gtm\d+$/, $r = /^(UA|YT|MO|GP)-(\d+)-(\d+)$/, Pr = function (t, e) {
+            var n = At(t, un);
+            if (t.data.set(Sn, '_ga' == n ? '_gid' : n + '_gid'), 'cookie' == At(t, wn)) {
+                if (Xn = !1, n = R(At(t, un)), !(n = Jn(t, n))) {
+                    n = At(t, fn);
+                    var r = At(t, vn) || y();
+                    n = null != (n = ir('__utma', r, n)) ? (f(10), n.O[1] + '.' + n.O[2]) : void 0;
+                }
+                if (n && (Xn = !0), r = n && !t.get(dn))
+                    if (2 != (r = n.split('.')).length)
+                        r = !1;
+                    else if (r = Number(r[1])) {
+                        var a = Nt(t, hn);
+                        r = r + a < new Date().getTime() / 1000;
+                    } else
+                        r = !1;
+                if (r && (n = void 0), n && (t.data.set(sn, n), t.data.set(an, n), (n = Zn(t)) && t.data.set(xn, n)), t.get(En) && (n = t.get(Cn), r = t.get(Nn), !n || r && 'aw.ds' != r)) {
+                    if (n = {}, Z) {
+                        r = [], a = Z.cookie.split(';');
+                        for (var o = /^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/, i = 0; i < a.length; i++) {
+                            var s = a[i].match(o);
+                            s && r.push({
+                                ja: s[1],
+                                value: s[2]
+                            });
+                        }
+                        if (a = {}, r && r.length)
+                            for (o = 0; o < r.length; o++)
+                                '1' != (i = r[o].value.split('.'))[0] || 3 != i.length ? n && (n.na = !0) : i[1] && (a[r[o].ja] ? n && (n.pa = !0) : a[r[o].ja] = [], a[r[o].ja].push({
+                                    timestamp: i[1],
+                                    qa: i[2]
+                                }));
+                        r = a;
+                    } else
+                        r = {};
+                    r = r[At(t, ln)], or(n), r && 0 != r.length && (n = r[0], t.data.set(jn, n.timestamp), t.data.set(Cn, n.qa));
+                }
+            }
+            if (t.get(dn) && (n = b('_ga', !!t.get(bn)), o = b('_gl', !!t.get(bn)), a = (r = lr.get(t.get(bn)))._ga, o && 0 < o.indexOf('_ga*') && !a && f(30), o = r.gclid, i = r._gac, n || a || o || i))
+                if (n && a && f(36), t.get(_n) || ft(t.get(Tn))) {
+                    if (a && (f(38), t.data.set(an, a), r._gid && (f(51), t.data.set(xn, r._gid))), o ? (f(82), t.data.set(Cn, o), r.gclsrc && t.data.set(Nn, r.gclsrc)) : i && (r = i.split('.')) && 2 === r.length && (f(37), t.data.set(Cn, r[0]), t.data.set(jn, r[1])), n)
+                        t:
+                            if (r = n.indexOf('.'), -1 == r)
+                                f(22);
+                            else {
+                                if (a = n.substring(0, r), r = (o = n.substring(r + 1)).indexOf('.'), n = o.substring(0, r), o = o.substring(r + 1), '1' == a) {
+                                    if (wr(r = o, n)) {
+                                        f(23);
+                                        break t;
+                                    }
+                                } else {
+                                    if ('2' != a) {
+                                        f(22);
+                                        break t;
+                                    }
+                                    if (a = '', r = 0 < (r = o.indexOf('-')) ? (a = o.substring(0, r), o.substring(r + 1)) : o.substring(1), wr(a + r, n)) {
+                                        f(53);
+                                        break t;
+                                    }
+                                    a && (f(2), t.data.set(xn, a));
+                                }
+                                f(11), t.data.set(an, r), (n = b('_gac', !!t.get(bn))) && ('1' != (n = n.split('.'))[0] || 4 != n.length ? f(72) : wr(n[3], n[1]) ? f(71) : (t.data.set(Cn, n[3]), t.data.set(jn, n[2]), f(70)));
+                            }
+                } else
+                    f(21);
+            e && (f(9), t.data.set(an, w(e))), t.get(an) || ((e = (e = W.gaGlobal && W.gaGlobal.vid) && -1 != e.search(c) ? e : void 0) ? (f(17), t.data.set(an, e)) : (f(8), t.data.set(an, p()))), t.get(xn) || (f(3), t.data.set(xn, p())), Vn(t);
+        }, Mr = function (t) {
+            var e = W.navigator, n = W.screen, r = Z.location;
+            if (t.set(Zt, function (t, e) {
+                    var n = Z.referrer;
+                    if (/^(https?|android-app):\/\//i.test(n)) {
+                        if (t)
+                            return n;
+                        if (t = '//' + Z.location.hostname, !k(n, t))
+                            return e && (e = t.replace(/\./g, '-') + '.cdn.ampproject.org', k(n, e)) ? void 0 : n;
+                    }
+                }(!!t.get(On), !!t.get(Tn))), r) {
+                var a = r.pathname || '';
+                '/' != a.charAt(0) && (f(31), a = '/' + a), t.set(Wt, r.protocol + '//' + r.hostname + a + r.search);
+            }
+            n && t.set(ee, n.width + 'x' + n.height), n && t.set(te, n.colorDepth + '-bit'), n = Z.documentElement;
+            var o = (a = Z.body) && a.clientWidth && a.clientHeight, i = [];
+            if (n && n.clientWidth && n.clientHeight && ('CSS1Compat' === Z.compatMode || !o) ? i = [n.clientWidth,n.clientHeight] : o && (i = [a.clientWidth,a.clientHeight]), n = i[0] <= 0 || i[1] <= 0 ? '' : i.join('x'), t.set(ne, n), t.set(ae, function () {
+                    var t, e;
+                    if ((e = (e = W.navigator) ? e.plugins : null) && e.length)
+                        for (var n = 0; n < e.length && !t; n++) {
+                            var r = e[n];
+                            -1 < r.name.indexOf('Shockwave Flash') && (t = r.description);
+                        }
+                    if (!t)
+                        try {
+                            var a = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.7');
+                            t = a.GetVariable('$version');
+                        } catch (t) {
+                        }
+                    if (!t)
+                        try {
+                            a = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6'), t = 'WIN 6,0,21,0', a.AllowScriptAccess = 'always', t = a.GetVariable('$version');
+                        } catch (t) {
+                        }
+                    if (!t)
+                        try {
+                            t = (a = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')).GetVariable('$version');
+                        } catch (t) {
+                        }
+                    return t && (a = t.match(/[\d]+/g)) && 3 <= a.length && (t = a[0] + '.' + a[1] + ' r' + a[2]), t || void 0;
+                }()), t.set(Qt, Z.characterSet || Z.charset), t.set(re, e && 'function' == typeof e.javaEnabled && e.javaEnabled() || !1), t.set(Jt, (e && (e.language || e.browserLanguage) || '').toLowerCase()), t.data.set(Cn, b('gclid', !0)), t.data.set(Nn, b('gclsrc', !0)), t.data.set(jn, Math.round(new Date().getTime() / 1000)), r && t.get(bn) && (e = Z.location.hash)) {
+                for (e = e.split(/[?&#]+/), r = [], n = 0; n < e.length; ++n)
+                    (C(e[n], 'utm_id') || C(e[n], 'utm_campaign') || C(e[n], 'utm_source') || C(e[n], 'utm_medium') || C(e[n], 'utm_term') || C(e[n], 'utm_content') || C(e[n], 'gclid') || C(e[n], 'dclid') || C(e[n], 'gclsrc')) && r.push(e[n]);
+                0 < r.length && (e = '#' + r.join('&'), t.set(Wt, t.get(Wt) + e));
+            }
+        };
+    xr.prototype.get = function (t) {
+        return this.b.get(t);
+    }, xr.prototype.set = function (t, e) {
+        this.b.set(t, e);
+    };
+    var Ur = {
+        pageview: [Yt],
+        event: [oe,ie,se,ce],
+        social: [le,ue,fe],
+        timing: [xe,Se,Ce,Te]
+    };
+    xr.prototype.send = function (t) {
+        if (!(arguments.length < 1)) {
+            if ('string' == typeof t)
+                var e = t, n = [].slice.call(arguments, 1);
+            else
+                e = t && t[Ft], n = arguments;
+            e && ((n = O(Ur[e] || [], n))[Ft] = e, this.b.set(n, void 0, !0), this.filters.D(this.b), this.b.data.m = {});
+        }
+    }, xr.prototype.ma = function (t, e) {
+        var n = this;
+        Wr(t, n, e) || (Yr(t, function () {
+            Wr(t, n, e);
+        }), Zr(String(n.get(rn)), t, void 0, e, !0));
+    };
+    function Dr(t) {
+        return 'prerender' != Z.visibilityState && (t(), !0);
+    }
+    function Gr(r) {
+        if (!Dr(r)) {
+            f(16);
+            var a = !1;
+            _(Z, 'visibilitychange', function t() {
+                if (!a && Dr(r)) {
+                    a = !0;
+                    var e = t, n = Z;
+                    n.removeEventListener ? n.removeEventListener('visibilitychange', e, !1) : n.detachEvent && n.detachEvent('onvisibilitychange', e);
+                }
+            });
+        }
+    }
+    function qr(t) {
+        if (h(t[0]))
+            this.u = t[0];
+        else {
+            var e = zr.exec(t[0]);
+            if (null != e && 4 == e.length && (this.c = e[1] || 't0', this.K = e[2] || '', this.methodName = e[3], this.a = [].slice.call(t, 1), this.K || (this.A = 'create' == this.methodName, this.i = 'require' == this.methodName, this.g = 'provide' == this.methodName, this.ba = 'remove' == this.methodName), this.i && (3 <= this.a.length ? (this.X = this.a[1], this.W = this.a[2]) : this.a[1] && (d(this.a[1]) ? this.X = this.a[1] : this.W = this.a[1]))), e = t[1], t = t[2], !this.methodName)
+                throw 'abort';
+            if (this.i && (!d(e) || '' == e))
+                throw 'abort';
+            if (this.g && (!d(e) || '' == e || !h(t)))
+                throw 'abort';
+            if (Kr(this.c) || Kr(this.K))
+                throw 'abort';
+            if (this.g && 't0' != this.c)
+                throw 'abort';
+        }
+    }
+    var Vr, Fr, Hr, Br, zr = /^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/;
+    function Kr(t) {
+        return 0 <= t.indexOf('.') || 0 <= t.indexOf(':');
+    }
+    Vr = new x(), Hr = new x(), Br = new x(), Fr = {
+        ec: 45,
+        ecommerce: 46,
+        linkid: 47
+    };
+    function Xr(t, e) {
+        Vr.set(t, e), e = Br.get(t) || [];
+        for (var n = 0; n < e.length; n++)
+            e[n]();
+        Br.set(t, []);
+    }
+    var Wr = function (t, e, n) {
+            e == ea || e.get(rn);
+            var r = Vr.get(t);
+            return !!h(r) && (e.plugins_ = e.plugins_ || new x(), e.plugins_.get(t) || e.plugins_.set(t, new r(e, n || {})), !0);
+        }, Zr = function (t, e, n, r, a) {
+            if (!h(Vr.get(e)) && !Hr.get(e)) {
+                if (Fr.hasOwnProperty(e) && f(Fr[e]), t = ea.j(t), Sr.test(e)) {
+                    if (f(52), !t)
+                        return !0;
+                    r = {
+                        id: e,
+                        B: (n = r || {}).dataLayer || 'dataLayer',
+                        ia: !!t.get('anonymizeIp'),
+                        sync: a,
+                        G: !1
+                    }, t.get('&gtm') == e && (r.G = !0);
+                    var o = String(t.get('name'));
+                    't0' != o && (r.target = o), I(String(t.get('trackingId'))) || (r.clientId = String(t.get(an)), r.ka = Number(t.get(on)), n = n.palindrome ? Cr : Tr, n = (n = Z.cookie.replace(/^|(; +)/g, ';').match(n)) ? n.sort().join('').substring(1) : void 0, r.la = n, r.qa = N(t.b.get(Wt) || '', 'gclid')), n = r.B, o = new Date().getTime(), W[n] = W[n] || [], o = { 'gtm.start': o }, a || (o.event = 'gtm.js'), W[n].push(o), l = 'https://www.google-analytics.com/gtm/js?id=' + w((c = r).id), 'dataLayer' != c.B && s('l', c.B), s('t', c.target), s('cid', c.clientId), s('cidt', c.ka), s('gac', c.la), s('aip', c.ia), c.sync && s('m', 'sync'), s('cycle', c.G), c.qa && s('gclid', c.qa), jr.test(Z.referrer) && s('cb', String(Tt())), n = l;
+                }
+                if (!n && Fr.hasOwnProperty(e) ? (f(39), n = e + '.js') : f(43), n) {
+                    if (t) {
+                        var i = t.get(In);
+                        d(i) || (i = void 0);
+                    }
+                    n && 0 <= n.indexOf('/') || (n = (i ? i + '/34' : M(!1) + '/plugins/ua/') + n), t = (i = Qr(n)).protocol, r = Z.location.protocol, ('https:' == t || t == r || 'http:' == t && 'http:' == r) && Jr(i) && ((i = i.url) && (t = (t = Z.querySelector && Z.querySelector('script[nonce]') || null) && (t.nonce || t.getAttribute && t.getAttribute('nonce')) || '', a ? (a = '', t && A.test(t) && (a = ' nonce="' + t + '"'), j.test(i) && Z.write('<script' + a + ' src="' + i + '"></script>')) : ((a = Z.createElement('script')).type = 'text/javascript', a.async = !0, a.src = i, t && a.setAttribute('nonce', t), (i = Z.getElementsByTagName('script')[0]).parentNode.insertBefore(a, i))), Hr.set(e, !0));
+                }
+            }
+            function s(t, e) {
+                e && (l += '&' + t + '=' + w(e));
+            }
+            var c, l;
+        }, Yr = function (t, e) {
+            var n = Br.get(t) || [];
+            n.push(e), Br.set(t, n);
+        }, Jr = function (t) {
+            var e = Qr(Z.location.href);
+            return !!C(t.url, 'https://www.google-analytics.com/gtm/js?id=') || !(t.query || 0 <= t.url.indexOf('?') || 0 <= t.path.indexOf('://')) && (t.host == e.host && t.port == e.port || (e = 'http:' == t.protocol ? 80 : 443, !('www.google-analytics.com' != t.host || (t.port || e) != e || !C(t.path, '/plugins/'))));
+        }, Qr = function (t) {
+            function e(t) {
+                var e = t.hostname || '', n = 0 <= e.indexOf(']');
+                return e = e.split(n ? ']' : ':')[0].toLowerCase(), n && (e += ']'), n = (t.protocol || '').toLowerCase(), n = +t.port || ('http:' == n ? 80 : 'https:' == n ? 443 : ''), t = t.pathname || '', C(t, '/') || (t = '/' + t), [e,""+n,t];
+            }
+            var n = Z.createElement('a');
+            n.href = Z.location.href;
+            var r = (n.protocol || '').toLowerCase(), a = e(n), o = n.search || '', i = r + '//' + a[0] + (a[1] ? ':' + a[1] : '');
+            return C(t, '//') ? t = r + t : C(t, '/') ? t = i + t : !t || C(t, '?') ? t = i + a[2] + (t || o) : t.split('/')[0].indexOf(':') < 0 && (t = i + a[2].substring(0, a[2].lastIndexOf('/')) + '/' + t), n.href = t, r = e(n), {
+                protocol: (n.protocol || '').toLowerCase(),
+                host: r[0],
+                port: r[1],
+                path: r[2],
+                query: n.search || '',
+                url: t || ''
+            };
+        }, ta = {
+            ga: function () {
+                ta.f = [];
+            }
+        };
+    ta.ga(), ta.D = function (t) {
+        var e = ta.J.apply(ta, arguments);
+        for (e = ta.f.concat(e), ta.f = []; 0 < e.length && !ta.v(e[0]) && (e.shift(), !(0 < ta.f.length)););
+        ta.f = ta.f.concat(e);
+    }, ta.J = function (t) {
+        for (var e = [], n = 0; n < arguments.length; n++)
+            try {
+                var r = new qr(arguments[n]);
+                r.g ? Xr(r.a[0], r.a[1]) : (r.i && (r.ha = Zr(r.c, r.a[0], r.X, r.W)), e.push(r));
+            } catch (t) {
+            }
+        return e;
+    }, ta.v = function (t) {
+        try {
+            if (t.u)
+                t.u.call(W, ea.j('t0'));
+            else {
+                var e = t.c == o ? ea : ea.j(t.c);
+                if (t.A) {
+                    if ('t0' == t.c && null === (e = ea.create.apply(ea, t.a)))
+                        return !0;
+                } else if (t.ba)
+                    ea.remove(t.c);
+                else if (e)
+                    if (t.i) {
+                        if (t.ha && (t.ha = Zr(t.c, t.a[0], t.X, t.W)), !Wr(t.a[0], e, t.W))
+                            return !0;
+                    } else if (t.K) {
+                        var n = t.methodName, r = t.a, a = e.plugins_.get(t.K);
+                        a[n].apply(a, r);
+                    } else
+                        e[t.methodName].apply(e, t.a);
+            }
+        } catch (t) {
+        }
+    };
+    var ea = function (t) {
+        f(1), ta.D.apply(ta, [arguments]);
+    };
+    ea.h = {}, ea.P = [], ea.L = 0, ea.ya = 0, ea.answer = 42;
+    var na = [ln,fn,rn];
+    ea.create = function (t) {
+        var e = O(na, [].slice.call(arguments));
+        e[rn] || (e[rn] = 't0');
+        var n = '' + e[rn];
+        if (ea.h[n])
+            return ea.h[n];
+        if (function (t) {
+                if (ft(t[Tn])) {
+                    var e;
+                    if (void 0 === X)
+                        (e = (e = lr.get()) && e._ga || void 0) && (X = e, f(81));
+                    if (void 0 !== X)
+                        return t[an] || (t[an] = X), !1;
+                }
+                if (t[Tn]) {
+                    if (f(67), t[wn] && 'cookie' != t[wn])
+                        return !1;
+                    if (void 0 !== X)
+                        t[an] || (t[an] = X);
+                    else {
+                        t: {
+                            e = String(t[fn] || y());
+                            var n = String(t[gn] || '/'), r = R(String(t[un] || '_ga'));
+                            if (!(e = Qn(r, e, n)) || c.test(e))
+                                e = !0;
+                            else if (0 == (e = R('AMP_TOKEN')).length)
+                                e = !0;
+                            else {
+                                if (1 == e.length && ('$RETRIEVING' == (e = decodeURIComponent(e[0])) || '$OPT_OUT' == e || '$ERROR' == e || '$NOT_FOUND' == e)) {
+                                    e = !0;
+                                    break t;
+                                }
+                                e = !1;
+                            }
+                        }
+                        if (e && it(ot, String(t[ln])))
+                            return !0;
+                    }
+                }
+                return !1;
+            }(e))
+            return null;
+        if (e = new xr(e), ea.h[n] = e, ea.P.push(e), n = q().tracker_created, h(n))
+            try {
+                n(e);
+            } catch (t) {
+            }
+        return e;
+    }, ea.remove = function (t) {
+        for (var e = 0; e < ea.P.length; e++)
+            if (ea.P[e].get(rn) == t) {
+                ea.P.splice(e, 1), ea.h[t] = null;
+                break;
+            }
+    }, ea.j = function (t) {
+        return ea.h[t];
+    }, ea.getAll = function () {
+        return ea.P.slice(0);
+    }, ea.N = function () {
+        'ga' != o && f(49);
+        var t = W[o];
+        if (!t || 42 != t.answer) {
+            ea.L = t && t.l, ea.ya = +new Date(), ea.loaded = !0;
+            var e = W[o] = ea;
+            if (Dn('create', e, e.create), Dn('remove', e, e.remove), Dn('getByName', e, e.j, 5), Dn('getAll', e, e.getAll, 6), Dn('get', e = xr.prototype, e.get, 7), Dn('set', e, e.set, 4), Dn('send', e, e.send), Dn('requireSync', e, e.ma), Dn('get', e = jt.prototype, e.get), Dn('set', e, e.set), 'https:' != Z.location.protocol && !s) {
+                t: {
+                    e = Z.getElementsByTagName('script');
+                    for (var n = 0; n < e.length && n < 100; n++) {
+                        var r = e[n].src;
+                        if (r && 0 == r.indexOf(M(!0) + '/analytics')) {
+                            e = !0;
+                            break t;
+                        }
+                    }
+                    e = !1;
+                }
+                e && (s = !0);
+            }
+            e = ((W.gaplugins = W.gaplugins || {}).Linker = dr).prototype, Xr('linker', dr), Dn('decorate', e, e.ca, 20), Dn('autoLink', e, e.S, 25), Xr('displayfeatures', kr), Xr('adfeatures', kr), t = t && t.q, T(t) ? ta.D.apply(ea, t) : f(50);
+        }
+    }, ea.da = function () {
+        for (var t = ea.getAll(), e = 0; e < t.length; e++)
+            t[e].get(rn);
+    };
+    var ra = ea.N, aa = W[o];
+    aa && aa.r ? ra() : Gr(ra), Gr(function () {
+        ta.D(["provide","render",m]);
+    });
+}(window);

+ 35 - 0
bird.js

@@ -0,0 +1,35 @@
+'use strict';
+var game = new Phaser.Game(400, 490, Phaser.AUTO, 'game_div'), game_state = {
+        main: function () {
+        }
+    };
+game_state.main.prototype = {
+    preload: function () {
+        this.game.stage.backgroundColor = '#71c5cf', this.game.load.image('bird', '/../images/bird.png'), this.game.load.image('pipe', '/../images/pipe.png');
+    },
+    create: function () {
+        this.bird = this.game.add.sprite(100, 245, 'bird'), this.bird.body.gravity.y = 1000, this.game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR).onDown.add(this.jump, this), this.pipes = game.add.group(), this.pipes.createMultiple(20, 'pipe'), this.timer = this.game.time.events.loop(1500, this.add_row_of_pipes, this), this.score = 0;
+        this.label_score = this.game.add.text(20, 20, '0', {
+            font: '30px Arial',
+            fill: '#ffffff'
+        });
+    },
+    update: function () {
+        0 == this.bird.inWorld && this.restart_game(), this.game.physics.overlap(this.bird, this.pipes, this.restart_game, null, this);
+    },
+    jump: function () {
+        this.bird.body.velocity.y = -350;
+    },
+    restart_game: function () {
+        this.game.time.events.remove(this.timer), this.game.state.start('main');
+    },
+    add_one_pipe: function (t, e) {
+        var i = this.pipes.getFirstDead();
+        i.reset(t, e), i.body.velocity.x = -200, i.outOfBoundsKill = !0;
+    },
+    add_row_of_pipes: function () {
+        for (var t = Math.floor(5 * Math.random()) + 1, e = 0; e < 8; e++)
+            e != t && e != t + 1 && this.add_one_pipe(400, 60 * e + 10);
+        this.score += 1, this.label_score.content = this.score;
+    }
+}, game.state.add('main', game_state.main), game.state.start('main');

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 859 - 0
c2runtime.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
css/main.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 7
images/algolia_logo.svg


BIN
images/apple-touch-icon-next.png


BIN
images/avatar.gif


BIN
images/bird.png


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 109
images/cc-by-nc-nd.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 111
images/cc-by-nc-sa.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 109
images/cc-by-nc.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 106
images/cc-by-nd.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 109
images/cc-by-sa.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 111
images/cc-by.svg


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 72
images/cc-zero.svg


BIN
images/download.png


BIN
images/favicon-16x16-next.png


BIN
images/favicon-32x32-next.png


BIN
images/icon-128.png


BIN
images/icon-16.png


BIN
images/icon-256.png


BIN
images/icon-32.png


+ 1 - 23
images/logo.svg

@@ -1,23 +1 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xml:space="preserve"
-   enable-background="new 0 0 512 512"
-   viewBox="0 0 512 512"
-   height="512px"
-   width="512px"
-   y="0px"
-   x="0px"
-   id="NexT"
-   version="1.1"><metadata
-     id="metadata3390"><rdf:RDF><cc:Work
-         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
-     id="defs3388" /><path
-     style="fill:#222222;fill-opacity:1"
-     id="path3384"
-     d="M 256.4,25.8 56.4,141.3 56,371.5 255.6,486.2 455.6,370.7 456,140.5 Z m 92.6,328.8 -18.4,10.7 -18.6,-11 0,0 -112,-142.3 0,142.6 -18.4,10.7 -18.6,-11 0,-197 18.5,-10.6 18.5,10.8 0,0 112,144.5 0,-144.6 18.5,-10.6 18.5,10.8 z" /></svg>
+<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512"><path d="M256.4 25.8l-200 115.5-.4 230.2 199.6 114.7 200-115.5.4-230.2zM349 354.6l-18.4 10.7-18.6-11L200 212v142.6l-18.4 10.7-18.6-11v-197l18.5-10.6 18.5 10.8L312 302V157.4l18.5-10.6 18.5 10.8z" fill="#222"/></svg>

BIN
images/pipe.png


+ 1 - 13
images/quote-l.svg

@@ -1,13 +1 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- License Agreement at http://iconmonstr.com/license/ -->
-
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<path id="quote-5-icon" d="M55.178,332.895c-22.22-79.435,26.876-198.974,151.004-223.472l16.886,36.498
-	c-38.022,14.331-63.218,47.064-66.943,81.466c42.757,6.73,75.459,43.737,75.459,88.385
-	C231.583,415.014,85.181,440.162,55.178,332.895z M285.595,332.895c-22.22-79.435,26.876-198.974,151.004-223.472l16.886,36.498
-	c-38.022,14.331-63.218,47.064-66.943,81.466c42.757,6.73,75.459,43.737,75.459,88.385C462,415.014,315.598,440.162,285.595,332.895
-	z"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512"><path d="M55.178 332.895c-22.22-79.435 26.876-198.974 151.004-223.472l16.886 36.498c-38.022 14.331-63.218 47.064-66.943 81.466 42.757 6.73 75.459 43.737 75.459 88.385-.001 99.242-146.403 124.39-176.406 17.123zm230.417 0c-22.22-79.435 26.876-198.974 151.004-223.472l16.886 36.498c-38.022 14.331-63.218 47.064-66.943 81.466 42.757 6.73 75.459 43.737 75.459 88.385-.001 99.242-146.403 124.39-176.406 17.123z"/></svg>

+ 1 - 12
images/quote-r.svg

@@ -1,12 +1 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- License Agreement at http://iconmonstr.com/license/ -->
-
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<path id="quote-6-icon" d="M456.822,179.107c22.219,79.434-26.877,198.973-151.004,223.471l-16.887-36.498
-	c38.023-14.33,63.219-47.064,66.943-81.465c-42.756-6.73-75.459-43.739-75.459-88.385
-	C280.416,96.986,426.818,71.837,456.822,179.107z M226.405,179.107c22.22,79.434-26.876,198.973-151.004,223.471L58.515,366.08
-	c38.022-14.33,63.218-47.064,66.943-81.465C82.702,277.885,50,240.876,50,196.23C50,96.986,196.402,71.837,226.405,179.107z"/>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512"><path d="M456.822 179.107c22.219 79.434-26.877 198.973-151.004 223.471l-16.887-36.498c38.023-14.33 63.219-47.064 66.943-81.465-42.756-6.73-75.459-43.739-75.459-88.385.001-99.244 146.403-124.393 176.407-17.123zm-230.417 0c22.22 79.434-26.876 198.973-151.004 223.471L58.515 366.08c38.022-14.33 63.218-47.064 66.943-81.465C82.702 277.885 50 240.876 50 196.23c0-99.244 146.402-124.393 176.405-17.123z"/></svg>

BIN
images/segment-1.png


BIN
images/transistor.png


+ 83 - 1617
js/analytics.js

@@ -1,1617 +1,83 @@
-'use strict';
-var _typeof2 = 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator ? function (t) {
-        return typeof t;
-    } : function (t) {
-        return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t;
-    }, _typeof = 'function' == typeof Symbol && 'symbol' == _typeof2(Symbol.iterator) ? function (t) {
-        return void 0 === t ? 'undefined' : _typeof2(t);
-    } : function (t) {
-        return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : void 0 === t ? 'undefined' : _typeof2(t);
-    };
-!function () {
-    function t(t, e) {
-        t = t.split('.');
-        var n, r = d;
-        t[0] in r || void 0 === r.execScript || r.execScript('var ' + t[0]);
-        for (; t.length && (n = t.shift());)
-            t.length || void 0 === e ? r = r[n] && r[n] !== Object.prototype[n] ? r[n] : r[n] = {} : r[n] = e;
-    }
-    function u(t, e) {
-        for (var n in e)
-            e.hasOwnProperty(n) && (t[n] = e[n]);
-    }
-    function i(t) {
-        for (var e in t)
-            if (t.hasOwnProperty(e))
-                return 1;
-    }
-    function o(t, e) {
-        v.addEventListener ? v.addEventListener(t, e, !1) : v.attachEvent && v.attachEvent('on' + t, e);
-    }
-    function a() {
-        e.TAGGING = e.TAGGING || [], e.TAGGING[1] = !0;
-    }
-    function s(t, e) {
-        'protocol' !== (e = e && String(e).toLowerCase()) && 'port' !== e || (t.protocol = l(t.protocol) || l(p.location.protocol)), 'port' === e ? t.port = String(Number(t.hostname ? t.port : p.location.port) || ('http' == t.protocol ? 80 : 'https' == t.protocol ? 443 : '')) : 'host' === e && (t.hostname = (t.hostname || p.location.hostname).replace(w, '').toLowerCase());
-        var n = l(t.protocol);
-        switch (e = e && String(e).toLowerCase()) {
-        case 'url_no_fragment':
-            e = '', t && t.href && (e = (e = t.href.indexOf('#')) < 0 ? t.href : t.href.substr(0, e)), t = e;
-            break;
-        case 'protocol':
-            t = n;
-            break;
-        case 'host':
-            t = t.hostname.replace(w, '').toLowerCase();
-            break;
-        case 'port':
-            t = String(Number(t.port) || ('http' == n ? 80 : 'https' == n ? 443 : ''));
-            break;
-        case 'path':
-            t.pathname || t.hostname || a();
-            t:
-                if (e = (t = (t = '/' == t.pathname.substr(0, 1) ? t.pathname : '/' + t.pathname).split('/'))[t.length - 1], n = [], Array.prototype.indexOf)
-                    e = n.indexOf(e), e = 'number' == typeof e ? e : -1;
-                else {
-                    for (var r = 0; r < n.length; r++)
-                        if (n[r] === e) {
-                            e = r;
-                            break t;
-                        }
-                    e = -1;
-                }
-            0 <= e && (t[t.length - 1] = ''), t = t.join('/');
-            break;
-        case 'query':
-            t = t.search.replace('?', '');
-            break;
-        case 'extension':
-            t = (t = 1 < (t = t.pathname.split('.')).length ? t[t.length - 1] : '').split('/')[0];
-            break;
-        case 'fragment':
-            t = t.hash.replace('#', '');
-            break;
-        default:
-            t = t && t.href;
-        }
-        return t;
-    }
-    function c(t) {
-        var e = v.createElement('a');
-        t && (e.href = t);
-        var n = e.pathname;
-        return '/' !== n[0] && (t || a(), n = '/' + n), t = e.hostname.replace(w, ''), {
-            href: e.href,
-            protocol: e.protocol,
-            host: e.host,
-            hostname: t,
-            pathname: n,
-            search: e.search,
-            hash: e.hash,
-            port: e.port
-        };
-    }
-    function l(t) {
-        return t ? t.replace(':', '').toLowerCase() : '';
-    }
-    var f, g, h, d = this || self, p = window, v = document, m = /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i, e = {}, w = /:[0-9]+$/;
-    function y() {
-        for (var t = f, e = {}, n = 0; n < t.length; ++n)
-            e[t[n]] = n;
-        return e;
-    }
-    function b() {
-        var t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-        return (t += t.toLowerCase() + '0123456789-_') + '.';
-    }
-    function _(t) {
-        f = f || b(), g = g || y();
-        for (var e = [], n = 0; n < t.length; n += 3) {
-            var r = n + 1 < t.length, a = n + 2 < t.length, o = t.charCodeAt(n), i = r ? t.charCodeAt(n + 1) : 0, s = a ? t.charCodeAt(n + 2) : 0, c = o >> 2;
-            o = (3 & o) << 4 | i >> 4, i = (15 & i) << 2 | s >> 6, s &= 63, a || (s = 64, r || (i = 64)), e.push(f[c], f[o], f[i], f[s]);
-        }
-        return e.join('');
-    }
-    function k(r) {
-        function t(t) {
-            for (; a < r.length;) {
-                var e = r.charAt(a++), n = g[e];
-                if (null != n)
-                    return n;
-                if (!/^[\s\xa0]*$/.test(e))
-                    throw Error('Unknown base64 encoding at char: ' + e);
-            }
-            return t;
-        }
-        f = f || b(), g = g || y();
-        for (var e = '', a = 0;;) {
-            var n = t(-1), o = t(0), i = t(64), s = t(64);
-            if (64 === s && -1 === n)
-                return e;
-            e += String.fromCharCode(n << 2 | o >> 4), 64 != i && (e += String.fromCharCode(o << 4 & 240 | i >> 2), 64 != s && (e += String.fromCharCode(i << 6 & 192 | s)));
-        }
-    }
-    function O(t, e, n) {
-        for (var r = x().decorators, a = {}, o = 0; o < r.length; ++o) {
-            var i, s = r[o];
-            if (i = !n || s.forms)
-                t: {
-                    var c = t;
-                    if ((i = s.domains) && (s.sameHost || c !== v.location.hostname))
-                        for (var l = 0; l < i.length; l++)
-                            if (i[l] instanceof RegExp) {
-                                if (i[l].test(c)) {
-                                    i = !0;
-                                    break t;
-                                }
-                            } else if (0 <= c.indexOf(i[l])) {
-                                i = !0;
-                                break t;
-                            }
-                    i = !1;
-                }
-            i && (null == (i = s.placement) && (i = s.fragment ? 2 : 1), i === e && u(a, s.callback()));
-        }
-        return a;
-    }
-    var x = function () {
-            var t = {}, e = p.google_tag_data;
-            return p.google_tag_data = void 0 === e ? t : e, (e = (t = p.google_tag_data).gl) && e.decorators || (e = { decorators: [] }, t.gl = e), e;
-        }, S = /(.*?)\*(.*?)\*(.*)/, T = /([^?#]+)(\?[^#]*)?(#.*)?/;
-    function C(t) {
-        return new RegExp('(.*?)(^|&)' + t + '=([^&]*)&?(.*)');
-    }
-    function j(t) {
-        var e, n = [];
-        for (e in t)
-            if (t.hasOwnProperty(e)) {
-                var r = t[e];
-                void 0 !== r && r == r && null !== r && '[object Object]' !== r.toString() && (n.push(e), n.push(_(String(r))));
-            }
-        return t = n.join('*'), ["1",A(t),t].join('*');
-    }
-    var A = function (t, e) {
-        if (t = [window.navigator.userAgent,(new Date).getTimezoneOffset(),window.navigator.userLanguage||window.navigator.language,Math.floor((new Date).getTime()/60/1e3)-(void 0===e?0:e),t].join('*'), !(e = h)) {
-            e = Array(256);
-            for (var n = 0; n < 256; n++) {
-                for (var r = n, a = 0; a < 8; a++)
-                    r = 1 & r ? r >>> 1 ^ 3988292384 : r >>> 1;
-                e[n] = r;
-            }
-        }
-        for (h = e, e = 4294967295, n = 0; n < t.length; n++)
-            e = e >>> 8 ^ h[255 & (e ^ t.charCodeAt(n))];
-        return ((-1 ^ e) >>> 0).toString(36);
-    };
-    function N(t, e) {
-        if (t = C(t).exec(e)) {
-            var n = t[2], r = t[4];
-            e = t[1], r && (e = e + n + r);
-        }
-        return e;
-    }
-    function E(t) {
-        var e = void 0 === e ? 3 : e;
-        try {
-            if (t) {
-                t: {
-                    for (var n = 0; n < 3; ++n) {
-                        var r = S.exec(t);
-                        if (r) {
-                            var a = r;
-                            break t;
-                        }
-                        t = decodeURIComponent(t);
-                    }
-                    a = void 0;
-                }
-                if (a && '1' === a[1]) {
-                    var o = a[2], i = a[3];
-                    t: {
-                        for (a = 0; a < e; ++a)
-                            if (o === A(i, a)) {
-                                var s = !0;
-                                break t;
-                            }
-                        s = !1;
-                    }
-                    if (s) {
-                        e = {};
-                        var c = i ? i.split('*') : [];
-                        for (i = 0; i < c.length; i += 2)
-                            e[c[i]] = k(c[i + 1]);
-                        return e;
-                    }
-                }
-            }
-        } catch (t) {
-        }
-    }
-    function I(n, t, e, r) {
-        function a(t) {
-            var e = (t = N(n, t)).charAt(t.length - 1);
-            return t && '&' !== e && (t += '&'), t + s;
-        }
-        r = void 0 !== r && r;
-        var o = T.exec(e);
-        if (!o)
-            return '';
-        e = o[1];
-        var i = o[2] || '';
-        o = o[3] || '';
-        var s = n + '=' + t;
-        return r ? o = '#' + a(o.substring(1)) : i = '?' + a(i.substring(1)), '' + e + i + o;
-    }
-    function R(t, e) {
-        var n = 'FORM' === (t.tagName || '').toUpperCase(), r = O(e, 1, n), a = O(e, 2, n);
-        for (var o in (e = O(e, 3, n), i(r) && (r = j(r), n ? P('_gl', r, t) : $('_gl', r, t, !1)), !n && i(a) && $('_gl', n = j(a), t, !0), e))
-            e.hasOwnProperty(o) && L(o, e[o], t);
-    }
-    function L(t, e, n, r) {
-        if (n.tagName) {
-            if ('a' === n.tagName.toLowerCase())
-                return $(t, e, n, r);
-            if ('form' === n.tagName.toLowerCase())
-                return P(t, e, n);
-        }
-        if ('string' == typeof n)
-            return I(t, e, n, r);
-    }
-    function $(t, e, n, r) {
-        n.href && (t = I(t, e, n.href, void 0 !== r && r), m.test(t) && (n.href = t));
-    }
-    function P(t, e, n) {
-        if (n && n.action) {
-            var r = (n.method || '').toLowerCase();
-            if ('get' === r) {
-                r = n.childNodes || [];
-                for (var a = !1, o = 0; o < r.length; o++) {
-                    var i = r[o];
-                    if (i.name === t) {
-                        i.setAttribute('value', e), a = !0;
-                        break;
-                    }
-                }
-                a || ((r = v.createElement('input')).setAttribute('type', 'hidden'), r.setAttribute('name', t), r.setAttribute('value', e), n.appendChild(r));
-            } else
-                'post' === r && (t = I(t, e, n.action), m.test(t) && (n.action = t));
-        }
-    }
-    var M = function (t) {
-            try {
-                t: {
-                    for (var e = 100; t && 0 < e;) {
-                        if (t.href && t.nodeName.match(/^a(?:rea)?$/i)) {
-                            var n = t;
-                            break t;
-                        }
-                        t = t.parentNode, e--;
-                    }
-                    n = null;
-                }
-                if (n) {
-                    var r = n.protocol;
-                    'http:' !== r && 'https:' !== r || R(n, n.hostname);
-                }
-            } catch (t) {
-            }
-        }, U = function (t) {
-            try {
-                t.action && R(t, s(c(t.action), 'host'));
-            } catch (t) {
-            }
-        };
-    t('google_tag_data.glBridge.auto', function (t, e, n, r) {
-        (function () {
-            function t(t) {
-                e(t.target || t.srcElement || {});
-            }
-            var e = M, n = U, r = x();
-            if (!r.init) {
-                o('mousedown', t), o('keyup', t), o('submit', function (t) {
-                    n(t.target || t.srcElement || {});
-                });
-                var a = HTMLFormElement.prototype.submit;
-                HTMLFormElement.prototype.submit = function () {
-                    n(this), a.call(this);
-                }, r.init = !0;
-            }
-        }(), t = {
-            callback: t,
-            domains: e,
-            fragment: 2 == (n = 'fragment' === n ? 2 : 1),
-            placement: n,
-            forms: !!r,
-            sameHost: !1
-        }, x().decorators.push(t));
-    }), t('google_tag_data.glBridge.decorate', function (t, e, n) {
-        return L('_gl', t = j(t), e, !!n);
-    }), t('google_tag_data.glBridge.generate', j), t('google_tag_data.glBridge.get', function (t, e) {
-        var i, n = (i = !!e, function (t) {
-                var e = c(p.location.href), n = e.search.replace('?', '');
-                t: {
-                    for (var r = n.split('&'), a = 0; a < r.length; a++) {
-                        var o = r[a].split('=');
-                        if ('_gl' === decodeURIComponent(o[0]).replace(/\+/g, ' ')) {
-                            r = o.slice(1).join('=');
-                            break t;
-                        }
-                    }
-                    r = void 0;
-                }
-                t.query = E(r || '') || {}, a = (r = s(e, 'fragment')).match(C('_gl')), t.fragment = E(a && a[3] || '') || {}, i && function (t, e, n) {
-                    function r(t, e) {
-                        return (t = N('_gl', t)).length && (t = e + t), t;
-                    }
-                    if (p.history && p.history.replaceState) {
-                        var a = C('_gl');
-                        (a.test(e) || a.test(n)) && (t = s(t, 'path'), e = r(e, '?'), n = r(n, '#'), p.history.replaceState({}, void 0, '' + t + e + n));
-                    }
-                }(e, n, r);
-            });
-        return (e = x()).data || (e.data = {
-            query: {},
-            fragment: {}
-        }, n(e.data)), n = {}, (e = e.data) && (u(n, e.query), t && u(n, e.fragment)), n;
-    });
-}(window), function () {
-    function s(t) {
-        var e, n = 1;
-        if (t)
-            for (n = 0, e = t.length - 1; 0 <= e; e--) {
-                var r = t.charCodeAt(e);
-                n = 0 != (r = 266338304 & (n = (n << 6 & 268435455) + r + (r << 14))) ? n ^ r >> 21 : n;
-            }
-        return n;
-    }
-    function a(t) {
-        this.w = t || [];
-    }
-    a.prototype.set = function (t) {
-        this.w[t] = !0;
-    }, a.prototype.encode = function () {
-        for (var t = [], e = 0; e < this.w.length; e++)
-            this.w[e] && (t[Math.floor(e / 6)] ^= 1 << e % 6);
-        for (e = 0; e < t.length; e++)
-            t[e] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'.charAt(t[e] || 0);
-        return t.join('') + '~';
-    };
-    var t, e, n = window.GoogleAnalyticsObject;
-    if ((t = null != n) && (t = -1 < (n.constructor + '').indexOf('String')), e = t) {
-        var r = window.GoogleAnalyticsObject;
-        e = r ? r.replace(/^[\s\xa0]+|[\s\xa0]+$/g, '') : '';
-    }
-    var o = e || 'ga', c = /^(?:utma\.)?\d+\.\d+$/, l = /^amp-[\w.-]{22,64}$/, i = !1, u = new a();
-    function f(t) {
-        u.set(t);
-    }
-    function g(t) {
-        t = new a(t = S(t));
-        for (var e = u.w.slice(), n = 0; n < t.w.length; n++)
-            e[n] = e[n] || t.w[n];
-        return new a(e).encode();
-    }
-    function h(t) {
-        return 'function' == typeof t;
-    }
-    function d(t) {
-        return null != t && -1 < (t.constructor + '').indexOf('String');
-    }
-    function p() {
-        for (var t = Y.navigator.userAgent + (J.cookie ? J.cookie : '') + (J.referrer ? J.referrer : ''), e = t.length, n = Y.history.length; 0 < n;)
-            t += n-- ^ e++;
-        return [St()^2147483647&s(t),Math.round((new Date).getTime()/1e3)].join('.');
-    }
-    function v(t) {
-        var e = J.createElement('img');
-        return e.width = 1, e.height = 1, e.src = t, e;
-    }
-    function m() {
-    }
-    function w(t) {
-        return encodeURIComponent instanceof Function ? encodeURIComponent(t) : (f(28), t);
-    }
-    function y(t, e, n, r) {
-        try {
-            t.addEventListener ? t.addEventListener(e, n, !!r) : t.attachEvent && t.attachEvent('on' + e, n);
-        } catch (t) {
-            f(27);
-        }
-    }
-    function b(t, e) {
-        return N(J.location[e ? 'href' : 'search'], t);
-    }
-    function _() {
-        var t = '' + J.location.hostname;
-        return 0 == t.indexOf('www.') ? t.substring(4) : t;
-    }
-    function k(t, e) {
-        var n = t.indexOf(e);
-        return !(5 != n && 6 != n || '/' != (t = t.charAt(n + e.length)) && '?' != t && '' != t && ':' != t);
-    }
-    function O(t, e) {
-        if (1 == e.length && null != e[0] && 'object' === _typeof(e[0]))
-            return e[0];
-        for (var n = {}, r = Math.min(t.length + 1, e.length), a = 0; a < r; a++) {
-            if ('object' === _typeof(e[a])) {
-                for (var o in e[a])
-                    e[a].hasOwnProperty(o) && (n[o] = e[a][o]);
-                break;
-            }
-            a < t.length && (n[t[a]] = e[a]);
-        }
-        return n;
-    }
-    function x() {
-        this.keys = [], this.values = {}, this.m = {};
-    }
-    var S = function (t) {
-            return t = t.get(Ue), T(t) || (t = []), t;
-        }, T = function (t) {
-            return '[object Array]' == Object.prototype.toString.call(Object(t));
-        }, C = function (t, e) {
-            return 0 == t.indexOf(e);
-        }, j = /^[\w\-:/.?=&%!\[\]]+$/, A = /^[\w+/_-]+[=]{0,2}$/, N = function (t, e) {
-            return (t = t.match('(?:&|#|\\?)' + w(e).replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1') + '=([^&#]*)')) && 2 == t.length ? t[1] : '';
-        };
-    function E(t, e) {
-        return setTimeout(t, e);
-    }
-    function I(t) {
-        var e = Q._gaUserPrefs;
-        if (e && e.ioo && e.ioo() || t && !0 === Q['ga-disable-' + t])
-            return 1;
-        try {
-            var n = Q.external;
-            if (n && n._gaUserPrefs && 'oo' == n._gaUserPrefs)
-                return 1;
-        } catch (t) {
-        }
-        for (t = [], e = String(tt.cookie || document.cookie).split(';'), n = 0; n < e.length; n++) {
-            var r = e[n].split('='), a = r[0].replace(/^\s*|\s*$/g, '');
-            a && 'AMP_TOKEN' == a && ((r = r.slice(1).join('=').replace(/^\s*|\s*$/g, '')) && (r = decodeURIComponent(r)), t.push(r));
-        }
-        for (e = 0; e < t.length; e++)
-            if ('$OPT_OUT' == t[e])
-                return 1;
-        return tt.getElementById('__gaOptOutExtension');
-    }
-    function R(t) {
-        var e = [], n = J.cookie.split(';');
-        t = new RegExp('^\\s*' + t + '=\\s*(.*?)\\s*$');
-        for (var r = 0; r < n.length; r++) {
-            var a = n[r].match(t);
-            a && e.push(a[1]);
-        }
-        return e;
-    }
-    function L(t, e, n, r, a, o, i) {
-        if (a = !I(a) && !(nt.test(J.location.hostname) || '/' == n && et.test(r))) {
-            if (e && 1200 < e.length && (e = e.substring(0, 1200)), n = t + '=' + e + '; path=' + n + '; ', o && (n += 'expires=' + new Date(new Date().getTime() + o).toGMTString() + '; '), r && 'none' !== r && (n += 'domain=' + r + ';'), i && (n += i + ';'), r = J.cookie, J.cookie = n, !(r = r != J.cookie))
-                t: {
-                    for (t = R(t), r = 0; r < t.length; r++)
-                        if (e == t[r]) {
-                            r = !0;
-                            break t;
-                        }
-                    r = !1;
-                }
-            return r;
-        }
-    }
-    function $(t) {
-        return encodeURIComponent ? encodeURIComponent(t).replace(/\(/g, '%28').replace(/\)/g, '%29') : t;
-    }
-    function P() {
-        if (void 0 !== Y.__ga4__)
-            return Y.__ga4__;
-        if (void 0 === z) {
-            var t = Y.navigator.userAgent;
-            if (t) {
-                var e = t;
-                try {
-                    e = decodeURIComponent(t);
-                } catch (t) {
-                }
-                (t = !(0 <= e.indexOf('Chrome') || 0 <= e.indexOf('CriOS') || !(0 <= e.indexOf('Safari/') || 0 <= e.indexOf('Safari,')))) && (t = 11 <= ((e = rt.exec(e)) ? Number(e[1]) : -1)), z = t;
-            } else
-                z = !1;
-        }
-        return z;
-    }
-    function M(t) {
-        return (t || i || 'https:' == J.location.protocol ? 'https:' : 'http:') + '//www.google-analytics.com';
-    }
-    function U(t) {
-        this.name = 'len', this.message = t + '-8192';
-    }
-    function D(t, e, n) {
-        if (n = n || m, e.length <= 2036)
-            ft(t, e, n);
-        else {
-            if (!(e.length <= 8192))
-                throw dt('len', e.length), new U(e.length);
-            ht(t, e, n) || gt(t, e, n) || ft(t, e, n);
-        }
-    }
-    function G(t, e, n, r) {
-        gt(t + '?' + e, '', r = r || m, n);
-    }
-    function q() {
-        return Y.gaData = Y.gaData || {};
-    }
-    function V(t) {
-        var e = q();
-        return e[t] = e[t] || {};
-    }
-    function F() {
-        this.M = [];
-    }
-    x.prototype.set = function (t, e, n) {
-        this.keys.push(t), n ? this.m[':' + t] = e : this.values[':' + t] = e;
-    }, x.prototype.get = function (t) {
-        return this.m.hasOwnProperty(':' + t) ? this.m[':' + t] : this.values[':' + t];
-    }, x.prototype.map = function (t) {
-        for (var e = 0; e < this.keys.length; e++) {
-            var n = this.keys[e], r = this.get(n);
-            r && t(n, r);
-        }
-    };
-    function H() {
-        Zr.D([m]);
-    }
-    function B(t) {
-        t: {
-            if (at.test(J.referrer)) {
-                var e = J.location.hostname.replace(ot, '');
-                e: {
-                    var n = J.referrer, r = (n = n.replace(/^https?:\/\//, '')).replace(/^[^/]+/, '').split('/'), a = r[2];
-                    if (!(r = (r = 's' == a ? r[3] : a) ? decodeURIComponent(r) : r)) {
-                        if (0 == n.indexOf('xn--')) {
-                            n = '';
-                            break e;
-                        }
-                        (n = n.match(/(.*)\.cdn\.ampproject\.org\/?$/)) && 2 == n.length && (r = n[1].replace(/-/g, '.').replace(/\.\./g, '-'));
-                    }
-                    n = r ? r.replace(ot, '') : '';
-                }
-                if ((r = e === n) || (n = '.' + n, r = e.substring(e.length - n.length, e.length) === n), r) {
-                    e = !0;
-                    break t;
-                }
-                f(78);
-            }
-            e = !1;
-        }
-        return e && !1 !== t;
-    }
-    var z, K, X, W, Z, Y = window, J = document, Q = window, tt = document, et = /^(www\.)?google(\.com?)?(\.[a-z]{2})?$/, nt = /(^|\.)doubleclick\.net$/i, rt = /^.*Version\/?(\d+)[^\d].*$/i, at = /^https?:\/\/[^/]*cdn\.ampproject\.org\//, ot = /^(?:www\.|m\.|amp\.)+/, it = [], st = function e(n, r, a) {
-            if (!window.JSON)
-                return f(58), !1;
-            var t = Y.XMLHttpRequest;
-            if (!t)
-                return f(59), !1;
-            var o = new t();
-            return 'withCredentials' in o ? (o.open('POST', (a || 'https://ampcid.google.com/v1/publisher:getClientId') + '?key=AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM', !0), o.withCredentials = !0, o.setRequestHeader('Content-Type', 'text/plain'), o.onload = function () {
-                if (K = !1, 4 == o.readyState) {
-                    try {
-                        200 != o.status && (f(61), ut('', '$ERROR', 30000));
-                        var t = JSON.parse(o.responseText);
-                        t.optOut ? (f(63), ut('', '$OPT_OUT', 31536000000)) : t.clientId ? ut(t.clientId, t.securityToken, 31536000000) : !a && t.alternateUrl ? (X && clearTimeout(X), K = !0, e(n, r, t.alternateUrl)) : (f(64), ut('', '$NOT_FOUND', 3600000));
-                    } catch (t) {
-                        f(65), ut('', '$ERROR', 30000);
-                    }
-                    o = null;
-                }
-            }, t = { originScope: 'AMP_ECID_GOOGLE' }, n && (t.securityToken = n), o.send(JSON.stringify(t)), X = E(function () {
-                f(66), ut('', '$ERROR', 30000);
-            }, 10000), !0) : (f(60), !1);
-        }, ct = function () {
-            K = !1;
-        }, lt = function (t, e) {
-            if (void 0 === W) {
-                W = '';
-                for (var n = tr(), r = 0; r < n.length; r++) {
-                    var a = n[r];
-                    if (L('AMP_TOKEN', encodeURIComponent(t), '/', a, '', e))
-                        return void (W = a);
-                }
-            }
-            L('AMP_TOKEN', encodeURIComponent(t), '/', W, '', e);
-        }, ut = function (t, e, n) {
-            for (X && clearTimeout(X), e && lt(e, n), Z = t, e = it, it = [], n = 0; n < e.length; n++)
-                e[n](t);
-        }, ft = function (t, e, n) {
-            var r = v(t + '?' + e);
-            r.onload = r.onerror = function () {
-                r.onload = null, r.onerror = null, n();
-            };
-        }, gt = function (t, e, r, a) {
-            var n = Y.XMLHttpRequest;
-            if (!n)
-                return !1;
-            var o = new n();
-            return 'withCredentials' in o && (t = t.replace(/^http:/, 'https:'), o.open('POST', t, !0), o.withCredentials = !0, o.setRequestHeader('Content-Type', 'text/plain'), o.onreadystatechange = function () {
-                if (4 == o.readyState) {
-                    if (a)
-                        try {
-                            var t = o.responseText;
-                            if (t.length < 1)
-                                dt('xhr', 'ver', '0'), r();
-                            else if ('1' != t.charAt(0))
-                                dt('xhr', 'ver', String(t.length)), r();
-                            else if (3 < a.count++)
-                                dt('xhr', 'tmr', '' + a.count), r();
-                            else if (1 == t.length)
-                                r();
-                            else {
-                                var e = t.charAt(1);
-                                if ('d' == e)
-                                    G('https://stats.g.doubleclick.net/j/collect', a.U, a, r);
-                                else if ('g' == e) {
-                                    ft('https://www.google.%/ads/ga-audiences'.replace('%', 'com'), a.google, r);
-                                    var n = t.substring(2);
-                                    n && (/^[a-z.]{1,6}$/.test(n) ? ft('https://www.google.%/ads/ga-audiences'.replace('%', n), a.google, m) : dt('tld', 'bcc', n));
-                                } else
-                                    dt('xhr', 'brc', e), r();
-                            }
-                        } catch (t) {
-                            dt('xhr', 'rsp'), r();
-                        }
-                    else
-                        r();
-                    o = null;
-                }
-            }, o.send(e), !0);
-        }, ht = function (t, e, n) {
-            return !!Y.navigator.sendBeacon && !!Y.navigator.sendBeacon(t, e) && (n(), !0);
-        }, dt = function (t, e, n) {
-            1 <= 100 * Math.random() || I('?') || (t = ["t=error","_e="+t,"_v=j81","sr=1"], e && t.push('_f=' + e), n && t.push('_m=' + w(n.substring(0, 100))), t.push('aip=1'), t.push('z=' + St()), ft(M(!0) + '/u/d', t.join('&'), m));
-        };
-    function pt(t) {
-        if (100 != t.get(bn) && s(jt(t, rn)) % 10000 >= 100 * At(t, bn))
-            throw 'abort';
-    }
-    function vt(t) {
-        if (I(jt(t, cn)))
-            throw 'abort';
-    }
-    function mt() {
-        var t = J.location.protocol;
-        if ('http:' != t && 'https:' != t)
-            throw 'abort';
-    }
-    function wt(n) {
-        try {
-            Y.navigator.sendBeacon ? f(42) : Y.XMLHttpRequest && 'withCredentials' in new Y.XMLHttpRequest() && f(40);
-        } catch (t) {
-        }
-        n.set(Me, g(n), !0), n.set(Kt, At(n, Kt) + 1);
-        var r = [];
-        Pt.map(function (t, e) {
-            e.F && null != (t = n.get(t)) && t != e.defaultValue && ('boolean' == typeof t && (t *= 1), r.push(e.F + '=' + w('' + t)));
-        }), !1 === n.get(Mn) && r.push('npa=1'), r.push('z=' + xt()), n.set(Ht, r.join('&'), !0);
-    }
-    function yt(t) {
-        var e = jt(t, zt);
-        !e && t.get(Bt) && (e = 'beacon');
-        var n = jt(t, In), r = jt(t, En), a = n || (r ? r + '/3' : M(!1) + '/collect');
-        switch (jt(t, $n)) {
-        case 'd':
-            a = n || (r ? r + '/32' : M(!1) + '/j/collect'), e = t.get(Ln) || void 0, G(a, jt(t, Ht), e, t.Z(Ft));
-            break;
-        case 'b':
-            a = n || (r ? r + '/31' : M(!1) + '/r/collect');
-        default:
-            e ? (n = jt(t, Ht), r = (r = t.Z(Ft)) || m, 'image' == e ? ft(a, n, r) : 'xhr' == e && gt(a, n, r) || 'beacon' == e && ht(a, n, r) || D(a, n, r)) : D(a, jt(t, Ht), t.Z(Ft));
-        }
-        e = (a = V(a = jt(t, cn))).hitcount, a.hitcount = e ? e + 1 : 1, delete V(a = jt(t, cn)).pending_experiments, t.set(Ft, m, !0);
-    }
-    function bt(t) {
-        q().expId && t.set(Ce, q().expId), q().expVar && t.set(je, q().expVar);
-        var e = jt(t, cn);
-        if (e = V(e).pending_experiments) {
-            var n = [];
-            for (r in e)
-                e.hasOwnProperty(r) && e[r] && n.push(encodeURIComponent(r) + '.' + encodeURIComponent(e[r]));
-            var r = n.join('!');
-        } else
-            r = void 0;
-        r && t.set(Ae, r, !0);
-    }
-    function _t() {
-        if (Y.navigator && 'preview' == Y.navigator.loadPurpose)
-            throw 'abort';
-    }
-    function kt(t) {
-        var e = Y.gaDevIds;
-        T(e) && 0 != e.length && t.set('&did', e.join(','), !0);
-    }
-    function Ot(t) {
-        if (!t.get(cn))
-            throw 'abort';
-    }
-    function xt() {
-        try {
-            var t = new Uint32Array(1);
-            return Y.crypto.getRandomValues(t), 2147483647 & t[0];
-        } catch (t) {
-            return St();
-        }
-    }
-    F.prototype.add = function (t) {
-        this.M.push(t);
-    }, F.prototype.D = function (t) {
-        try {
-            for (var e = 0; e < this.M.length; e++) {
-                var n = t.get(this.M[e]);
-                n && h(n) && n.call(Y, t);
-            }
-        } catch (t) {
-        }
-        (e = t.get(Ft)) != m && h(e) && (t.set(Ft, m, !0), setTimeout(e, 10));
-    };
-    var St = function () {
-        return Math.round(2147483647 * Math.random());
-    };
-    function Tt(t) {
-        var e = At(t, Re);
-        500 <= e && f(15);
-        var n = jt(t, Vt);
-        if ('transaction' != n && 'item' != n) {
-            n = At(t, $e);
-            var r = new Date().getTime(), a = At(t, Le);
-            if (0 == a && t.set(Le, r), 0 < (a = Math.round(2 * (r - a) / 1000)) && (n = Math.min(n + a, 20), t.set(Le, r)), n <= 0)
-                throw 'abort';
-            t.set($e, --n);
-        }
-        t.set(Re, ++e);
-    }
-    function Ct() {
-        this.data = new x();
-    }
-    function jt(t, e) {
-        return null == (t = t.get(e)) ? '' : '' + t;
-    }
-    function At(t, e) {
-        return null == (t = t.get(e)) || '' === t ? 0 : Number(t);
-    }
-    function Nt(t, e, n, r, a) {
-        this.name = t, this.F = e, this.Z = r, this.o = a, this.defaultValue = n;
-    }
-    function Et(t, e, n, r, a) {
-        return t = new Nt(t, e, n, r, a), Pt.set(t.name, t), t.name;
-    }
-    function It(t, e) {
-        Mt.push([new RegExp("^"+t+"$"),e]);
-    }
-    function Rt(t, e, n) {
-        return Et(t, e, n, void 0, Lt);
-    }
-    Ct.prototype.get = function (t) {
-        var e = Ut(t), n = this.data.get(t);
-        return e && null == n && (n = h(e.defaultValue) ? e.defaultValue() : e.defaultValue), e && e.Z ? e.Z(this, t, n) : n;
-    }, Ct.prototype.Z = function (t) {
-        return (t = this.get(t)) && h(t) ? t : m;
-    }, Ct.prototype.set = function (t, e, n) {
-        if (t)
-            if ('object' == (void 0 === t ? 'undefined' : _typeof(t)))
-                for (var r in t)
-                    t.hasOwnProperty(r) && $t(this, r, t[r], n);
-            else
-                $t(this, t, e, n);
-    };
-    function Lt() {
-    }
-    var $t = function (t, e, n, r) {
-            if (null != n)
-                switch (e) {
-                case cn:
-                    Rr.test(n);
-                }
-            var a = Ut(e);
-            a && a.o ? a.o(t, e, n, r) : t.data.set(e, n, r);
-        }, Pt = new x(), Mt = [], Ut = function (t) {
-            var e = Pt.get(t);
-            if (!e)
-                for (var n = 0; n < Mt.length; n++) {
-                    var r = Mt[n], a = r[0].exec(t);
-                    if (a) {
-                        e = r[1](a), Pt.set(e.name, e);
-                        break;
-                    }
-                }
-            return e;
-        }, Dt = Rt('apiVersion', 'v'), Gt = Rt('clientVersion', '_v');
-    Et('anonymizeIp', 'aip');
-    var qt = Et('adSenseId', 'a'), Vt = Et('hitType', 't'), Ft = Et('hitCallback'), Ht = Et('hitPayload');
-    Et('nonInteraction', 'ni'), Et('currencyCode', 'cu'), Et('dataSource', 'ds');
-    var Bt = Et('useBeacon', void 0, !1), zt = Et('transport');
-    Et('sessionControl', 'sc', ''), Et('sessionGroup', 'sg'), Et('queueTime', 'qt');
-    var Kt = Et('_s', '_s');
-    Et('screenName', 'cd');
-    var Xt = Et('location', 'dl', ''), Wt = Et('referrer', 'dr'), Zt = Et('page', 'dp', '');
-    Et('hostname', 'dh');
-    var Yt = Et('language', 'ul'), Jt = Et('encoding', 'de');
-    Et('title', 'dt', function () {
-        return J.title || void 0;
-    }), It('contentGroup([0-9]+)', function (t) {
-        return new Nt(t[0], 'cg' + t[1]);
-    });
-    var Qt = Et('screenColors', 'sd'), te = Et('screenResolution', 'sr'), ee = Et('viewportSize', 'vp'), ne = Et('javaEnabled', 'je'), re = Et('flashVersion', 'fl');
-    Et('campaignId', 'ci'), Et('campaignName', 'cn'), Et('campaignSource', 'cs'), Et('campaignMedium', 'cm'), Et('campaignKeyword', 'ck'), Et('campaignContent', 'cc');
-    var ae = Et('eventCategory', 'ec'), oe = Et('eventAction', 'ea'), ie = Et('eventLabel', 'el'), se = Et('eventValue', 'ev'), ce = Et('socialNetwork', 'sn'), le = Et('socialAction', 'sa'), ue = Et('socialTarget', 'st'), fe = Et('l1', 'plt'), ge = Et('l2', 'pdt'), he = Et('l3', 'dns'), de = Et('l4', 'rrt'), pe = Et('l5', 'srt'), ve = Et('l6', 'tcp'), me = Et('l7', 'dit'), we = Et('l8', 'clt'), ye = Et('l9', '_gst'), be = Et('l10', '_gbt'), _e = Et('l11', '_cst'), ke = Et('l12', '_cbt'), Oe = Et('timingCategory', 'utc'), xe = Et('timingVar', 'utv'), Se = Et('timingLabel', 'utl'), Te = Et('timingValue', 'utt');
-    Et('appName', 'an'), Et('appVersion', 'av', ''), Et('appId', 'aid', ''), Et('appInstallerId', 'aiid', ''), Et('exDescription', 'exd'), Et('exFatal', 'exf');
-    var Ce = Et('expId', 'xid'), je = Et('expVar', 'xvar'), Ae = Et('exp', 'exp'), Ne = Et('_utma', '_utma'), Ee = Et('_utmz', '_utmz'), Ie = Et('_utmht', '_utmht'), Re = Et('_hc', void 0, 0), Le = Et('_ti', void 0, 0), $e = Et('_to', void 0, 20);
-    It('dimension([0-9]+)', function (t) {
-        return new Nt(t[0], 'cd' + t[1]);
-    }), It('metric([0-9]+)', function (t) {
-        return new Nt(t[0], 'cm' + t[1]);
-    }), Et('linkerParam', void 0, void 0, function (t) {
-        if (t.get(Pe))
-            return f(35), sr.generate(mr(t));
-        var e = jt(t, rn), n = jt(t, On) || '';
-        return (e = '_ga=2.' + w(fr(n + e, 0) + '.' + n + '-' + e)) + (t = (t = wr(t)) ? (f(44), '&_gac=1.' + w([fr(t.qa,0),t.timestamp,t.qa].join('.'))) : '');
-    }, Lt);
-    var Pe = Rt('_cd2l', void 0, !1), Me = Et('usage', '_u'), Ue = Et('_um');
-    Et('forceSSL', void 0, void 0, function () {
-        return i;
-    }, function (t, e, n) {
-        f(34), i = !!n;
-    });
-    var De = Et('_j1', 'jid'), Ge = Et('_j2', 'gjid');
-    It('\\&(.*)', function (t) {
-        var n, r, e = new Nt(t[0], t[1]), a = (n = t[0].substring(1), Pt.map(function (t, e) {
-                e.F == n && (r = e);
-            }), r && r.name);
-        return a && (e.Z = function (t) {
-            return t.get(a);
-        }, e.o = function (t, e, n, r) {
-            t.set(a, n, r);
-        }, e.F = void 0), e;
-    });
-    var qe = Rt('_oot'), Ve = Et('previewTask'), Fe = Et('checkProtocolTask'), He = Et('validationTask'), Be = Et('checkStorageTask'), ze = Et('historyImportTask'), Ke = Et('samplerTask'), Xe = Et('_rlt'), We = Et('buildHitTask'), Ze = Et('sendHitTask'), Ye = Et('ceTask'), Je = Et('devIdTask'), Qe = Et('timingTask'), tn = Et('displayFeaturesTask'), en = Et('customTask'), nn = Rt('name'), rn = Rt('clientId', 'cid'), an = Rt('clientIdTime'), on = Rt('storedClientId'), sn = Et('userId', 'uid'), cn = Rt('trackingId', 'tid'), ln = Rt('cookieName', void 0, '_ga'), un = Rt('cookieDomain'), fn = Rt('cookiePath', void 0, '/'), gn = Rt('cookieExpires', void 0, 63072000), hn = Rt('cookieUpdate', void 0, !0), dn = Rt('cookieFlags', void 0, ''), pn = Rt('legacyCookieDomain'), vn = Rt('legacyHistoryImport', void 0, !0), mn = Rt('storage', void 0, 'cookie'), wn = Rt('allowLinker', void 0, !1), yn = Rt('allowAnchor', void 0, !0), bn = Rt('sampleRate', 'sf', 100), _n = Rt('siteSpeedSampleRate', void 0, 1), kn = Rt('alwaysSendReferrer', void 0, !1), On = Rt('_gid', '_gid'), xn = Rt('_gcn'), Sn = Rt('useAmpClientId'), Tn = Rt('_gclid'), Cn = Rt('_gt'), jn = Rt('_ge', void 0, 7776000000), An = Rt('_gclsrc'), Nn = Rt('storeGac', void 0, !0), En = Et('_x_19'), In = Et('transportUrl'), Rn = Et('_r', '_r'), Ln = Et('_dp'), $n = Et('_jt', void 0, 'n'), Pn = Et('allowAdFeatures', void 0, !0), Mn = Et('allowAdPersonalizationSignals', void 0, !0);
-    function Un(e, t, n, r) {
-        t[e] = function () {
-            try {
-                return r && f(r), n.apply(this, arguments);
-            } catch (t) {
-                throw dt('exc', e, t && t.name), t;
-            }
-        };
-    }
-    function Dn() {
-        this.V = 100, this.$ = this.fa = !1, this.oa = 'detourexp', this.groups = 1;
-    }
-    function Gn(t) {
-        if ('cookie' == jt(t, mn)) {
-            if (t.get(hn) || jt(t, on) != jt(t, rn)) {
-                var e = 1000 * At(t, gn);
-                Kn(t, rn, ln, e);
-            }
-            if (!t.get(hn) && Xn(t) == jt(t, On) || Kn(t, On, xn, 86400000), t.get(Nn)) {
-                var n = jt(t, Tn);
-                if (n) {
-                    var r = Math.min(At(t, jn), 1000 * At(t, gn));
-                    r = Math.min(r, 1000 * At(t, Cn) + r - new Date().getTime()), t.data.set(jn, r), e = {};
-                    var a = jt(t, Cn), o = jt(t, An), i = er(jt(t, fn)), s = Qn(jt(t, un)), c = jt(t, cn);
-                    t = jt(t, dn), o && 'aw.ds' != o ? e && (e.ua = !0) : (n = ["1",a,$(n)].join('.'), 0 < r && (e && (e.ta = !0), L('_gac_' + $(c), n, i, s, c, r, t))), rr(e);
-                }
-            } else
-                f(75);
-        }
-    }
-    function qn(t) {
-        if ('cookie' == jt(t, mn) && !zn && (Gn(t), !zn))
-            throw 'abort';
-    }
-    function Vn(t) {
-        if (t.get(vn)) {
-            var e = jt(t, un), n = jt(t, pn) || _(), r = ar('__utma', n, e);
-            r && (f(19), t.set(Ie, new Date().getTime(), !0), t.set(Ne, r.R), (e = ar('__utmz', n, e)) && r.hash == e.hash && t.set(Ee, e.R));
-        }
-    }
-    var Fn = function (t) {
-            var e = Y.performance || Y.webkitPerformance;
-            if (!(e = e && e.timing))
-                return !1;
-            var n = e.navigationStart;
-            return 0 != n && (t[fe] = e.loadEventStart - n, t[he] = e.domainLookupEnd - e.domainLookupStart, t[ve] = e.connectEnd - e.connectStart, t[pe] = e.responseStart - e.requestStart, t[ge] = e.responseEnd - e.responseStart, t[de] = e.fetchStart - n, t[me] = e.domInteractive - n, t[we] = e.domContentLoadedEventStart - n, t[ye] = Yr.L - n, t[be] = Yr.ya - n, Y.google_tag_manager && Y.google_tag_manager._li && (e = Y.google_tag_manager._li, t[_e] = e.cst, t[ke] = e.cbt), !0);
-        }, Hn = function (t) {
-            if (Y.top != Y)
-                return !1;
-            var e = Y.external, n = e && e.onloadT;
-            return e && !e.isValidLoadTime && (n = void 0), 2147483648 < n && (n = void 0), 0 < n && e.setPageReadyTime(), null != n && (t[fe] = n, !0);
-        }, Bn = function (t, e) {
-            var n = t[e];
-            (isNaN(n) || 1 / 0 == n || n < 0) && (t[e] = void 0);
-        }, zn = !1, Kn = function (t, e, n, r) {
-            var a = Wn(t, e);
-            if (a) {
-                n = jt(t, n);
-                var o = er(jt(t, fn)), i = Qn(jt(t, un)), s = jt(t, dn), c = jt(t, cn);
-                if ('auto' != i)
-                    L(n, a, o, i, c, r, s) && (zn = !0);
-                else {
-                    f(32);
-                    for (var l = tr(), u = 0; u < l.length; u++)
-                        if (i = l[u], t.data.set(un, i), L(n, a = Wn(t, e), o, i, c, r, s))
-                            return void (zn = !0);
-                    t.data.set(un, 'auto');
-                }
-            }
-        }, Xn = function (t) {
-            var e = R(jt(t, xn));
-            return Zn(t, e);
-        }, Wn = function (t, e) {
-            e = $(jt(t, e));
-            var n = Qn(jt(t, un)).split('.').length;
-            return 1 < (t = nr(jt(t, fn))) && (n += '-' + t), e ? ["GA1",n,e].join('.') : '';
-        }, Zn = function (t, e) {
-            return Yn(e, jt(t, un), jt(t, fn));
-        }, Yn = function (t, e, n) {
-            if (!t || t.length < 1)
-                f(12);
-            else {
-                for (var r = [], a = 0; a < t.length; a++) {
-                    var o = t[a], i = o.split('.'), s = i.shift();
-                    (i = ('GA1' == s || '1' == s) && 1 < i.length ? (1 == (o = i.shift().split('-')).length && (o[1] = '1'), o[0] *= 1, o[1] *= 1, {
-                        H: o,
-                        s: i.join('.')
-                    }) : l.test(o) ? {
-                        H: [0,0],
-                        s: o
-                    } : void 0) && r.push(i);
-                }
-                if (1 == r.length)
-                    return f(13), r[0].s;
-                if (0 != r.length)
-                    return f(14), 1 == (r = Jn(r, Qn(e).split('.').length, 0)).length ? r[0].s : (1 < (r = Jn(r, nr(n), 1)).length && f(41), r[0] && r[0].s);
-                f(12);
-            }
-        }, Jn = function (t, e, n) {
-            for (var r, a = [], o = [], i = 0; i < t.length; i++) {
-                var s = t[i];
-                s.H[n] == e ? a.push(s) : null == r || s.H[n] < r ? (o = [s], r = s.H[n]) : s.H[n] == r && o.push(s);
-            }
-            return 0 < a.length ? a : o;
-        }, Qn = function (t) {
-            return 0 == t.indexOf('.') ? t.substr(1) : t;
-        }, tr = function () {
-            var t = [], e = _().split('.');
-            if (4 == e.length) {
-                var n = e[e.length - 1];
-                if (parseInt(n, 10) == n)
-                    return ["none"];
-            }
-            for (n = e.length - 2; 0 <= n; n--)
-                t.push(e.slice(n).join('.'));
-            return e = J.location.hostname, nt.test(e) || et.test(e) || t.push('none'), t;
-        }, er = function (t) {
-            return t ? (1 < t.length && t.lastIndexOf('/') == t.length - 1 && (t = t.substr(0, t.length - 1)), 0 != t.indexOf('/') && (t = '/' + t), t) : '/';
-        }, nr = function (t) {
-            return '/' == (t = er(t)) ? 1 : t.split('/').length;
-        }, rr = function (t) {
-            t.ta && f(77), t.na && f(74), t.pa && f(73), t.ua && f(69);
-        };
-    function ar(t, e, n) {
-        'none' == e && (e = '');
-        var r = [], a = R(t);
-        t = '__utma' == t ? 6 : 2;
-        for (var o = 0; o < a.length; o++) {
-            var i = ('' + a[o]).split('.');
-            i.length >= t && r.push({
-                hash: i[0],
-                R: a[o],
-                O: i
-            });
-        }
-        if (0 != r.length)
-            return 1 != r.length && (or(e, r) || or(n, r) || or(null, r)) || r[0];
-    }
-    function or(t, e) {
-        if (null == t)
-            var n = t = 1;
-        else
-            n = s(t), t = s(C(t, '.') ? t.substring(1) : '.' + t);
-        for (var r = 0; r < e.length; r++)
-            if (e[r].hash == n || e[r].hash == t)
-                return e[r];
-    }
-    var ir = new RegExp(/^https?:\/\/([^\/:]+)/), sr = Y.google_tag_data.glBridge, cr = /(.*)([?&#])(?:_ga=[^&#]*)(?:&?)(.*)/, lr = /(.*)([?&#])(?:_gac=[^&#]*)(?:&?)(.*)/;
-    function ur(t, e) {
-        var n = new Date(), r = Y.navigator, a = r.plugins || [];
-        for (t = [t,r.userAgent,n.getTimezoneOffset(),n.getYear(),n.getDate(),n.getHours(),n.getMinutes()+e], e = 0; e < a.length; ++e)
-            t.push(a[e].description);
-        return s(t.join('.'));
-    }
-    function fr(t, e) {
-        var n = new Date(), r = Y.navigator, a = n.getHours() + Math.floor((n.getMinutes() + e) / 60);
-        return s([t,r.userAgent,r.language||"",n.getTimezoneOffset(),n.getYear(),n.getDate()+Math.floor(a/24),(24+a)%24,(60+n.getMinutes()+e)%60].join('.'));
-    }
-    function gr(t) {
-        f(48), this.target = t, this.T = !1;
-    }
-    gr.prototype.ca = function (t, e) {
-        if (t) {
-            if (this.target.get(Pe))
-                return sr.decorate(mr(this.target), t, e);
-            if (t.tagName) {
-                if ('a' == t.tagName.toLowerCase())
-                    return void (t.href && (t.href = hr(this, t.href, e)));
-                if ('form' == t.tagName.toLowerCase())
-                    return dr(this, t);
-            }
-            if ('string' == typeof t)
-                return hr(this, t, e);
-        }
-    };
-    var hr = function (t, e, n) {
-            var r = cr.exec(e);
-            r && 3 <= r.length && (e = r[1] + (r[3] ? r[2] + r[3] : '')), (r = lr.exec(e)) && 3 <= r.length && (e = r[1] + (r[3] ? r[2] + r[3] : '')), t = t.target.get('linkerParam');
-            var a = e.indexOf('?');
-            return r = e.indexOf('#'), n ? e += (-1 == r ? '#' : '&') + t : (n = -1 == a ? '?' : '&', e = -1 == r ? e + (n + t) : e.substring(0, r) + n + t + e.substring(r)), (e = e.replace(/&+_ga=/, '&_ga=')).replace(/&+_gac=/, '&_gac=');
-        }, dr = function (t, e) {
-            if (e && e.action)
-                if ('get' == e.method.toLowerCase()) {
-                    t = t.target.get('linkerParam').split('&');
-                    for (var n = 0; n < t.length; n++) {
-                        var r = t[n].split('='), a = r[1];
-                        r = r[0];
-                        for (var o = e.childNodes || [], i = !1, s = 0; s < o.length; s++)
-                            if (o[s].name == r) {
-                                o[s].setAttribute('value', a), i = !0;
-                                break;
-                            }
-                        i || ((o = J.createElement('input')).setAttribute('type', 'hidden'), o.setAttribute('name', r), o.setAttribute('value', a), e.appendChild(o));
-                    }
-                } else
-                    'post' == e.method.toLowerCase() && (e.action = hr(t, e.action));
-        };
-    function pr(t, e) {
-        if (e != J.location.hostname)
-            for (var n = 0; n < t.length; n++)
-                if (t[n] instanceof RegExp) {
-                    if (t[n].test(e))
-                        return 1;
-                } else if (0 <= e.indexOf(t[n]))
-                    return 1;
-    }
-    function vr(t, e) {
-        return e != ur(t, 0) && e != ur(t, -1) && e != ur(t, -2) && e != fr(t, 0) && e != fr(t, -1) && e != fr(t, -2);
-    }
-    function mr(t) {
-        var e = wr(t);
-        return {
-            _ga: t.get(rn),
-            _gid: t.get(On) || void 0,
-            _gac: e ? [e.qa,e.timestamp].join('.') : void 0
-        };
-    }
-    function wr(t) {
-        function e(t) {
-            return null == t || '' === t ? 0 : Number(t);
-        }
-        var n = t.get(Tn);
-        if (n && t.get(Nn)) {
-            var r = e(t.get(Cn));
-            if (!(1000 * r + e(t.get(jn)) <= new Date().getTime()))
-                return {
-                    timestamp: r,
-                    qa: n
-                };
-            f(76);
-        }
-    }
-    function yr(t, e, n) {
-        this.aa = e, (e = n) || (e = (e = jt(t, nn)) && 't0' != e ? Ir.test(e) ? '_gat_' + $(jt(t, cn)) : '_gat_' + $(e) : '_gat'), this.Y = e, this.ra = null;
-    }
-    function br(t, e) {
-        if (!(t = t.b).get('dcLoaded')) {
-            var n, r = new a(S(t));
-            r.set(29), t.set(Ue, r.w), (e = e || {})[ln] && (n = $(e[ln])), function (r, t) {
-                var n = t.get(We);
-                t.set(We, function (t) {
-                    Cr(r, t, De), Cr(r, t, Ge);
-                    var e = n(t);
-                    return jr(r, t), e;
-                });
-                var a = t.get(Ze);
-                t.set(Ze, function (t) {
-                    var e = a(t);
-                    if (Ar(t)) {
-                        if (P() !== Er(r, t)) {
-                            f(80);
-                            var n = {
-                                U: Nr(r, t, 1),
-                                google: Nr(r, t, 2),
-                                count: 0
-                            };
-                            G('https://stats.g.doubleclick.net/j/collect', n.U, n);
-                        } else
-                            v(Nr(r, t, 0));
-                        t.set(De, '', !0);
-                    }
-                    return e;
-                });
-            }(e = new yr(t, 'https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&', n), t), t.set('dcLoaded', !0);
-        }
-    }
-    function _r(t) {
-        if (!t.get('dcLoaded') && 'cookie' == t.get(mn)) {
-            var e = new yr(t);
-            if (Cr(e, t, De), Cr(e, t, Ge), jr(e, t), Ar(t)) {
-                var n = P() !== Er(e, t);
-                t.set(Rn, 1, !0), n ? (f(79), t.set($n, 'd', !0), t.set(Ln, {
-                    U: Nr(e, t, 1),
-                    google: Nr(e, t, 2),
-                    count: 0
-                }, !0)) : t.set($n, 'b', !0);
-            }
-        }
-    }
-    function kr(t) {
-        function n(t, e) {
-            i.b.data.set(t, e);
-        }
-        function e(t, e) {
-            n(t, e), i.filters.add(t);
-        }
-        var r, a, o, i = this;
-        this.b = new Ct(), this.filters = new F(), n(nn, t[nn]), n(cn, (r = t[cn]) ? r.replace(/^[\s\xa0]+|[\s\xa0]+$/g, '') : ''), n(ln, t[ln]), n(un, t[un] || _()), n(fn, t[fn]), n(gn, t[gn]), n(hn, t[hn]), n(dn, t[dn]), n(pn, t[pn]), n(vn, t[vn]), n(wn, t[wn]), n(yn, t[yn]), n(bn, t[bn]), n(_n, t[_n]), n(kn, t[kn]), n(mn, t[mn]), n(sn, t[sn]), n(an, t[an]), n(Sn, t[Sn]), n(Nn, t[Nn]), n(Pe, t[Pe]), n(En, t[En]), n(Dt, 1), n(Gt, 'j81'), e(qe, vt), e(en, m), e(Ve, _t), e(Fe, mt), e(He, Ot), e(Be, qn), e(ze, Vn), e(Ke, pt), e(Xe, Tt), e(Ye, bt), e(Je, kt), e(tn, _r), e(We, wt), e(Ze, yt), e(Qe, (o = this, function (t) {
-            if ('pageview' == t.get(Vt) && !o.I) {
-                o.I = !0;
-                var e = (r = t, a = Math.min(At(r, _n), 100), !(s(jt(r, rn)) % 100 >= a)), n = 0 < N(jt(t, Xt), 'gclid').length;
-                (e || n) && function t(e) {
-                    var n = {};
-                    if (Fn(n) || Hn(n)) {
-                        var r = n[fe];
-                        null == r || 1 / 0 == r || isNaN(r) || (0 < r ? (Bn(n, he), Bn(n, ve), Bn(n, pe), Bn(n, ge), Bn(n, de), Bn(n, me), Bn(n, we), Bn(n, ye), Bn(n, be), Bn(n, _e), Bn(n, ke), E(function () {
-                            e(n);
-                        }, 10)) : y(Y, 'load', function () {
-                            t(e);
-                        }, !1));
-                    }
-                }(function (t) {
-                    e && o.send('timing', t), n && o.send('adtiming', t);
-                });
-            }
-            var r, a;
-        })), function (t) {
-            var e = Y.navigator, n = Y.screen, r = J.location;
-            if (t.set(Wt, function (t, e) {
-                    var n = J.referrer;
-                    if (/^(https?|android-app):\/\//i.test(n)) {
-                        if (t)
-                            return n;
-                        if (t = '//' + J.location.hostname, !k(n, t))
-                            return e && (e = t.replace(/\./g, '-') + '.cdn.ampproject.org', k(n, e)) ? void 0 : n;
-                    }
-                }(!!t.get(kn), !!t.get(Sn))), r) {
-                var a = r.pathname || '';
-                '/' != a.charAt(0) && (f(31), a = '/' + a), t.set(Xt, r.protocol + '//' + r.hostname + a + r.search);
-            }
-            n && t.set(te, n.width + 'x' + n.height), n && t.set(Qt, n.colorDepth + '-bit'), n = J.documentElement;
-            var o = (a = J.body) && a.clientWidth && a.clientHeight, i = [];
-            if (n && n.clientWidth && n.clientHeight && ('CSS1Compat' === J.compatMode || !o) ? i = [n.clientWidth,n.clientHeight] : o && (i = [a.clientWidth,a.clientHeight]), n = i[0] <= 0 || i[1] <= 0 ? '' : i.join('x'), t.set(ee, n), t.set(re, function () {
-                    var t, e;
-                    if ((e = (e = Y.navigator) ? e.plugins : null) && e.length)
-                        for (var n = 0; n < e.length && !t; n++) {
-                            var r = e[n];
-                            -1 < r.name.indexOf('Shockwave Flash') && (t = r.description);
-                        }
-                    if (!t)
-                        try {
-                            var a = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.7');
-                            t = a.GetVariable('$version');
-                        } catch (t) {
-                        }
-                    if (!t)
-                        try {
-                            a = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6'), t = 'WIN 6,0,21,0', a.AllowScriptAccess = 'always', t = a.GetVariable('$version');
-                        } catch (t) {
-                        }
-                    if (!t)
-                        try {
-                            t = (a = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')).GetVariable('$version');
-                        } catch (t) {
-                        }
-                    return t && (a = t.match(/[\d]+/g)) && 3 <= a.length && (t = a[0] + '.' + a[1] + ' r' + a[2]), t || void 0;
-                }()), t.set(Jt, J.characterSet || J.charset), t.set(ne, e && 'function' == typeof e.javaEnabled && e.javaEnabled() || !1), t.set(Yt, (e && (e.language || e.browserLanguage) || '').toLowerCase()), t.data.set(Tn, b('gclid', !0)), t.data.set(An, b('gclsrc', !0)), t.data.set(Cn, Math.round(new Date().getTime() / 1000)), r && t.get(yn) && (e = J.location.hash)) {
-                for (e = e.split(/[?&#]+/), r = [], n = 0; n < e.length; ++n) {
-                    (C(e[n], 'utm_id') || C(e[n], 'utm_campaign') || C(e[n], 'utm_source') || C(e[n], 'utm_medium') || C(e[n], 'utm_term') || C(e[n], 'utm_content') || C(e[n], 'gclid') || C(e[n], 'dclid') || C(e[n], 'gclsrc')) && r.push(e[n]);
-                }
-                0 < r.length && (e = '#' + r.join('&'), t.set(Xt, t.get(Xt) + e));
-            }
-        }(this.b), function (t, e) {
-            var n = jt(t, ln);
-            if (t.data.set(xn, '_ga' == n ? '_gid' : n + '_gid'), 'cookie' == jt(t, mn)) {
-                if (zn = !1, n = R(jt(t, ln)), !(n = Zn(t, n))) {
-                    n = jt(t, un);
-                    var r = jt(t, pn) || _();
-                    n = null != (n = ar('__utma', r, n)) ? (f(10), n.O[1] + '.' + n.O[2]) : void 0;
-                }
-                if (n && (zn = !0), r = n && !t.get(hn))
-                    if (2 != (r = n.split('.')).length)
-                        r = !1;
-                    else if (r = Number(r[1])) {
-                        var a = At(t, gn);
-                        r = r + a < new Date().getTime() / 1000;
-                    } else
-                        r = !1;
-                if (r && (n = void 0), n && (t.data.set(on, n), t.data.set(rn, n), (n = Xn(t)) && t.data.set(On, n)), t.get(Nn) && (n = t.get(Tn), r = t.get(An), !n || r && 'aw.ds' != r)) {
-                    if (n = {}, J) {
-                        r = [], a = J.cookie.split(';');
-                        for (var o = /^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/, i = 0; i < a.length; i++) {
-                            var s = a[i].match(o);
-                            s && r.push({
-                                ja: s[1],
-                                value: s[2]
-                            });
-                        }
-                        if (a = {}, r && r.length)
-                            for (o = 0; o < r.length; o++) {
-                                '1' != (i = r[o].value.split('.'))[0] || 3 != i.length ? n && (n.na = !0) : i[1] && (a[r[o].ja] ? n && (n.pa = !0) : a[r[o].ja] = [], a[r[o].ja].push({
-                                    timestamp: i[1],
-                                    qa: i[2]
-                                }));
-                            }
-                        r = a;
-                    } else
-                        r = {};
-                    r = r[jt(t, cn)], rr(n), r && 0 != r.length && (n = r[0], t.data.set(Cn, n.timestamp), t.data.set(Tn, n.qa));
-                }
-            }
-            if (t.get(hn) && (n = b('_ga', !!t.get(yn)), o = b('_gl', !!t.get(yn)), a = (r = sr.get(t.get(yn)))._ga, o && 0 < o.indexOf('_ga*') && !a && f(30), o = r.gclid, i = r._gac, n || a || o || i))
-                if (n && a && f(36), t.get(wn) || B(t.get(Sn))) {
-                    if (a && (f(38), t.data.set(rn, a), r._gid && (f(51), t.data.set(On, r._gid))), o ? (f(82), t.data.set(Tn, o), r.gclsrc && t.data.set(An, r.gclsrc)) : i && (r = i.split('.')) && 2 === r.length && (f(37), t.data.set(Tn, r[0]), t.data.set(Cn, r[1])), n)
-                        t:
-                            if (r = n.indexOf('.'), -1 == r)
-                                f(22);
-                            else {
-                                if (a = n.substring(0, r), r = (o = n.substring(r + 1)).indexOf('.'), n = o.substring(0, r), o = o.substring(r + 1), '1' == a) {
-                                    if (vr(r = o, n)) {
-                                        f(23);
-                                        break t;
-                                    }
-                                } else {
-                                    if ('2' != a) {
-                                        f(22);
-                                        break t;
-                                    }
-                                    if (a = '', r = 0 < (r = o.indexOf('-')) ? (a = o.substring(0, r), o.substring(r + 1)) : o.substring(1), vr(a + r, n)) {
-                                        f(53);
-                                        break t;
-                                    }
-                                    a && (f(2), t.data.set(On, a));
-                                }
-                                f(11), t.data.set(rn, r), (n = b('_gac', !!t.get(yn))) && ('1' != (n = n.split('.'))[0] || 4 != n.length ? f(72) : vr(n[3], n[1]) ? f(71) : (t.data.set(Tn, n[3]), t.data.set(Cn, n[2]), f(70)));
-                            }
-                } else
-                    f(21);
-            e && (f(9), t.data.set(rn, w(e))), t.get(rn) || ((e = (e = Y.gaGlobal && Y.gaGlobal.vid) && -1 != e.search(c) ? e : void 0) ? (f(17), t.data.set(rn, e)) : (f(8), t.data.set(rn, p()))), t.get(On) || (f(3), t.data.set(On, p())), Gn(t);
-        }(this.b, t[rn]), this.b.set(qt, (a = Y.gaGlobal = Y.gaGlobal || {}).hid = a.hid || St());
-    }
-    gr.prototype.S = function (r, a, t) {
-        function e(t) {
-            try {
-                t = t || Y.event;
-                t: {
-                    var e = t.target || t.srcElement;
-                    for (t = 100; e && 0 < t;) {
-                        if (e.href && e.nodeName.match(/^a(?:rea)?$/i)) {
-                            var n = e;
-                            break t;
-                        }
-                        e = e.parentNode, t--;
-                    }
-                    n = {};
-                }
-                ('http:' == n.protocol || 'https:' == n.protocol) && pr(r, n.hostname || '') && n.href && (n.href = hr(o, n.href, a));
-            } catch (t) {
-                f(26);
-            }
-        }
-        var o = this;
-        this.target.get(Pe) ? sr.auto(function () {
-            return mr(o.target);
-        }, r, a ? 'fragment' : '', t) : (this.T || (this.T = !0, y(J, 'mousedown', e, !1), y(J, 'keyup', e, !1)), t && y(J, 'submit', function (t) {
-            if ((t = (t = t || Y.event).target || t.srcElement) && t.action) {
-                var e = t.action.match(ir);
-                e && pr(r, e[1]) && dr(o, t);
-            }
-        }));
-    };
-    var Or = /^(GTM|OPT)-[A-Z0-9]+$/, xr = /;_gaexp=[^;]*/g, Sr = /;((__utma=)|([^;=]+=GAX?\d+\.))[^;]*/g, Tr = /^https?:\/\/[\w\-.]+\.google.com(:\d+)?\/optimize\/opt-launch\.html\?.*$/, Cr = function (t, e, n) {
-            !1 === e.get(Pn) || e.get(n) || ('1' == R(t.Y)[0] ? e.set(n, '', !0) : e.set(n, '' + St(), !0));
-        }, jr = function (t, e) {
-            Ar(e) && L(t.Y, '1', jt(e, fn), jt(e, un), jt(e, cn), 60000, jt(e, dn));
-        }, Ar = function (t) {
-            return !!t.get(De) && !1 !== t.get(Pn);
-        }, Nr = function (t, e, n) {
-            function r(t) {
-                Ut(t).F && a.set(Ut(t).F, e.get(t));
-            }
-            var a = new x();
-            r(Dt), r(Gt), r(cn), r(rn), r(De), 0 != n && 1 != n || (r(sn), r(Ge), r(On)), a.set(Ut(Me).F, g(e));
-            var o = '';
-            return a.map(function (t, e) {
-                o += w(t) + '=', o += w('' + e) + '&';
-            }), o += 'z=' + St(), 0 == n ? o = t.aa + o : 1 == n ? o = 't=dc&aip=1&_r=3&' + o : 2 == n && (o = 't=sr&aip=1&_r=4&slf_rd=1&' + o), o;
-        }, Er = function (t, e) {
-            return null === t.ra && (t.ra = 1 === function (t) {
-                var e, n = new Dn();
-                if (n.fa && n.$)
-                    return 0;
-                if (n.$ = !0, t) {
-                    if (n.oa && void 0 !== t.get(n.oa))
-                        return At(t, n.oa);
-                    if (0 == t.get(_n))
-                        return 0;
-                }
-                return 0 == n.V ? 0 : (void 0 === e && (e = xt()), 0 == e % n.V ? Math.floor(e / n.V) % n.groups + 1 : 0);
-            }(e), t.ra && f(33)), t.ra;
-        }, Ir = /^gtm\d+$/, Rr = /^(UA|YT|MO|GP)-(\d+)-(\d+)$/;
-    kr.prototype.get = function (t) {
-        return this.b.get(t);
-    }, kr.prototype.set = function (t, e) {
-        this.b.set(t, e);
-    };
-    var Lr = {
-        pageview: [Zt],
-        event: [ae,oe,ie,se],
-        social: [ce,le,ue],
-        timing: [Oe,xe,Te,Se]
-    };
-    function $r(t) {
-        return 'prerender' != J.visibilityState && (t(), 1);
-    }
-    function Pr(r) {
-        if (!$r(r)) {
-            f(16);
-            var a = !1;
-            y(J, 'visibilitychange', function t() {
-                if (!a && $r(r)) {
-                    a = !0;
-                    var e = t, n = J;
-                    n.removeEventListener ? n.removeEventListener('visibilitychange', e, !1) : n.detachEvent && n.detachEvent('onvisibilitychange', e);
-                }
-            });
-        }
-    }
-    function Mr(t) {
-        if (h(t[0]))
-            this.u = t[0];
-        else {
-            var e = Vr.exec(t[0]);
-            if (null != e && 4 == e.length && (this.c = e[1] || 't0', this.K = e[2] || '', this.methodName = e[3], this.a = [].slice.call(t, 1), this.K || (this.A = 'create' == this.methodName, this.i = 'require' == this.methodName, this.g = 'provide' == this.methodName, this.ba = 'remove' == this.methodName), this.i && (3 <= this.a.length ? (this.X = this.a[1], this.W = this.a[2]) : this.a[1] && (d(this.a[1]) ? this.X = this.a[1] : this.W = this.a[1]))), e = t[1], t = t[2], !this.methodName)
-                throw 'abort';
-            if (this.i && (!d(e) || '' == e))
-                throw 'abort';
-            if (this.g && (!d(e) || '' == e || !h(t)))
-                throw 'abort';
-            if (Fr(this.c) || Fr(this.K))
-                throw 'abort';
-            if (this.g && 't0' != this.c)
-                throw 'abort';
-        }
-    }
-    kr.prototype.send = function (t) {
-        if (!(arguments.length < 1)) {
-            if ('string' == typeof t)
-                var e = t, n = [].slice.call(arguments, 1);
-            else
-                e = t && t[Vt], n = arguments;
-            e && ((n = O(Lr[e] || [], n))[Vt] = e, this.b.set(n, void 0, !0), this.filters.D(this.b), this.b.data.m = {});
-        }
-    }, kr.prototype.ma = function (t, e) {
-        var n = this;
-        Br(t, n, e) || (Kr(t, function () {
-            Br(t, n, e);
-        }), zr(String(n.get(nn)), t, void 0, e, !0));
-    };
-    var Ur, Dr, Gr, qr, Vr = /^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/;
-    function Fr(t) {
-        return 0 <= t.indexOf('.') || 0 <= t.indexOf(':');
-    }
-    function Hr(t, e) {
-        Ur.set(t, e), e = qr.get(t) || [];
-        for (var n = 0; n < e.length; n++)
-            e[n]();
-        qr.set(t, []);
-    }
-    Ur = new x(), Gr = new x(), qr = new x(), Dr = {
-        ec: 45,
-        ecommerce: 46,
-        linkid: 47
-    };
-    var Br = function (t, e, n) {
-            e == Yr || e.get(nn);
-            var r = Ur.get(t);
-            return !!h(r) && (e.plugins_ = e.plugins_ || new x(), e.plugins_.get(t) || e.plugins_.set(t, new r(e, n || {})), !0);
-        }, zr = function (t, e, n, r, a) {
-            if (!h(Ur.get(e)) && !Gr.get(e)) {
-                if (Dr.hasOwnProperty(e) && f(Dr[e]), t = Yr.j(t), Or.test(e)) {
-                    if (f(52), !t)
-                        return !0;
-                    r = {
-                        id: e,
-                        B: (n = r || {}).dataLayer || 'dataLayer',
-                        ia: !!t.get('anonymizeIp'),
-                        sync: a,
-                        G: !1
-                    }, t.get('&gtm') == e && (r.G = !0);
-                    var o = String(t.get('name'));
-                    't0' != o && (r.target = o), I(String(t.get('trackingId'))) || (r.clientId = String(t.get(rn)), r.ka = Number(t.get(an)), n = n.palindrome ? Sr : xr, n = (n = J.cookie.replace(/^|(; +)/g, ';').match(n)) ? n.sort().join('').substring(1) : void 0, r.la = n, r.qa = N(t.b.get(Xt) || '', 'gclid')), n = r.B, o = new Date().getTime(), Y[n] = Y[n] || [], o = { 'gtm.start': o }, a || (o.event = 'gtm.js'), Y[n].push(o), l = 'https://www.google-analytics.com/gtm/js?id=' + w((c = r).id), 'dataLayer' != c.B && s('l', c.B), s('t', c.target), s('cid', c.clientId), s('cidt', c.ka), s('gac', c.la), s('aip', c.ia), c.sync && s('m', 'sync'), s('cycle', c.G), c.qa && s('gclid', c.qa), Tr.test(J.referrer) && s('cb', String(St())), n = l;
-                }
-                if (!n && Dr.hasOwnProperty(e) ? (f(39), n = e + '.js') : f(43), n) {
-                    if (t) {
-                        var i = t.get(En);
-                        d(i) || (i = void 0);
-                    }
-                    n && 0 <= n.indexOf('/') || (n = (i ? i + '/34' : M(!1) + '/plugins/ua/') + n), t = (i = Wr(n)).protocol, r = J.location.protocol, ('https:' == t || t == r || 'http:' == t && 'http:' == r) && Xr(i) && ((i = i.url) && (t = (t = J.querySelector && J.querySelector('script[nonce]') || null) && (t.nonce || t.getAttribute && t.getAttribute('nonce')) || '', a ? (a = '', t && A.test(t) && (a = ' nonce="' + t + '"'), j.test(i) && J.write('<script' + a + ' src="' + i + '"></script>')) : ((a = J.createElement('script')).type = 'text/javascript', a.async = !0, a.src = i, t && a.setAttribute('nonce', t), (i = J.getElementsByTagName('script')[0]).parentNode.insertBefore(a, i))), Gr.set(e, !0));
-                }
-            }
-            function s(t, e) {
-                e && (l += '&' + t + '=' + w(e));
-            }
-            var c, l;
-        }, Kr = function (t, e) {
-            var n = qr.get(t) || [];
-            n.push(e), qr.set(t, n);
-        }, Xr = function (t) {
-            var e = Wr(J.location.href);
-            return !(!C(t.url, 'https://www.google-analytics.com/gtm/js?id=') && (t.query || 0 <= t.url.indexOf('?') || 0 <= t.path.indexOf('://') || (t.host != e.host || t.port != e.port) && (e = 'http:' == t.protocol ? 80 : 443, 'www.google-analytics.com' != t.host || (t.port || e) != e || !C(t.path, '/plugins/'))));
-        }, Wr = function (t) {
-            function e(t) {
-                var e = t.hostname || '', n = 0 <= e.indexOf(']');
-                return e = e.split(n ? ']' : ':')[0].toLowerCase(), n && (e += ']'), n = (t.protocol || '').toLowerCase(), n = +t.port || ('http:' == n ? 80 : 'https:' == n ? 443 : ''), t = t.pathname || '', C(t, '/') || (t = '/' + t), [e,""+n,t];
-            }
-            var n = J.createElement('a');
-            n.href = J.location.href;
-            var r = (n.protocol || '').toLowerCase(), a = e(n), o = n.search || '', i = r + '//' + a[0] + (a[1] ? ':' + a[1] : '');
-            return C(t, '//') ? t = r + t : C(t, '/') ? t = i + t : !t || C(t, '?') ? t = i + a[2] + (t || o) : t.split('/')[0].indexOf(':') < 0 && (t = i + a[2].substring(0, a[2].lastIndexOf('/')) + '/' + t), n.href = t, r = e(n), {
-                protocol: (n.protocol || '').toLowerCase(),
-                host: r[0],
-                port: r[1],
-                path: r[2],
-                query: n.search || '',
-                url: t || ''
-            };
-        }, Zr = {
-            ga: function () {
-                Zr.f = [];
-            }
-        };
-    Zr.ga(), Zr.D = function (t) {
-        var e = Zr.J.apply(Zr, arguments);
-        for (e = Zr.f.concat(e), Zr.f = []; 0 < e.length && !Zr.v(e[0]) && (e.shift(), !(0 < Zr.f.length)););
-        Zr.f = Zr.f.concat(e);
-    }, Zr.J = function (t) {
-        for (var e = [], n = 0; n < arguments.length; n++)
-            try {
-                var r = new Mr(arguments[n]);
-                r.g ? Hr(r.a[0], r.a[1]) : (r.i && (r.ha = zr(r.c, r.a[0], r.X, r.W)), e.push(r));
-            } catch (t) {
-            }
-        return e;
-    }, Zr.v = function (t) {
-        try {
-            if (t.u)
-                t.u.call(Y, Yr.j('t0'));
-            else {
-                var e = t.c == o ? Yr : Yr.j(t.c);
-                if (t.A) {
-                    if ('t0' == t.c && null === (e = Yr.create.apply(Yr, t.a)))
-                        return !0;
-                } else if (t.ba)
-                    Yr.remove(t.c);
-                else if (e)
-                    if (t.i) {
-                        if (t.ha && (t.ha = zr(t.c, t.a[0], t.X, t.W)), !Br(t.a[0], e, t.W))
-                            return !0;
-                    } else if (t.K) {
-                        var n = t.methodName, r = t.a, a = e.plugins_.get(t.K);
-                        a[n].apply(a, r);
-                    } else
-                        e[t.methodName].apply(e, t.a);
-            }
-        } catch (t) {
-        }
-    };
-    var Yr = function (t) {
-        f(1), Zr.D.apply(Zr, [arguments]);
-    };
-    Yr.h = {}, Yr.P = [], Yr.L = 0, Yr.ya = 0, Yr.answer = 42;
-    var Jr = [cn,un,nn];
-    Yr.create = function (t) {
-        var e = O(Jr, [].slice.call(arguments));
-        e[nn] || (e[nn] = 't0');
-        var n = '' + e[nn];
-        if (Yr.h[n])
-            return Yr.h[n];
-        if (function (t) {
-                var e;
-                if (B(t[Sn]) && (void 0 === Z && (e = (e = sr.get()) && e._ga || void 0) && (Z = e, f(81)), void 0 !== Z))
-                    return t[rn] || (t[rn] = Z), 0;
-                if (t[Sn]) {
-                    if (f(67), t[mn] && 'cookie' != t[mn])
-                        return;
-                    if (void 0 !== Z)
-                        t[rn] || (t[rn] = Z);
-                    else {
-                        t: {
-                            e = String(t[un] || _());
-                            var n = String(t[fn] || '/'), r = R(String(t[ln] || '_ga'));
-                            if (!(e = Yn(r, e, n)) || c.test(e))
-                                e = !0;
-                            else if (0 == (e = R('AMP_TOKEN')).length)
-                                e = !0;
-                            else {
-                                if (1 == e.length && ('$RETRIEVING' == (e = decodeURIComponent(e[0])) || '$OPT_OUT' == e || '$ERROR' == e || '$NOT_FOUND' == e)) {
-                                    e = !0;
-                                    break t;
-                                }
-                                e = !1;
-                            }
-                        }
-                        if (e && function t(e, n) {
-                                var r = R('AMP_TOKEN');
-                                return 1 < r.length ? (f(55), !1) : '$OPT_OUT' == (r = decodeURIComponent(r[0] || '')) || '$ERROR' == r || I(n) ? (f(62), !1) : at.test(J.referrer) || '$NOT_FOUND' != r ? void 0 !== Z ? (f(56), E(function () {
-                                    e(Z);
-                                }, 0), !0) : K ? (it.push(e), !0) : '$RETRIEVING' == r ? (f(57), E(function () {
-                                    t(e, n);
-                                }, 10000), !0) : (K = !0, r && '$' != r[0] || (lt('$RETRIEVING', 30000), setTimeout(ct, 30000), r = ''), !!st(r, n) && (it.push(e), !0)) : (f(68), !1);
-                            }(H, String(t[cn])))
-                            return 1;
-                    }
-                }
-            }(e))
-            return null;
-        if (e = new kr(e), Yr.h[n] = e, Yr.P.push(e), h(n = q().tracker_created))
-            try {
-                n(e);
-            } catch (t) {
-            }
-        return e;
-    }, Yr.remove = function (t) {
-        for (var e = 0; e < Yr.P.length; e++)
-            if (Yr.P[e].get(nn) == t) {
-                Yr.P.splice(e, 1), Yr.h[t] = null;
-                break;
-            }
-    }, Yr.j = function (t) {
-        return Yr.h[t];
-    }, Yr.getAll = function () {
-        return Yr.P.slice(0);
-    }, Yr.N = function () {
-        'ga' != o && f(49);
-        var t = Y[o];
-        if (!t || 42 != t.answer) {
-            Yr.L = t && t.l, Yr.ya = +new Date(), Yr.loaded = !0;
-            var e = Y[o] = Yr;
-            if (Un('create', e, e.create), Un('remove', e, e.remove), Un('getByName', e, e.j, 5), Un('getAll', e, e.getAll, 6), Un('get', e = kr.prototype, e.get, 7), Un('set', e, e.set, 4), Un('send', e, e.send), Un('requireSync', e, e.ma), Un('get', e = Ct.prototype, e.get), Un('set', e, e.set), 'https:' != J.location.protocol && !i) {
-                t: {
-                    e = J.getElementsByTagName('script');
-                    for (var n = 0; n < e.length && n < 100; n++) {
-                        var r = e[n].src;
-                        if (r && 0 == r.indexOf(M(!0) + '/analytics')) {
-                            e = !0;
-                            break t;
-                        }
-                    }
-                    e = !1;
-                }
-                e && (i = !0);
-            }
-            e = ((Y.gaplugins = Y.gaplugins || {}).Linker = gr).prototype, Hr('linker', gr), Un('decorate', e, e.ca, 20), Un('autoLink', e, e.S, 25), Hr('displayfeatures', br), Hr('adfeatures', br), t = t && t.q, T(t) ? Zr.D.apply(Yr, t) : f(50);
-        }
-    }, Yr.da = function () {
-        for (var t = Yr.getAll(), e = 0; e < t.length; e++)
-            t[e].get(nn);
-    };
-    var Qr = Yr.N, ta = Y[o];
-    ta && ta.r ? Qr() : Pr(Qr), Pr(function () {
-        Zr.D(["provide","render",m]);
-    });
-}(window);
+(function(){/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+var m=this||self,n=function(a,b){a=a.split(".");var c=m;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}:c[d]=b};var p=function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])},q=function(a){for(var b in a)if(a.hasOwnProperty(b))return!0;return!1};var r=window,t=document,u=function(a,b){t.addEventListener?t.addEventListener(a,b,!1):t.attachEvent&&t.attachEvent("on"+a,b)};var v=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;var w={},x=function(){w.TAGGING=w.TAGGING||[];w.TAGGING[1]=!0};var y=/:[0-9]+$/,A=function(a,b){b&&(b=String(b).toLowerCase());if("protocol"===b||"port"===b)a.protocol=z(a.protocol)||z(r.location.protocol);"port"===b?a.port=String(Number(a.hostname?a.port:r.location.port)||("http"==a.protocol?80:"https"==a.protocol?443:"")):"host"===b&&(a.hostname=(a.hostname||r.location.hostname).replace(y,"").toLowerCase());var c=z(a.protocol);b&&(b=String(b).toLowerCase());switch(b){case "url_no_fragment":b="";a&&a.href&&(b=a.href.indexOf("#"),b=0>b?a.href:a.href.substr(0,
+b));a=b;break;case "protocol":a=c;break;case "host":a=a.hostname.replace(y,"").toLowerCase();break;case "port":a=String(Number(a.port)||("http"==c?80:"https"==c?443:""));break;case "path":a.pathname||a.hostname||x();a="/"==a.pathname.substr(0,1)?a.pathname:"/"+a.pathname;a=a.split("/");a:if(b=a[a.length-1],c=[],Array.prototype.indexOf)b=c.indexOf(b),b="number"==typeof b?b:-1;else{for(var d=0;d<c.length;d++)if(c[d]===b){b=d;break a}b=-1}0<=b&&(a[a.length-1]="");a=a.join("/");break;case "query":a=a.search.replace("?",
+"");break;case "extension":a=a.pathname.split(".");a=1<a.length?a[a.length-1]:"";a=a.split("/")[0];break;case "fragment":a=a.hash.replace("#","");break;default:a=a&&a.href}return a},z=function(a){return a?a.replace(":","").toLowerCase():""},B=function(a){var b=t.createElement("a");a&&(b.href=a);var c=b.pathname;"/"!==c[0]&&(a||x(),c="/"+c);a=b.hostname.replace(y,"");return{href:b.href,protocol:b.protocol,host:b.host,hostname:a,pathname:c,search:b.search,hash:b.hash,port:b.port}};function C(){for(var a=D,b={},c=0;c<a.length;++c)b[a[c]]=c;return b}function E(){var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ";a+=a.toLowerCase()+"0123456789-_";return a+"."}var D,F;function G(a){D=D||E();F=F||C();for(var b=[],c=0;c<a.length;c+=3){var d=c+1<a.length,f=c+2<a.length,e=a.charCodeAt(c),g=d?a.charCodeAt(c+1):0,h=f?a.charCodeAt(c+2):0,k=e>>2;e=(e&3)<<4|g>>4;g=(g&15)<<2|h>>6;h&=63;f||(h=64,d||(g=64));b.push(D[k],D[e],D[g],D[h])}return b.join("")}
+function H(a){function b(k){for(;d<a.length;){var l=a.charAt(d++),M=F[l];if(null!=M)return M;if(!/^[\s\xa0]*$/.test(l))throw Error("Unknown base64 encoding at char: "+l);}return k}D=D||E();F=F||C();for(var c="",d=0;;){var f=b(-1),e=b(0),g=b(64),h=b(64);if(64===h&&-1===f)return c;c+=String.fromCharCode(f<<2|e>>4);64!=g&&(c+=String.fromCharCode(e<<4&240|g>>2),64!=h&&(c+=String.fromCharCode(g<<6&192|h)))}};var I;var N=function(){var a=J,b=K,c=L(),d=function(g){a(g.target||g.srcElement||{})},f=function(g){b(g.target||g.srcElement||{})};if(!c.init){u("mousedown",d);u("keyup",d);u("submit",f);var e=HTMLFormElement.prototype.submit;HTMLFormElement.prototype.submit=function(){b(this);e.call(this)};c.init=!0}},O=function(a,b,c){for(var d=L().decorators,f={},e=0;e<d.length;++e){var g=d[e],h;if(h=!c||g.forms)a:{h=g.domains;var k=a;if(h&&(g.sameHost||k!==t.location.hostname))for(var l=0;l<h.length;l++)if(h[l]instanceof
+RegExp){if(h[l].test(k)){h=!0;break a}}else if(0<=k.indexOf(h[l])){h=!0;break a}h=!1}h&&(h=g.placement,void 0==h&&(h=g.fragment?2:1),h===b&&p(f,g.callback()))}return f},L=function(){var a={};var b=r.google_tag_data;r.google_tag_data=void 0===b?a:b;a=r.google_tag_data;b=a.gl;b&&b.decorators||(b={decorators:[]},a.gl=b);return b};var P=/(.*?)\*(.*?)\*(.*)/,aa=/([^?#]+)(\?[^#]*)?(#.*)?/;function Q(a){return new RegExp("(.*?)(^|&)"+a+"=([^&]*)&?(.*)")}
+var S=function(a){var b=[],c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];void 0!==d&&d===d&&null!==d&&"[object Object]"!==d.toString()&&(b.push(c),b.push(G(String(d))))}a=b.join("*");return["1",R(a),a].join("*")},R=function(a,b){a=[window.navigator.userAgent,(new Date).getTimezoneOffset(),window.navigator.userLanguage||window.navigator.language,Math.floor((new Date).getTime()/60/1E3)-(void 0===b?0:b),a].join("*");if(!(b=I)){b=Array(256);for(var c=0;256>c;c++){for(var d=c,f=0;8>f;f++)d=d&1?d>>>1^
+3988292384:d>>>1;b[c]=d}}I=b;b=4294967295;for(c=0;c<a.length;c++)b=b>>>8^I[(b^a.charCodeAt(c))&255];return((b^-1)>>>0).toString(36)},ca=function(a){return function(b){var c=B(r.location.href),d=c.search.replace("?","");a:{var f=d.split("&");for(var e=0;e<f.length;e++){var g=f[e].split("=");if("_gl"===decodeURIComponent(g[0]).replace(/\+/g," ")){f=g.slice(1).join("=");break a}}f=void 0}b.query=T(f||"")||{};f=A(c,"fragment");e=f.match(Q("_gl"));b.fragment=T(e&&e[3]||"")||{};a&&ba(c,d,f)}};
+function U(a,b){if(a=Q(a).exec(b)){var c=a[2],d=a[4];b=a[1];d&&(b=b+c+d)}return b}
+var ba=function(a,b,c){function d(e,g){e=U("_gl",e);e.length&&(e=g+e);return e}if(r.history&&r.history.replaceState){var f=Q("_gl");if(f.test(b)||f.test(c))a=A(a,"path"),b=d(b,"?"),c=d(c,"#"),r.history.replaceState({},void 0,""+a+b+c)}},T=function(a){var b=void 0===b?3:b;try{if(a){a:{for(var c=0;3>c;++c){var d=P.exec(a);if(d){var f=d;break a}a=decodeURIComponent(a)}f=void 0}if(f&&"1"===f[1]){var e=f[2],g=f[3];a:{for(f=0;f<b;++f)if(e===R(g,f)){var h=!0;break a}h=!1}if(h){b={};var k=g?g.split("*"):
+[];for(g=0;g<k.length;g+=2)b[k[g]]=H(k[g+1]);return b}}}}catch(l){}};function V(a,b,c,d){function f(k){k=U(a,k);var l=k.charAt(k.length-1);k&&"&"!==l&&(k+="&");return k+h}d=void 0===d?!1:d;var e=aa.exec(c);if(!e)return"";c=e[1];var g=e[2]||"";e=e[3]||"";var h=a+"="+b;d?e="#"+f(e.substring(1)):g="?"+f(g.substring(1));return""+c+g+e}
+function W(a,b){var c="FORM"===(a.tagName||"").toUpperCase(),d=O(b,1,c),f=O(b,2,c);b=O(b,3,c);q(d)&&(d=S(d),c?X("_gl",d,a):Y("_gl",d,a,!1));!c&&q(f)&&(c=S(f),Y("_gl",c,a,!0));for(var e in b)b.hasOwnProperty(e)&&Z(e,b[e],a)}function Z(a,b,c,d){if(c.tagName){if("a"===c.tagName.toLowerCase())return Y(a,b,c,d);if("form"===c.tagName.toLowerCase())return X(a,b,c)}if("string"==typeof c)return V(a,b,c,d)}function Y(a,b,c,d){c.href&&(a=V(a,b,c.href,void 0===d?!1:d),v.test(a)&&(c.href=a))}
+function X(a,b,c){if(c&&c.action){var d=(c.method||"").toLowerCase();if("get"===d){d=c.childNodes||[];for(var f=!1,e=0;e<d.length;e++){var g=d[e];if(g.name===a){g.setAttribute("value",b);f=!0;break}}f||(d=t.createElement("input"),d.setAttribute("type","hidden"),d.setAttribute("name",a),d.setAttribute("value",b),c.appendChild(d))}else"post"===d&&(a=V(a,b,c.action),v.test(a)&&(c.action=a))}}
+var J=function(a){try{a:{for(var b=100;a&&0<b;){if(a.href&&a.nodeName.match(/^a(?:rea)?$/i)){var c=a;break a}a=a.parentNode;b--}c=null}if(c){var d=c.protocol;"http:"!==d&&"https:"!==d||W(c,c.hostname)}}catch(f){}},K=function(a){try{if(a.action){var b=A(B(a.action),"host");W(a,b)}}catch(c){}};n("google_tag_data.glBridge.auto",function(a,b,c,d){N();c="fragment"===c?2:1;a={callback:a,domains:b,fragment:2===c,placement:c,forms:!!d,sameHost:!1};L().decorators.push(a)});n("google_tag_data.glBridge.decorate",function(a,b,c){a=S(a);return Z("_gl",a,b,!!c)});n("google_tag_data.glBridge.generate",S);n("google_tag_data.glBridge.get",function(a,b){var c=ca(!!b);b=L();b.data||(b.data={query:{},fragment:{}},c(b.data));c={};if(b=b.data)p(c,b.query),a&&p(c,b.fragment);return c});})(window);
+(function(){function La(a){var b=1,c;if(a)for(b=0,c=a.length-1;0<=c;c--){var d=a.charCodeAt(c);b=(b<<6&268435455)+d+(d<<14);d=b&266338304;b=0!=d?b^d>>21:b}return b};/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+var $c=function(a){this.w=a||[]};$c.prototype.set=function(a){this.w[a]=!0};$c.prototype.encode=function(){for(var a=[],b=0;b<this.w.length;b++)this.w[b]&&(a[Math.floor(b/6)]^=1<<b%6);for(b=0;b<a.length;b++)a[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(a[b]||0);return a.join("")+"~"};var ha=window.GoogleAnalyticsObject,wa;if(wa=void 0!=ha)wa=-1<(ha.constructor+"").indexOf("String");var Qa;if(Qa=wa){var Za=window.GoogleAnalyticsObject;Qa=Za?Za.replace(/^[\s\xa0]+|[\s\xa0]+$/g,""):""}var gb=Qa||"ga",jd=/^(?:utma\.)?\d+\.\d+$/,kd=/^amp-[\w.-]{22,64}$/,Ba=!1;var vd=new $c;function J(a){vd.set(a)}var Td=function(a){a=Dd(a);a=new $c(a);for(var b=vd.w.slice(),c=0;c<a.w.length;c++)b[c]=b[c]||a.w[c];return(new $c(b)).encode()},Dd=function(a){a=a.get(Gd);ka(a)||(a=[]);return a};var ea=function(a){return"function"==typeof a},ka=function(a){return"[object Array]"==Object.prototype.toString.call(Object(a))},qa=function(a){return void 0!=a&&-1<(a.constructor+"").indexOf("String")},D=function(a,b){return 0==a.indexOf(b)},sa=function(a){return a?a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,""):""},ra=function(){for(var a=O.navigator.userAgent+(M.cookie?M.cookie:"")+(M.referrer?M.referrer:""),b=a.length,c=O.history.length;0<c;)a+=c--^b++;return[hd()^La(a)&2147483647,Math.round((new Date).getTime()/
+1E3)].join(".")},ta=function(a){var b=M.createElement("img");b.width=1;b.height=1;b.src=a;return b},ua=function(){},K=function(a){if(encodeURIComponent instanceof Function)return encodeURIComponent(a);J(28);return a},L=function(a,b,c,d){try{a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)}catch(e){J(27)}},f=/^[\w\-:/.?=&%!\[\]]+$/,Nd=/^[\w+/_-]+[=]{0,2}$/,be=function(a,b){return E(M.location[b?"href":"search"],a)},E=function(a,b){return(a=a.match("(?:&|#|\\?)"+
+K(b).replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")+"=([^&#]*)"))&&2==a.length?a[1]:""},xa=function(){var a=""+M.location.hostname;return 0==a.indexOf("www.")?a.substring(4):a},de=function(a,b){var c=a.indexOf(b);if(5==c||6==c)if(a=a.charAt(c+b.length),"/"==a||"?"==a||""==a||":"==a)return!0;return!1},ya=function(a,b){var c=M.referrer;if(/^(https?|android-app):\/\//i.test(c)){if(a)return c;a="//"+M.location.hostname;if(!de(c,a))return b&&(b=a.replace(/\./g,"-")+".cdn.ampproject.org",de(c,b))?void 0:
+c}},za=function(a,b){if(1==b.length&&null!=b[0]&&"object"===typeof b[0])return b[0];for(var c={},d=Math.min(a.length+1,b.length),e=0;e<d;e++)if("object"===typeof b[e]){for(var g in b[e])b[e].hasOwnProperty(g)&&(c[g]=b[e][g]);break}else e<a.length&&(c[a[e]]=b[e]);return c};var ee=function(){this.keys=[];this.values={};this.m={}};ee.prototype.set=function(a,b,c){this.keys.push(a);c?this.m[":"+a]=b:this.values[":"+a]=b};ee.prototype.get=function(a){return this.m.hasOwnProperty(":"+a)?this.m[":"+a]:this.values[":"+a]};ee.prototype.map=function(a){for(var b=0;b<this.keys.length;b++){var c=this.keys[b],d=this.get(c);d&&a(c,d)}};var O=window,M=document,va=function(a,b){return setTimeout(a,b)};var F=window,Ea=document,G=function(a){var b=F._gaUserPrefs;if(b&&b.ioo&&b.ioo()||a&&!0===F["ga-disable-"+a])return!0;try{var c=F.external;if(c&&c._gaUserPrefs&&"oo"==c._gaUserPrefs)return!0}catch(g){}a=[];b=String(Ea.cookie||document.cookie).split(";");for(c=0;c<b.length;c++){var d=b[c].split("="),e=d[0].replace(/^\s*|\s*$/g,"");e&&"AMP_TOKEN"==e&&((d=d.slice(1).join("=").replace(/^\s*|\s*$/g,""))&&(d=decodeURIComponent(d)),a.push(d))}for(b=0;b<a.length;b++)if("$OPT_OUT"==a[b])return!0;return Ea.getElementById("__gaOptOutExtension")?
+!0:!1};var Ca=function(a){var b=[],c=M.cookie.split(";");a=new RegExp("^\\s*"+a+"=\\s*(.*?)\\s*$");for(var d=0;d<c.length;d++){var e=c[d].match(a);e&&b.push(e[1])}return b},zc=function(a,b,c,d,e,g,ca){e=G(e)?!1:eb.test(M.location.hostname)||"/"==c&&vc.test(d)?!1:!0;if(!e)return!1;b&&1200<b.length&&(b=b.substring(0,1200));c=a+"="+b+"; path="+c+"; ";g&&(c+="expires="+(new Date((new Date).getTime()+g)).toGMTString()+"; ");d&&"none"!==d&&(c+="domain="+d+";");ca&&(c+=ca+";");d=M.cookie;M.cookie=c;if(!(d=d!=M.cookie))a:{a=
+Ca(a);for(d=0;d<a.length;d++)if(b==a[d]){d=!0;break a}d=!1}return d},Cc=function(a){return encodeURIComponent?encodeURIComponent(a).replace(/\(/g,"%28").replace(/\)/g,"%29"):a},vc=/^(www\.)?google(\.com?)?(\.[a-z]{2})?$/,eb=/(^|\.)doubleclick\.net$/i;var oc,Id=/^.*Version\/?(\d+)[^\d].*$/i,ne=function(){if(void 0!==O.__ga4__)return O.__ga4__;if(void 0===oc){var a=O.navigator.userAgent;if(a){var b=a;try{b=decodeURIComponent(a)}catch(c){}if(a=!(0<=b.indexOf("Chrome"))&&!(0<=b.indexOf("CriOS"))&&(0<=b.indexOf("Safari/")||0<=b.indexOf("Safari,")))b=Id.exec(b),a=11<=(b?Number(b[1]):-1);oc=a}else oc=!1}return oc};var Fa,Ga,fb,Ab,ja=/^https?:\/\/[^/]*cdn\.ampproject\.org\//,Ue=/^(?:www\.|m\.|amp\.)+/,Ub=[],da=function(a){if(ye(a[Kd])){if(void 0===Ab){var b;if(b=(b=De.get())&&b._ga||void 0)Ab=b,J(81)}if(void 0!==Ab)return a[Q]||(a[Q]=Ab),!1}if(a[Kd]){J(67);if(a[ac]&&"cookie"!=a[ac])return!1;if(void 0!==Ab)a[Q]||(a[Q]=Ab);else{a:{b=String(a[W]||xa());var c=String(a[Yb]||"/"),d=Ca(String(a[U]||"_ga"));b=na(d,b,c);if(!b||jd.test(b))b=!0;else if(b=Ca("AMP_TOKEN"),0==b.length)b=!0;else{if(1==b.length&&(b=decodeURIComponent(b[0]),
+"$RETRIEVING"==b||"$OPT_OUT"==b||"$ERROR"==b||"$NOT_FOUND"==b)){b=!0;break a}b=!1}}if(b&&tc(ic,String(a[Na])))return!0}}return!1},ic=function(){Z.D([ua])},tc=function(a,b){var c=Ca("AMP_TOKEN");if(1<c.length)return J(55),!1;c=decodeURIComponent(c[0]||"");if("$OPT_OUT"==c||"$ERROR"==c||G(b))return J(62),!1;if(!ja.test(M.referrer)&&"$NOT_FOUND"==c)return J(68),!1;if(void 0!==Ab)return J(56),va(function(){a(Ab)},0),!0;if(Fa)return Ub.push(a),!0;if("$RETRIEVING"==c)return J(57),va(function(){tc(a,b)},
+1E4),!0;Fa=!0;c&&"$"!=c[0]||(xc("$RETRIEVING",3E4),setTimeout(Mc,3E4),c="");return Pc(c,b)?(Ub.push(a),!0):!1},Pc=function(a,b,c){if(!window.JSON)return J(58),!1;var d=O.XMLHttpRequest;if(!d)return J(59),!1;var e=new d;if(!("withCredentials"in e))return J(60),!1;e.open("POST",(c||"https://ampcid.google.com/v1/publisher:getClientId")+"?key=AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM",!0);e.withCredentials=!0;e.setRequestHeader("Content-Type","text/plain");e.onload=function(){Fa=!1;if(4==e.readyState){try{200!=
+e.status&&(J(61),Qc("","$ERROR",3E4));var g=JSON.parse(e.responseText);g.optOut?(J(63),Qc("","$OPT_OUT",31536E6)):g.clientId?Qc(g.clientId,g.securityToken,31536E6):!c&&g.alternateUrl?(Ga&&clearTimeout(Ga),Fa=!0,Pc(a,b,g.alternateUrl)):(J(64),Qc("","$NOT_FOUND",36E5))}catch(ca){J(65),Qc("","$ERROR",3E4)}e=null}};d={originScope:"AMP_ECID_GOOGLE"};a&&(d.securityToken=a);e.send(JSON.stringify(d));Ga=va(function(){J(66);Qc("","$ERROR",3E4)},1E4);return!0},Mc=function(){Fa=!1},xc=function(a,b){if(void 0===
+fb){fb="";for(var c=id(),d=0;d<c.length;d++){var e=c[d];if(zc("AMP_TOKEN",encodeURIComponent(a),"/",e,"",b)){fb=e;return}}}zc("AMP_TOKEN",encodeURIComponent(a),"/",fb,"",b)},Qc=function(a,b,c){Ga&&clearTimeout(Ga);b&&xc(b,c);Ab=a;b=Ub;Ub=[];for(c=0;c<b.length;c++)b[c](a)},ye=function(a){a:{if(ja.test(M.referrer)){var b=M.location.hostname.replace(Ue,"");b:{var c=M.referrer;c=c.replace(/^https?:\/\//,"");var d=c.replace(/^[^/]+/,"").split("/"),e=d[2];d=(d="s"==e?d[3]:e)?decodeURIComponent(d):d;if(!d){if(0==
+c.indexOf("xn--")){c="";break b}(c=c.match(/(.*)\.cdn\.ampproject\.org\/?$/))&&2==c.length&&(d=c[1].replace(/-/g,".").replace(/\.\./g,"-"))}c=d?d.replace(Ue,""):""}(d=b===c)||(c="."+c,d=b.substring(b.length-c.length,b.length)===c);if(d){b=!0;break a}else J(78)}b=!1}return b&&!1!==a};var bd=function(a){return(a?"https:":Ba||"https:"==M.location.protocol?"https:":"http:")+"//www.google-analytics.com"},Da=function(a){this.name="len";this.message=a+"-8192"},ba=function(a,b,c){c=c||ua;if(2036>=b.length)wc(a,b,c);else if(8192>=b.length)x(a,b,c)||wd(a,b,c)||wc(a,b,c);else throw ge("len",b.length),new Da(b.length);},pe=function(a,b,c,d){d=d||ua;wd(a+"?"+b,"",d,c)},wc=function(a,b,c){var d=ta(a+"?"+b);d.onload=d.onerror=function(){d.onload=null;d.onerror=null;c()}},wd=function(a,b,c,
+d){var e=O.XMLHttpRequest;if(!e)return!1;var g=new e;if(!("withCredentials"in g))return!1;a=a.replace(/^http:/,"https:");g.open("POST",a,!0);g.withCredentials=!0;g.setRequestHeader("Content-Type","text/plain");g.onreadystatechange=function(){if(4==g.readyState){if(d)try{var ca=g.responseText;if(1>ca.length)ge("xhr","ver","0"),c();else if("1"!=ca.charAt(0))ge("xhr","ver",String(ca.length)),c();else if(3<d.count++)ge("xhr","tmr",""+d.count),c();else if(1==ca.length)c();else{var l=ca.charAt(1);if("d"==
+l)pe("https://stats.g.doubleclick.net/j/collect",d.U,d,c);else if("g"==l){wc("https://www.google.%/ads/ga-audiences".replace("%","com"),d.google,c);var k=ca.substring(2);k&&(/^[a-z.]{1,6}$/.test(k)?wc("https://www.google.%/ads/ga-audiences".replace("%",k),d.google,ua):ge("tld","bcc",k))}else ge("xhr","brc",l),c()}}catch(w){ge("xhr","rsp"),c()}else c();g=null}};g.send(b);return!0},x=function(a,b,c){return O.navigator.sendBeacon?O.navigator.sendBeacon(a,b)?(c(),!0):!1:!1},ge=function(a,b,c){1<=100*
+Math.random()||G("?")||(a=["t=error","_e="+a,"_v=j81","sr=1"],b&&a.push("_f="+b),c&&a.push("_m="+K(c.substring(0,100))),a.push("aip=1"),a.push("z="+hd()),wc(bd(!0)+"/u/d",a.join("&"),ua))};var qc=function(){return O.gaData=O.gaData||{}},h=function(a){var b=qc();return b[a]=b[a]||{}};var Ha=function(){this.M=[]};Ha.prototype.add=function(a){this.M.push(a)};Ha.prototype.D=function(a){try{for(var b=0;b<this.M.length;b++){var c=a.get(this.M[b]);c&&ea(c)&&c.call(O,a)}}catch(d){}b=a.get(Ia);b!=ua&&ea(b)&&(a.set(Ia,ua,!0),setTimeout(b,10))};function Ja(a){if(100!=a.get(Ka)&&La(P(a,Q))%1E4>=100*R(a,Ka))throw"abort";}function Ma(a){if(G(P(a,Na)))throw"abort";}function Oa(){var a=M.location.protocol;if("http:"!=a&&"https:"!=a)throw"abort";}
+function Pa(a){try{O.navigator.sendBeacon?J(42):O.XMLHttpRequest&&"withCredentials"in new O.XMLHttpRequest&&J(40)}catch(c){}a.set(ld,Td(a),!0);a.set(Ac,R(a,Ac)+1);var b=[];ue.map(function(c,d){d.F&&(c=a.get(c),void 0!=c&&c!=d.defaultValue&&("boolean"==typeof c&&(c*=1),b.push(d.F+"="+K(""+c))))});!1===a.get(xe)&&b.push("npa=1");b.push("z="+Bd());a.set(Ra,b.join("&"),!0)}
+function Sa(a){var b=P(a,fa);!b&&a.get(Vd)&&(b="beacon");var c=P(a,gd),d=P(a,oe),e=c||(d?d+"/3":bd(!1)+"/collect");switch(P(a,ad)){case "d":e=c||(d?d+"/32":bd(!1)+"/j/collect");b=a.get(qe)||void 0;pe(e,P(a,Ra),b,a.Z(Ia));break;case "b":e=c||(d?d+"/31":bd(!1)+"/r/collect");default:b?(c=P(a,Ra),d=(d=a.Z(Ia))||ua,"image"==b?wc(e,c,d):"xhr"==b&&wd(e,c,d)||"beacon"==b&&x(e,c,d)||ba(e,c,d)):ba(e,P(a,Ra),a.Z(Ia))}e=P(a,Na);e=h(e);b=e.hitcount;e.hitcount=b?b+1:1;e=P(a,Na);delete h(e).pending_experiments;
+a.set(Ia,ua,!0)}function Hc(a){qc().expId&&a.set(Nc,qc().expId);qc().expVar&&a.set(Oc,qc().expVar);var b=P(a,Na);if(b=h(b).pending_experiments){var c=[];for(d in b)b.hasOwnProperty(d)&&b[d]&&c.push(encodeURIComponent(d)+"."+encodeURIComponent(b[d]));var d=c.join("!")}else d=void 0;d&&a.set(m,d,!0)}function cd(){if(O.navigator&&"preview"==O.navigator.loadPurpose)throw"abort";}function yd(a){var b=O.gaDevIds;ka(b)&&0!=b.length&&a.set("&did",b.join(","),!0)}
+function vb(a){if(!a.get(Na))throw"abort";};var hd=function(){return Math.round(2147483647*Math.random())},Bd=function(){try{var a=new Uint32Array(1);O.crypto.getRandomValues(a);return a[0]&2147483647}catch(b){return hd()}};function Ta(a){var b=R(a,Ua);500<=b&&J(15);var c=P(a,Va);if("transaction"!=c&&"item"!=c){c=R(a,Wa);var d=(new Date).getTime(),e=R(a,Xa);0==e&&a.set(Xa,d);e=Math.round(2*(d-e)/1E3);0<e&&(c=Math.min(c+e,20),a.set(Xa,d));if(0>=c)throw"abort";a.set(Wa,--c)}a.set(Ua,++b)};var Ya=function(){this.data=new ee};Ya.prototype.get=function(a){var b=$a(a),c=this.data.get(a);b&&void 0==c&&(c=ea(b.defaultValue)?b.defaultValue():b.defaultValue);return b&&b.Z?b.Z(this,a,c):c};var P=function(a,b){a=a.get(b);return void 0==a?"":""+a},R=function(a,b){a=a.get(b);return void 0==a||""===a?0:Number(a)};Ya.prototype.Z=function(a){return(a=this.get(a))&&ea(a)?a:ua};
+Ya.prototype.set=function(a,b,c){if(a)if("object"==typeof a)for(var d in a)a.hasOwnProperty(d)&&ab(this,d,a[d],c);else ab(this,a,b,c)};var ab=function(a,b,c,d){if(void 0!=c)switch(b){case Na:wb.test(c)}var e=$a(b);e&&e.o?e.o(a,b,c,d):a.data.set(b,c,d)};var ue=new ee,ve=[],bb=function(a,b,c,d,e){this.name=a;this.F=b;this.Z=d;this.o=e;this.defaultValue=c},$a=function(a){var b=ue.get(a);if(!b)for(var c=0;c<ve.length;c++){var d=ve[c],e=d[0].exec(a);if(e){b=d[1](e);ue.set(b.name,b);break}}return b},yc=function(a){var b;ue.map(function(c,d){d.F==a&&(b=d)});return b&&b.name},S=function(a,b,c,d,e){a=new bb(a,b,c,d,e);ue.set(a.name,a);return a.name},cb=function(a,b){ve.push([new RegExp("^"+a+"$"),b])},T=function(a,b,c){return S(a,b,c,void 0,db)},db=function(){};var hb=T("apiVersion","v"),ib=T("clientVersion","_v");S("anonymizeIp","aip");var jb=S("adSenseId","a"),Va=S("hitType","t"),Ia=S("hitCallback"),Ra=S("hitPayload");S("nonInteraction","ni");S("currencyCode","cu");S("dataSource","ds");var Vd=S("useBeacon",void 0,!1),fa=S("transport");S("sessionControl","sc","");S("sessionGroup","sg");S("queueTime","qt");var Ac=S("_s","_s");S("screenName","cd");var kb=S("location","dl",""),lb=S("referrer","dr"),mb=S("page","dp","");S("hostname","dh");
+var nb=S("language","ul"),ob=S("encoding","de");S("title","dt",function(){return M.title||void 0});cb("contentGroup([0-9]+)",function(a){return new bb(a[0],"cg"+a[1])});var pb=S("screenColors","sd"),qb=S("screenResolution","sr"),rb=S("viewportSize","vp"),sb=S("javaEnabled","je"),tb=S("flashVersion","fl");S("campaignId","ci");S("campaignName","cn");S("campaignSource","cs");S("campaignMedium","cm");S("campaignKeyword","ck");S("campaignContent","cc");
+var ub=S("eventCategory","ec"),xb=S("eventAction","ea"),yb=S("eventLabel","el"),zb=S("eventValue","ev"),Bb=S("socialNetwork","sn"),Cb=S("socialAction","sa"),Db=S("socialTarget","st"),Eb=S("l1","plt"),Fb=S("l2","pdt"),Gb=S("l3","dns"),Hb=S("l4","rrt"),Ib=S("l5","srt"),Jb=S("l6","tcp"),Kb=S("l7","dit"),Lb=S("l8","clt"),Ve=S("l9","_gst"),We=S("l10","_gbt"),Xe=S("l11","_cst"),Ye=S("l12","_cbt"),Mb=S("timingCategory","utc"),Nb=S("timingVar","utv"),Ob=S("timingLabel","utl"),Pb=S("timingValue","utt");
+S("appName","an");S("appVersion","av","");S("appId","aid","");S("appInstallerId","aiid","");S("exDescription","exd");S("exFatal","exf");var Nc=S("expId","xid"),Oc=S("expVar","xvar"),m=S("exp","exp"),Rc=S("_utma","_utma"),Sc=S("_utmz","_utmz"),Tc=S("_utmht","_utmht"),Ua=S("_hc",void 0,0),Xa=S("_ti",void 0,0),Wa=S("_to",void 0,20);cb("dimension([0-9]+)",function(a){return new bb(a[0],"cd"+a[1])});cb("metric([0-9]+)",function(a){return new bb(a[0],"cm"+a[1])});S("linkerParam",void 0,void 0,Bc,db);
+var Ze=T("_cd2l",void 0,!1),ld=S("usage","_u"),Gd=S("_um");S("forceSSL",void 0,void 0,function(){return Ba},function(a,b,c){J(34);Ba=!!c});var ed=S("_j1","jid"),ia=S("_j2","gjid");cb("\\&(.*)",function(a){var b=new bb(a[0],a[1]),c=yc(a[0].substring(1));c&&(b.Z=function(d){return d.get(c)},b.o=function(d,e,g,ca){d.set(c,g,ca)},b.F=void 0);return b});
+var Qb=T("_oot"),dd=S("previewTask"),Rb=S("checkProtocolTask"),md=S("validationTask"),Sb=S("checkStorageTask"),Uc=S("historyImportTask"),Tb=S("samplerTask"),Vb=S("_rlt"),Wb=S("buildHitTask"),Xb=S("sendHitTask"),Vc=S("ceTask"),zd=S("devIdTask"),Cd=S("timingTask"),Ld=S("displayFeaturesTask"),oa=S("customTask"),V=T("name"),Q=T("clientId","cid"),n=T("clientIdTime"),xd=T("storedClientId"),Ad=S("userId","uid"),Na=T("trackingId","tid"),U=T("cookieName",void 0,"_ga"),W=T("cookieDomain"),Yb=T("cookiePath",
+void 0,"/"),Zb=T("cookieExpires",void 0,63072E3),Hd=T("cookieUpdate",void 0,!0),Be=T("cookieFlags",void 0,""),$b=T("legacyCookieDomain"),Wc=T("legacyHistoryImport",void 0,!0),ac=T("storage",void 0,"cookie"),bc=T("allowLinker",void 0,!1),cc=T("allowAnchor",void 0,!0),Ka=T("sampleRate","sf",100),dc=T("siteSpeedSampleRate",void 0,1),ec=T("alwaysSendReferrer",void 0,!1),I=T("_gid","_gid"),la=T("_gcn"),Kd=T("useAmpClientId"),ce=T("_gclid"),fe=T("_gt"),he=T("_ge",void 0,7776E6),ie=T("_gclsrc"),je=T("storeGac",
+void 0,!0),oe=S("_x_19"),gd=S("transportUrl"),Md=S("_r","_r"),qe=S("_dp"),ad=S("_jt",void 0,"n"),Ud=S("allowAdFeatures",void 0,!0),xe=S("allowAdPersonalizationSignals",void 0,!0);function X(a,b,c,d){b[a]=function(){try{return d&&J(d),c.apply(this,arguments)}catch(e){throw ge("exc",a,e&&e.name),e;}}};var Od=function(){this.V=100;this.$=this.fa=!1;this.oa="detourexp";this.groups=1},Ed=function(a){var b=new Od,c;if(b.fa&&b.$)return 0;b.$=!0;if(a){if(b.oa&&void 0!==a.get(b.oa))return R(a,b.oa);if(0==a.get(dc))return 0}if(0==b.V)return 0;void 0===c&&(c=Bd());return 0==c%b.V?Math.floor(c/b.V)%b.groups+1:0};function fc(){var a,b;if((b=(b=O.navigator)?b.plugins:null)&&b.length)for(var c=0;c<b.length&&!a;c++){var d=b[c];-1<d.name.indexOf("Shockwave Flash")&&(a=d.description)}if(!a)try{var e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"),a="WIN 6,0,21,0",e.AllowScriptAccess="always",a=e.GetVariable("$version")}catch(g){}if(!a)try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),a=e.GetVariable("$version")}catch(g){}a&&
+(e=a.match(/[\d]+/g))&&3<=e.length&&(a=e[0]+"."+e[1]+" r"+e[2]);return a||void 0};var aa=function(a){var b=Math.min(R(a,dc),100);return La(P(a,Q))%100>=b?!1:!0},gc=function(a){var b={};if(Ec(b)||Fc(b)){var c=b[Eb];void 0==c||Infinity==c||isNaN(c)||(0<c?(Y(b,Gb),Y(b,Jb),Y(b,Ib),Y(b,Fb),Y(b,Hb),Y(b,Kb),Y(b,Lb),Y(b,Ve),Y(b,We),Y(b,Xe),Y(b,Ye),va(function(){a(b)},10)):L(O,"load",function(){gc(a)},!1))}},Ec=function(a){var b=O.performance||O.webkitPerformance;b=b&&b.timing;if(!b)return!1;var c=b.navigationStart;if(0==c)return!1;a[Eb]=b.loadEventStart-c;a[Gb]=b.domainLookupEnd-b.domainLookupStart;
+a[Jb]=b.connectEnd-b.connectStart;a[Ib]=b.responseStart-b.requestStart;a[Fb]=b.responseEnd-b.responseStart;a[Hb]=b.fetchStart-c;a[Kb]=b.domInteractive-c;a[Lb]=b.domContentLoadedEventStart-c;a[Ve]=N.L-c;a[We]=N.ya-c;O.google_tag_manager&&O.google_tag_manager._li&&(b=O.google_tag_manager._li,a[Xe]=b.cst,a[Ye]=b.cbt);return!0},Fc=function(a){if(O.top!=O)return!1;var b=O.external,c=b&&b.onloadT;b&&!b.isValidLoadTime&&(c=void 0);2147483648<c&&(c=void 0);0<c&&b.setPageReadyTime();if(void 0==c)return!1;
+a[Eb]=c;return!0},Y=function(a,b){var c=a[b];if(isNaN(c)||Infinity==c||0>c)a[b]=void 0},Fd=function(a){return function(b){if("pageview"==b.get(Va)&&!a.I){a.I=!0;var c=aa(b),d=0<E(P(b,kb),"gclid").length;(c||d)&&gc(function(e){c&&a.send("timing",e);d&&a.send("adtiming",e)})}}};var hc=!1,mc=function(a){if("cookie"==P(a,ac)){if(a.get(Hd)||P(a,xd)!=P(a,Q)){var b=1E3*R(a,Zb);ma(a,Q,U,b)}(a.get(Hd)||uc(a)!=P(a,I))&&ma(a,I,la,864E5);if(a.get(je)){var c=P(a,ce);if(c){var d=Math.min(R(a,he),1E3*R(a,Zb));d=Math.min(d,1E3*R(a,fe)+d-(new Date).getTime());a.data.set(he,d);b={};var e=P(a,fe),g=P(a,ie),ca=kc(P(a,Yb)),l=lc(P(a,W)),k=P(a,Na);a=P(a,Be);g&&"aw.ds"!=g?b&&(b.ua=!0):(c=["1",e,Cc(c)].join("."),0<d&&(b&&(b.ta=!0),zc("_gac_"+Cc(k),c,ca,l,k,d,a)));le(b)}}else J(75)}},ma=function(a,
+b,c,d){var e=nd(a,b);if(e){c=P(a,c);var g=kc(P(a,Yb)),ca=lc(P(a,W)),l=P(a,Be),k=P(a,Na);if("auto"!=ca)zc(c,e,g,ca,k,d,l)&&(hc=!0);else{J(32);for(var w=id(),Ce=0;Ce<w.length;Ce++)if(ca=w[Ce],a.data.set(W,ca),e=nd(a,b),zc(c,e,g,ca,k,d,l)){hc=!0;return}a.data.set(W,"auto")}}},uc=function(a){var b=Ca(P(a,la));return Xd(a,b)},nc=function(a){if("cookie"==P(a,ac)&&!hc&&(mc(a),!hc))throw"abort";},Yc=function(a){if(a.get(Wc)){var b=P(a,W),c=P(a,$b)||xa(),d=Xc("__utma",c,b);d&&(J(19),a.set(Tc,(new Date).getTime(),
+!0),a.set(Rc,d.R),(b=Xc("__utmz",c,b))&&d.hash==b.hash&&a.set(Sc,b.R))}},nd=function(a,b){b=Cc(P(a,b));var c=lc(P(a,W)).split(".").length;a=jc(P(a,Yb));1<a&&(c+="-"+a);return b?["GA1",c,b].join("."):""},Xd=function(a,b){return na(b,P(a,W),P(a,Yb))},na=function(a,b,c){if(!a||1>a.length)J(12);else{for(var d=[],e=0;e<a.length;e++){var g=a[e];var ca=g.split(".");var l=ca.shift();("GA1"==l||"1"==l)&&1<ca.length?(g=ca.shift().split("-"),1==g.length&&(g[1]="1"),g[0]*=1,g[1]*=1,ca={H:g,s:ca.join(".")}):ca=
+kd.test(g)?{H:[0,0],s:g}:void 0;ca&&d.push(ca)}if(1==d.length)return J(13),d[0].s;if(0==d.length)J(12);else{J(14);d=Gc(d,lc(b).split(".").length,0);if(1==d.length)return d[0].s;d=Gc(d,jc(c),1);1<d.length&&J(41);return d[0]&&d[0].s}}},Gc=function(a,b,c){for(var d=[],e=[],g,ca=0;ca<a.length;ca++){var l=a[ca];l.H[c]==b?d.push(l):void 0==g||l.H[c]<g?(e=[l],g=l.H[c]):l.H[c]==g&&e.push(l)}return 0<d.length?d:e},lc=function(a){return 0==a.indexOf(".")?a.substr(1):a},id=function(){var a=[],b=xa().split(".");
+if(4==b.length){var c=b[b.length-1];if(parseInt(c,10)==c)return["none"]}for(c=b.length-2;0<=c;c--)a.push(b.slice(c).join("."));b=M.location.hostname;eb.test(b)||vc.test(b)||a.push("none");return a},kc=function(a){if(!a)return"/";1<a.length&&a.lastIndexOf("/")==a.length-1&&(a=a.substr(0,a.length-1));0!=a.indexOf("/")&&(a="/"+a);return a},jc=function(a){a=kc(a);return"/"==a?1:a.split("/").length},le=function(a){a.ta&&J(77);a.na&&J(74);a.pa&&J(73);a.ua&&J(69)};function Xc(a,b,c){"none"==b&&(b="");var d=[],e=Ca(a);a="__utma"==a?6:2;for(var g=0;g<e.length;g++){var ca=(""+e[g]).split(".");ca.length>=a&&d.push({hash:ca[0],R:e[g],O:ca})}if(0!=d.length)return 1==d.length?d[0]:Zc(b,d)||Zc(c,d)||Zc(null,d)||d[0]}function Zc(a,b){if(null==a)var c=a=1;else c=La(a),a=La(D(a,".")?a.substring(1):"."+a);for(var d=0;d<b.length;d++)if(b[d].hash==c||b[d].hash==a)return b[d]};var Jc=new RegExp(/^https?:\/\/([^\/:]+)/),De=O.google_tag_data.glBridge,Kc=/(.*)([?&#])(?:_ga=[^&#]*)(?:&?)(.*)/,od=/(.*)([?&#])(?:_gac=[^&#]*)(?:&?)(.*)/;function Bc(a){if(a.get(Ze))return J(35),De.generate($e(a));var b=P(a,Q),c=P(a,I)||"";b="_ga=2."+K(pa(c+b,0)+"."+c+"-"+b);(a=af(a))?(J(44),a="&_gac=1."+K([pa(a.qa,0),a.timestamp,a.qa].join("."))):a="";return b+a}
+function Ic(a,b){var c=new Date,d=O.navigator,e=d.plugins||[];a=[a,d.userAgent,c.getTimezoneOffset(),c.getYear(),c.getDate(),c.getHours(),c.getMinutes()+b];for(b=0;b<e.length;++b)a.push(e[b].description);return La(a.join("."))}function pa(a,b){var c=new Date,d=O.navigator,e=c.getHours()+Math.floor((c.getMinutes()+b)/60);return La([a,d.userAgent,d.language||"",c.getTimezoneOffset(),c.getYear(),c.getDate()+Math.floor(e/24),(24+e)%24,(60+c.getMinutes()+b)%60].join("."))}
+var Dc=function(a){J(48);this.target=a;this.T=!1};Dc.prototype.ca=function(a,b){if(a){if(this.target.get(Ze))return De.decorate($e(this.target),a,b);if(a.tagName){if("a"==a.tagName.toLowerCase()){a.href&&(a.href=qd(this,a.href,b));return}if("form"==a.tagName.toLowerCase())return rd(this,a)}if("string"==typeof a)return qd(this,a,b)}};
+var qd=function(a,b,c){var d=Kc.exec(b);d&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));(d=od.exec(b))&&3<=d.length&&(b=d[1]+(d[3]?d[2]+d[3]:""));a=a.target.get("linkerParam");var e=b.indexOf("?");d=b.indexOf("#");c?b+=(-1==d?"#":"&")+a:(c=-1==e?"?":"&",b=-1==d?b+(c+a):b.substring(0,d)+c+a+b.substring(d));b=b.replace(/&+_ga=/,"&_ga=");return b=b.replace(/&+_gac=/,"&_gac=")},rd=function(a,b){if(b&&b.action)if("get"==b.method.toLowerCase()){a=a.target.get("linkerParam").split("&");for(var c=0;c<a.length;c++){var d=
+a[c].split("="),e=d[1];d=d[0];for(var g=b.childNodes||[],ca=!1,l=0;l<g.length;l++)if(g[l].name==d){g[l].setAttribute("value",e);ca=!0;break}ca||(g=M.createElement("input"),g.setAttribute("type","hidden"),g.setAttribute("name",d),g.setAttribute("value",e),b.appendChild(g))}}else"post"==b.method.toLowerCase()&&(b.action=qd(a,b.action))};
+Dc.prototype.S=function(a,b,c){function d(g){try{g=g||O.event;a:{var ca=g.target||g.srcElement;for(g=100;ca&&0<g;){if(ca.href&&ca.nodeName.match(/^a(?:rea)?$/i)){var l=ca;break a}ca=ca.parentNode;g--}l={}}("http:"==l.protocol||"https:"==l.protocol)&&sd(a,l.hostname||"")&&l.href&&(l.href=qd(e,l.href,b))}catch(k){J(26)}}var e=this;this.target.get(Ze)?De.auto(function(){return $e(e.target)},a,b?"fragment":"",c):(this.T||(this.T=!0,L(M,"mousedown",d,!1),L(M,"keyup",d,!1)),c&&L(M,"submit",function(g){g=
+g||O.event;if((g=g.target||g.srcElement)&&g.action){var ca=g.action.match(Jc);ca&&sd(a,ca[1])&&rd(e,g)}}))};function sd(a,b){if(b==M.location.hostname)return!1;for(var c=0;c<a.length;c++)if(a[c]instanceof RegExp){if(a[c].test(b))return!0}else if(0<=b.indexOf(a[c]))return!0;return!1}function ke(a,b){return b!=Ic(a,0)&&b!=Ic(a,-1)&&b!=Ic(a,-2)&&b!=pa(a,0)&&b!=pa(a,-1)&&b!=pa(a,-2)}function $e(a){var b=af(a);return{_ga:a.get(Q),_gid:a.get(I)||void 0,_gac:b?[b.qa,b.timestamp].join("."):void 0}}
+function af(a){function b(e){return void 0==e||""===e?0:Number(e)}var c=a.get(ce);if(c&&a.get(je)){var d=b(a.get(fe));if(1E3*d+b(a.get(he))<=(new Date).getTime())J(76);else return{timestamp:d,qa:c}}};var p=/^(GTM|OPT)-[A-Z0-9]+$/,q=/;_gaexp=[^;]*/g,r=/;((__utma=)|([^;=]+=GAX?\d+\.))[^;]*/g,Aa=/^https?:\/\/[\w\-.]+\.google.com(:\d+)?\/optimize\/opt-launch\.html\?.*$/,t=function(a){function b(d,e){e&&(c+="&"+d+"="+K(e))}var c="https://www.google-analytics.com/gtm/js?id="+K(a.id);"dataLayer"!=a.B&&b("l",a.B);b("t",a.target);b("cid",a.clientId);b("cidt",a.ka);b("gac",a.la);b("aip",a.ia);a.sync&&b("m","sync");b("cycle",a.G);a.qa&&b("gclid",a.qa);Aa.test(M.referrer)&&b("cb",String(hd()));return c};var Jd=function(a,b,c){this.aa=b;(b=c)||(b=(b=P(a,V))&&"t0"!=b?Wd.test(b)?"_gat_"+Cc(P(a,Na)):"_gat_"+Cc(b):"_gat");this.Y=b;this.ra=null},Rd=function(a,b){var c=b.get(Wb);b.set(Wb,function(e){Pd(a,e,ed);Pd(a,e,ia);var g=c(e);Qd(a,e);return g});var d=b.get(Xb);b.set(Xb,function(e){var g=d(e);if(se(e)){if(ne()!==H(a,e)){J(80);var ca={U:re(a,e,1),google:re(a,e,2),count:0};pe("https://stats.g.doubleclick.net/j/collect",ca.U,ca)}else ta(re(a,e,0));e.set(ed,"",!0)}return g})},Pd=function(a,b,c){!1===b.get(Ud)||
+b.get(c)||("1"==Ca(a.Y)[0]?b.set(c,"",!0):b.set(c,""+hd(),!0))},Qd=function(a,b){se(b)&&zc(a.Y,"1",P(b,Yb),P(b,W),P(b,Na),6E4,P(b,Be))},se=function(a){return!!a.get(ed)&&!1!==a.get(Ud)},re=function(a,b,c){var d=new ee,e=function(ca){$a(ca).F&&d.set($a(ca).F,b.get(ca))};e(hb);e(ib);e(Na);e(Q);e(ed);if(0==c||1==c)e(Ad),e(ia),e(I);d.set($a(ld).F,Td(b));var g="";d.map(function(ca,l){g+=K(ca)+"=";g+=K(""+l)+"&"});g+="z="+hd();0==c?g=a.aa+g:1==c?g="t=dc&aip=1&_r=3&"+g:2==c&&(g="t=sr&aip=1&_r=4&slf_rd=1&"+
+g);return g},H=function(a,b){null===a.ra&&(a.ra=1===Ed(b),a.ra&&J(33));return a.ra},Wd=/^gtm\d+$/;var fd=function(a,b){a=a.b;if(!a.get("dcLoaded")){var c=new $c(Dd(a));c.set(29);a.set(Gd,c.w);b=b||{};var d;b[U]&&(d=Cc(b[U]));b=new Jd(a,"https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&",d);Rd(b,a);a.set("dcLoaded",!0)}};var Sd=function(a){if(!a.get("dcLoaded")&&"cookie"==a.get(ac)){var b=new Jd(a);Pd(b,a,ed);Pd(b,a,ia);Qd(b,a);if(se(a)){var c=ne()!==H(b,a);a.set(Md,1,!0);c?(J(79),a.set(ad,"d",!0),a.set(qe,{U:re(b,a,1),google:re(b,a,2),count:0},!0)):a.set(ad,"b",!0)}}};var Lc=function(){var a=O.gaGlobal=O.gaGlobal||{};return a.hid=a.hid||hd()};var wb=/^(UA|YT|MO|GP)-(\d+)-(\d+)$/,pc=function(a){function b(e,g){d.b.data.set(e,g)}function c(e,g){b(e,g);d.filters.add(e)}var d=this;this.b=new Ya;this.filters=new Ha;b(V,a[V]);b(Na,sa(a[Na]));b(U,a[U]);b(W,a[W]||xa());b(Yb,a[Yb]);b(Zb,a[Zb]);b(Hd,a[Hd]);b(Be,a[Be]);b($b,a[$b]);b(Wc,a[Wc]);b(bc,a[bc]);b(cc,a[cc]);b(Ka,a[Ka]);b(dc,a[dc]);b(ec,a[ec]);b(ac,a[ac]);b(Ad,a[Ad]);b(n,a[n]);b(Kd,a[Kd]);b(je,a[je]);b(Ze,a[Ze]);b(oe,a[oe]);b(hb,1);b(ib,"j81");c(Qb,Ma);c(oa,ua);c(dd,cd);c(Rb,Oa);c(md,vb);
+c(Sb,nc);c(Uc,Yc);c(Tb,Ja);c(Vb,Ta);c(Vc,Hc);c(zd,yd);c(Ld,Sd);c(Wb,Pa);c(Xb,Sa);c(Cd,Fd(this));pd(this.b);td(this.b,a[Q]);this.b.set(jb,Lc())},td=function(a,b){var c=P(a,U);a.data.set(la,"_ga"==c?"_gid":c+"_gid");if("cookie"==P(a,ac)){hc=!1;c=Ca(P(a,U));c=Xd(a,c);if(!c){c=P(a,W);var d=P(a,$b)||xa();c=Xc("__utma",d,c);void 0!=c?(J(10),c=c.O[1]+"."+c.O[2]):c=void 0}c&&(hc=!0);if(d=c&&!a.get(Hd))if(d=c.split("."),2!=d.length)d=!1;else if(d=Number(d[1])){var e=R(a,Zb);d=d+e<(new Date).getTime()/1E3}else d=
+!1;d&&(c=void 0);c&&(a.data.set(xd,c),a.data.set(Q,c),(c=uc(a))&&a.data.set(I,c));if(a.get(je)&&(c=a.get(ce),d=a.get(ie),!c||d&&"aw.ds"!=d)){c={};if(M){d=[];e=M.cookie.split(";");for(var g=/^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/,ca=0;ca<e.length;ca++){var l=e[ca].match(g);l&&d.push({ja:l[1],value:l[2]})}e={};if(d&&d.length)for(g=0;g<d.length;g++)(ca=d[g].value.split("."),"1"!=ca[0]||3!=ca.length)?c&&(c.na=!0):ca[1]&&(e[d[g].ja]?c&&(c.pa=!0):e[d[g].ja]=[],e[d[g].ja].push({timestamp:ca[1],qa:ca[2]}));
+d=e}else d={};d=d[P(a,Na)];le(c);d&&0!=d.length&&(c=d[0],a.data.set(fe,c.timestamp),a.data.set(ce,c.qa))}}if(a.get(Hd)&&(c=be("_ga",!!a.get(cc)),g=be("_gl",!!a.get(cc)),d=De.get(a.get(cc)),e=d._ga,g&&0<g.indexOf("_ga*")&&!e&&J(30),g=d.gclid,ca=d._gac,c||e||g||ca))if(c&&e&&J(36),a.get(bc)||ye(a.get(Kd))){if(e&&(J(38),a.data.set(Q,e),d._gid&&(J(51),a.data.set(I,d._gid))),g?(J(82),a.data.set(ce,g),d.gclsrc&&a.data.set(ie,d.gclsrc)):ca&&(d=ca.split("."))&&2===d.length&&(J(37),a.data.set(ce,d[0]),a.data.set(fe,
+d[1])),c)b:if(d=c.indexOf("."),-1==d)J(22);else{e=c.substring(0,d);g=c.substring(d+1);d=g.indexOf(".");c=g.substring(0,d);g=g.substring(d+1);if("1"==e){if(d=g,ke(d,c)){J(23);break b}}else if("2"==e){d=g.indexOf("-");e="";0<d?(e=g.substring(0,d),d=g.substring(d+1)):d=g.substring(1);if(ke(e+d,c)){J(53);break b}e&&(J(2),a.data.set(I,e))}else{J(22);break b}J(11);a.data.set(Q,d);if(c=be("_gac",!!a.get(cc)))c=c.split("."),"1"!=c[0]||4!=c.length?J(72):ke(c[3],c[1])?J(71):(a.data.set(ce,c[3]),a.data.set(fe,
+c[2]),J(70))}}else J(21);b&&(J(9),a.data.set(Q,K(b)));a.get(Q)||((b=(b=O.gaGlobal&&O.gaGlobal.vid)&&-1!=b.search(jd)?b:void 0)?(J(17),a.data.set(Q,b)):(J(8),a.data.set(Q,ra())));a.get(I)||(J(3),a.data.set(I,ra()));mc(a)},pd=function(a){var b=O.navigator,c=O.screen,d=M.location;a.set(lb,ya(!!a.get(ec),!!a.get(Kd)));if(d){var e=d.pathname||"";"/"!=e.charAt(0)&&(J(31),e="/"+e);a.set(kb,d.protocol+"//"+d.hostname+e+d.search)}c&&a.set(qb,c.width+"x"+c.height);c&&a.set(pb,c.colorDepth+"-bit");c=M.documentElement;
+var g=(e=M.body)&&e.clientWidth&&e.clientHeight,ca=[];c&&c.clientWidth&&c.clientHeight&&("CSS1Compat"===M.compatMode||!g)?ca=[c.clientWidth,c.clientHeight]:g&&(ca=[e.clientWidth,e.clientHeight]);c=0>=ca[0]||0>=ca[1]?"":ca.join("x");a.set(rb,c);a.set(tb,fc());a.set(ob,M.characterSet||M.charset);a.set(sb,b&&"function"===typeof b.javaEnabled&&b.javaEnabled()||!1);a.set(nb,(b&&(b.language||b.browserLanguage)||"").toLowerCase());a.data.set(ce,be("gclid",!0));a.data.set(ie,be("gclsrc",!0));a.data.set(fe,
+Math.round((new Date).getTime()/1E3));if(d&&a.get(cc)&&(b=M.location.hash)){b=b.split(/[?&#]+/);d=[];for(c=0;c<b.length;++c)(D(b[c],"utm_id")||D(b[c],"utm_campaign")||D(b[c],"utm_source")||D(b[c],"utm_medium")||D(b[c],"utm_term")||D(b[c],"utm_content")||D(b[c],"gclid")||D(b[c],"dclid")||D(b[c],"gclsrc"))&&d.push(b[c]);0<d.length&&(b="#"+d.join("&"),a.set(kb,a.get(kb)+b))}};pc.prototype.get=function(a){return this.b.get(a)};pc.prototype.set=function(a,b){this.b.set(a,b)};
+var me={pageview:[mb],event:[ub,xb,yb,zb],social:[Bb,Cb,Db],timing:[Mb,Nb,Pb,Ob]};pc.prototype.send=function(a){if(!(1>arguments.length)){if("string"===typeof arguments[0]){var b=arguments[0];var c=[].slice.call(arguments,1)}else b=arguments[0]&&arguments[0][Va],c=arguments;b&&(c=za(me[b]||[],c),c[Va]=b,this.b.set(c,void 0,!0),this.filters.D(this.b),this.b.data.m={})}};pc.prototype.ma=function(a,b){var c=this;u(a,c,b)||(v(a,function(){u(a,c,b)}),y(String(c.get(V)),a,void 0,b,!0))};var rc=function(a){if("prerender"==M.visibilityState)return!1;a();return!0},z=function(a){if(!rc(a)){J(16);var b=!1,c=function(){if(!b&&rc(a)){b=!0;var d=c,e=M;e.removeEventListener?e.removeEventListener("visibilitychange",d,!1):e.detachEvent&&e.detachEvent("onvisibilitychange",d)}};L(M,"visibilitychange",c)}};var te=/^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/,sc=function(a){if(ea(a[0]))this.u=a[0];else{var b=te.exec(a[0]);null!=b&&4==b.length&&(this.c=b[1]||"t0",this.K=b[2]||"",this.methodName=b[3],this.a=[].slice.call(a,1),this.K||(this.A="create"==this.methodName,this.i="require"==this.methodName,this.g="provide"==this.methodName,this.ba="remove"==this.methodName),this.i&&(3<=this.a.length?(this.X=this.a[1],this.W=this.a[2]):this.a[1]&&(qa(this.a[1])?this.X=this.a[1]:this.W=this.a[1])));b=a[1];a=a[2];if(!this.methodName)throw"abort";
+if(this.i&&(!qa(b)||""==b))throw"abort";if(this.g&&(!qa(b)||""==b||!ea(a)))throw"abort";if(ud(this.c)||ud(this.K))throw"abort";if(this.g&&"t0"!=this.c)throw"abort";}};function ud(a){return 0<=a.indexOf(".")||0<=a.indexOf(":")};var Yd,Zd,$d,A;Yd=new ee;$d=new ee;A=new ee;Zd={ec:45,ecommerce:46,linkid:47};
+var u=function(a,b,c){b==N||b.get(V);var d=Yd.get(a);if(!ea(d))return!1;b.plugins_=b.plugins_||new ee;if(b.plugins_.get(a))return!0;b.plugins_.set(a,new d(b,c||{}));return!0},y=function(a,b,c,d,e){if(!ea(Yd.get(b))&&!$d.get(b)){Zd.hasOwnProperty(b)&&J(Zd[b]);a=N.j(a);if(p.test(b)){J(52);if(!a)return!0;c=d||{};d={id:b,B:c.dataLayer||"dataLayer",ia:!!a.get("anonymizeIp"),sync:e,G:!1};a.get("&gtm")==b&&(d.G=!0);var g=String(a.get("name"));"t0"!=g&&(d.target=g);G(String(a.get("trackingId")))||(d.clientId=
+String(a.get(Q)),d.ka=Number(a.get(n)),c=c.palindrome?r:q,c=(c=M.cookie.replace(/^|(; +)/g,";").match(c))?c.sort().join("").substring(1):void 0,d.la=c,d.qa=E(a.b.get(kb)||"","gclid"));c=d.B;g=(new Date).getTime();O[c]=O[c]||[];g={"gtm.start":g};e||(g.event="gtm.js");O[c].push(g);c=t(d)}!c&&Zd.hasOwnProperty(b)?(J(39),c=b+".js"):J(43);if(c){if(a){var ca=a.get(oe);qa(ca)||(ca=void 0)}c&&0<=c.indexOf("/")||(c=(ca?ca+"/34":bd(!1)+"/plugins/ua/")+c);ca=ae(c);a=ca.protocol;d=M.location.protocol;if(("https:"==
+a||a==d||("http:"!=a?0:"http:"==d))&&B(ca)){if(ca=ca.url)a=(a=M.querySelector&&M.querySelector("script[nonce]")||null)?a.nonce||a.getAttribute&&a.getAttribute("nonce")||"":"",e?(e="",a&&Nd.test(a)&&(e=' nonce="'+a+'"'),f.test(ca)&&M.write("<script"+e+' src="'+ca+'">\x3c/script>')):(e=M.createElement("script"),e.type="text/javascript",e.async=!0,e.src=ca,a&&e.setAttribute("nonce",a),ca=M.getElementsByTagName("script")[0],ca.parentNode.insertBefore(e,ca));$d.set(b,!0)}}}},v=function(a,b){var c=A.get(a)||
+[];c.push(b);A.set(a,c)},C=function(a,b){Yd.set(a,b);b=A.get(a)||[];for(var c=0;c<b.length;c++)b[c]();A.set(a,[])},B=function(a){var b=ae(M.location.href);if(D(a.url,"https://www.google-analytics.com/gtm/js?id="))return!0;if(a.query||0<=a.url.indexOf("?")||0<=a.path.indexOf("://"))return!1;if(a.host==b.host&&a.port==b.port)return!0;b="http:"==a.protocol?80:443;return"www.google-analytics.com"==a.host&&(a.port||b)==b&&D(a.path,"/plugins/")?!0:!1},ae=function(a){function b(l){var k=l.hostname||"",w=
+0<=k.indexOf("]");k=k.split(w?"]":":")[0].toLowerCase();w&&(k+="]");w=(l.protocol||"").toLowerCase();w=1*l.port||("http:"==w?80:"https:"==w?443:"");l=l.pathname||"";D(l,"/")||(l="/"+l);return[k,""+w,l]}var c=M.createElement("a");c.href=M.location.href;var d=(c.protocol||"").toLowerCase(),e=b(c),g=c.search||"",ca=d+"//"+e[0]+(e[1]?":"+e[1]:"");D(a,"//")?a=d+a:D(a,"/")?a=ca+a:!a||D(a,"?")?a=ca+e[2]+(a||g):0>a.split("/")[0].indexOf(":")&&(a=ca+e[2].substring(0,e[2].lastIndexOf("/"))+"/"+a);c.href=a;
+d=b(c);return{protocol:(c.protocol||"").toLowerCase(),host:d[0],port:d[1],path:d[2],query:c.search||"",url:a||""}};var Z={ga:function(){Z.f=[]}};Z.ga();Z.D=function(a){var b=Z.J.apply(Z,arguments);b=Z.f.concat(b);for(Z.f=[];0<b.length&&!Z.v(b[0])&&!(b.shift(),0<Z.f.length););Z.f=Z.f.concat(b)};Z.J=function(a){for(var b=[],c=0;c<arguments.length;c++)try{var d=new sc(arguments[c]);d.g?C(d.a[0],d.a[1]):(d.i&&(d.ha=y(d.c,d.a[0],d.X,d.W)),b.push(d))}catch(e){}return b};
+Z.v=function(a){try{if(a.u)a.u.call(O,N.j("t0"));else{var b=a.c==gb?N:N.j(a.c);if(a.A){if("t0"==a.c&&(b=N.create.apply(N,a.a),null===b))return!0}else if(a.ba)N.remove(a.c);else if(b)if(a.i){if(a.ha&&(a.ha=y(a.c,a.a[0],a.X,a.W)),!u(a.a[0],b,a.W))return!0}else if(a.K){var c=a.methodName,d=a.a,e=b.plugins_.get(a.K);e[c].apply(e,d)}else b[a.methodName].apply(b,a.a)}}catch(g){}};var N=function(a){J(1);Z.D.apply(Z,[arguments])};N.h={};N.P=[];N.L=0;N.ya=0;N.answer=42;var we=[Na,W,V];N.create=function(a){var b=za(we,[].slice.call(arguments));b[V]||(b[V]="t0");var c=""+b[V];if(N.h[c])return N.h[c];if(da(b))return null;b=new pc(b);N.h[c]=b;N.P.push(b);c=qc().tracker_created;if(ea(c))try{c(b)}catch(d){}return b};N.remove=function(a){for(var b=0;b<N.P.length;b++)if(N.P[b].get(V)==a){N.P.splice(b,1);N.h[a]=null;break}};N.j=function(a){return N.h[a]};N.getAll=function(){return N.P.slice(0)};
+N.N=function(){"ga"!=gb&&J(49);var a=O[gb];if(!a||42!=a.answer){N.L=a&&a.l;N.ya=1*new Date;N.loaded=!0;var b=O[gb]=N;X("create",b,b.create);X("remove",b,b.remove);X("getByName",b,b.j,5);X("getAll",b,b.getAll,6);b=pc.prototype;X("get",b,b.get,7);X("set",b,b.set,4);X("send",b,b.send);X("requireSync",b,b.ma);b=Ya.prototype;X("get",b,b.get);X("set",b,b.set);if("https:"!=M.location.protocol&&!Ba){a:{b=M.getElementsByTagName("script");for(var c=0;c<b.length&&100>c;c++){var d=b[c].src;if(d&&0==d.indexOf(bd(!0)+
+"/analytics")){b=!0;break a}}b=!1}b&&(Ba=!0)}(O.gaplugins=O.gaplugins||{}).Linker=Dc;b=Dc.prototype;C("linker",Dc);X("decorate",b,b.ca,20);X("autoLink",b,b.S,25);C("displayfeatures",fd);C("adfeatures",fd);a=a&&a.q;ka(a)?Z.D.apply(N,a):J(50)}};N.da=function(){for(var a=N.getAll(),b=0;b<a.length;b++)a[b].get(V)};var ze=N.N,Ae=O[gb];Ae&&Ae.r?ze():z(ze);z(function(){Z.D(["provide","render",ua])});})(window);

+ 93 - 26
js/bird.js

@@ -1,34 +1,101 @@
-'use strict';
-var game = new Phaser.Game(400, 490, Phaser.AUTO, 'game_div'), game_state = {
-        main: function () {
-        }
-    };
+// Initialize Phaser, and creates a 400x490px game
+var game = new Phaser.Game(400, 490, Phaser.AUTO, 'game_div');
+var game_state = {};
+
+// Creates a new 'main' state that will contain the game
+game_state.main = function() { };  
 game_state.main.prototype = {
-    preload: function () {
-        this.game.stage.backgroundColor = '#71c5cf', this.game.load.image('bird', '/../images/bird.png'), this.game.load.image('pipe', '/../images/pipe.png');
+
+    // Function called first to load all the assets
+    preload: function() { 
+        // Change the background color of the game
+        this.game.stage.backgroundColor = '#71c5cf';
+
+        // Load the bird sprite
+        this.game.load.image('bird', '/../images/bird.png');
+
+        // Load the pipe sprite
+        this.game.load.image('pipe', '/../images/pipe.png');
     },
-    create: function () {
-        this.bird = this.game.add.sprite(100, 245, 'bird'), this.bird.body.gravity.y = 1000, this.game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR).onDown.add(this.jump, this), this.pipes = game.add.group(), this.pipes.createMultiple(20, 'pipe'), this.timer = this.game.time.events.loop(1500, this.add_row_of_pipes, this), this.score = 0, this.label_score = this.game.add.text(20, 20, '0', {
-            font: '30px Arial',
-            fill: '#ffffff'
-        });
+
+    // Fuction called after 'preload' to setup the game 
+    create: function() { 
+        // Display the bird on the screen
+        this.bird = this.game.add.sprite(100, 245, 'bird');
+        
+        // Add gravity to the bird to make it fall
+        this.bird.body.gravity.y = 1000; 
+
+        // Call the 'jump' function when the spacekey is hit
+        var space_key = this.game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
+        space_key.onDown.add(this.jump, this); 
+
+        // Create a group of 20 pipes
+        this.pipes = game.add.group();
+        this.pipes.createMultiple(20, 'pipe');  
+
+        // Timer that calls 'add_row_of_pipes' ever 1.5 seconds
+        this.timer = this.game.time.events.loop(1500, this.add_row_of_pipes, this);           
+
+        // Add a score label on the top left of the screen
+        this.score = 0;
+        var style = { font: "30px Arial", fill: "#ffffff" };
+        this.label_score = this.game.add.text(20, 20, "0", style);  
     },
-    update: function () {
-        0 == this.bird.inWorld && this.restart_game(), this.game.physics.overlap(this.bird, this.pipes, this.restart_game, null, this);
+
+    // This function is called 60 times per second
+    update: function() {
+        // If the bird is out of the world (too high or too low), call the 'restart_game' function
+        if (this.bird.inWorld == false)
+            this.restart_game(); 
+
+        // If the bird overlap any pipes, call 'restart_game'
+        this.game.physics.overlap(this.bird, this.pipes, this.restart_game, null, this);      
     },
-    jump: function () {
+
+    // Make the bird jump 
+    jump: function() {
+        // Add a vertical velocity to the bird
         this.bird.body.velocity.y = -350;
     },
-    restart_game: function () {
-        this.game.time.events.remove(this.timer), this.game.state.start('main');
+
+    // Restart the game
+    restart_game: function() {
+        // Remove the timer
+        this.game.time.events.remove(this.timer);
+
+        // Start the 'main' state, which restarts the game
+        this.game.state.start('main');
     },
-    add_one_pipe: function (t, e) {
-        var i = this.pipes.getFirstDead();
-        i.reset(t, e), i.body.velocity.x = -200, i.outOfBoundsKill = !0;
+
+    // Add a pipe on the screen
+    add_one_pipe: function(x, y) {
+        // Get the first dead pipe of our group
+        var pipe = this.pipes.getFirstDead();
+
+        // Set the new position of the pipe
+        pipe.reset(x, y);
+
+         // Add velocity to the pipe to make it move left
+        pipe.body.velocity.x = -200; 
+               
+        // Kill the pipe when it's no longer visible 
+        pipe.outOfBoundsKill = true;
     },
-    add_row_of_pipes: function () {
-        for (var t = Math.floor(5 * Math.random()) + 1, e = 0; e < 8; e++)
-            e != t && e != t + 1 && this.add_one_pipe(400, 60 * e + 10);
-        this.score += 1, this.label_score.content = this.score;
-    }
-}, game.state.add('main', game_state.main), game.state.start('main');
+
+    // Add a row of 6 pipes with a hole somewhere in the middle
+    add_row_of_pipes: function() {
+        var hole = Math.floor(Math.random()*5)+1;
+        
+        for (var i = 0; i < 8; i++)
+            if (i != hole && i != hole +1) 
+                this.add_one_pipe(400, i*60+10);   
+    
+        this.score += 1;
+        this.label_score.content = this.score;  
+    },
+};
+
+// Add and start the 'main' state to start the game
+game.state.add('main', game_state.main);  
+game.state.start('main'); 

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 860
js/c2runtime.js


+ 173 - 99
js/motion.js

@@ -1,103 +1,177 @@
-'use strict';
-window.$ && window.$.Velocity && (window.Velocity = window.$.Velocity), NexT.motion = {}, NexT.motion.integrator = {
-    queue: [],
-    cursor: -1,
-    init: function () {
-        return this.queue = [], this.cursor = -1, this;
-    },
-    add: function (t) {
-        return this.queue.push(t), this;
-    },
-    next: function () {
-        this.cursor++;
-        var t = this.queue[this.cursor];
-        'function' == typeof t && t(NexT.motion.integrator);
-    },
-    bootstrap: function () {
-        this.next();
-    }
-}, NexT.motion.middleWares = {
-    logo: function (t) {
-        var e = [], o = document.querySelector('.brand'), n = document.querySelector('.custom-logo-image'), i = document.querySelector('.site-title'), r = document.querySelector('.site-subtitle'), c = document.querySelector('.logo-line-before i'), u = document.querySelector('.logo-line-after i');
-        function s(t, e) {
-            return {
-                e: t,
-                p: { translateX: e },
-                o: {
-                    duration: 500,
-                    sequenceQueue: !1
-                }
-            };
+/* global NexT, CONFIG, Velocity */
+
+if (window.$ && window.$.Velocity) window.Velocity = window.$.Velocity;
+
+NexT.motion = {};
+
+NexT.motion.integrator = {
+  queue : [],
+  cursor: -1,
+  init  : function() {
+    this.queue = [];
+    this.cursor = -1;
+    return this;
+  },
+  add: function(fn) {
+    this.queue.push(fn);
+    return this;
+  },
+  next: function() {
+    this.cursor++;
+    var fn = this.queue[this.cursor];
+    typeof fn === 'function' && fn(NexT.motion.integrator);
+  },
+  bootstrap: function() {
+    this.next();
+  }
+};
+
+NexT.motion.middleWares = {
+  logo: function(integrator) {
+    var sequence = [];
+    var brand = document.querySelector('.brand');
+    var image = document.querySelector('.custom-logo-image');
+    var title = document.querySelector('.site-title');
+    var subtitle = document.querySelector('.site-subtitle');
+    var logoLineTop = document.querySelector('.logo-line-before i');
+    var logoLineBottom = document.querySelector('.logo-line-after i');
+
+    brand && sequence.push({
+      e: brand,
+      p: {opacity: 1},
+      o: {duration: 200}
+    });
+
+    function getMistLineSettings(element, translateX) {
+      return {
+        e: element,
+        p: {translateX},
+        o: {
+          duration     : 500,
+          sequenceQueue: false
         }
-        function l() {
-            e.push({
-                e: n,
-                p: {
-                    opacity: 1,
-                    top: 0
-                },
-                o: { duration: 200 }
-            });
+      };
+    }
+
+    function pushImageToSequence() {
+      sequence.push({
+        e: image,
+        p: {opacity: 1, top: 0},
+        o: {duration: 200}
+      });
+    }
+
+    CONFIG.scheme === 'Mist' && logoLineTop && logoLineBottom
+    && sequence.push(
+      getMistLineSettings(logoLineTop, '100%'),
+      getMistLineSettings(logoLineBottom, '-100%')
+    );
+
+    CONFIG.scheme === 'Muse' && image && pushImageToSequence();
+
+    title && sequence.push({
+      e: title,
+      p: {opacity: 1, top: 0},
+      o: {duration: 200}
+    });
+
+    subtitle && sequence.push({
+      e: subtitle,
+      p: {opacity: 1, top: 0},
+      o: {duration: 200}
+    });
+
+    (CONFIG.scheme === 'Pisces' || CONFIG.scheme === 'Gemini') && image && pushImageToSequence();
+
+    if (sequence.length > 0) {
+      sequence[sequence.length - 1].o.complete = function() {
+        integrator.next();
+      };
+      Velocity.RunSequence(sequence);
+    } else {
+      integrator.next();
+    }
+
+    if (CONFIG.motion.async) {
+      integrator.next();
+    }
+  },
+
+  menu: function(integrator) {
+    Velocity(document.querySelectorAll('.menu-item'), 'transition.slideDownIn', {
+      display : null,
+      duration: 200,
+      complete: function() {
+        integrator.next();
+      }
+    });
+
+    if (CONFIG.motion.async) {
+      integrator.next();
+    }
+  },
+
+  subMenu: function(integrator) {
+    var subMenuItem = document.querySelectorAll('.sub-menu .menu-item');
+    if (subMenuItem.length > 0) {
+      subMenuItem.forEach(element => {
+        element.style.opacity = 1;
+      });
+    }
+    integrator.next();
+  },
+
+  postList: function(integrator) {
+    var postBlock = document.querySelectorAll('.post-block, .pagination, .comments');
+    var postBlockTransition = CONFIG.motion.transition.post_block;
+    var postHeader = document.querySelectorAll('.post-header');
+    var postHeaderTransition = CONFIG.motion.transition.post_header;
+    var postBody = document.querySelectorAll('.post-body');
+    var postBodyTransition = CONFIG.motion.transition.post_body;
+    var collHeader = document.querySelectorAll('.collection-header');
+    var collHeaderTransition = CONFIG.motion.transition.coll_header;
+
+    if (postBlock.length > 0) {
+      var postMotionOptions = window.postMotionOptions || {
+        stagger : 100,
+        drag    : true,
+        complete: function() {
+          integrator.next();
         }
-        o && e.push({
-            e: o,
-            p: { opacity: 1 },
-            o: { duration: 200 }
-        }), 'Mist' === CONFIG.scheme && c && u && e.push(s(c, '100%'), s(u, '-100%')), 'Muse' === CONFIG.scheme && n && l(), i && e.push({
-            e: i,
-            p: {
-                opacity: 1,
-                top: 0
-            },
-            o: { duration: 200 }
-        }), r && e.push({
-            e: r,
-            p: {
-                opacity: 1,
-                top: 0
-            },
-            o: { duration: 200 }
-        }), 'Pisces' !== CONFIG.scheme && 'Gemini' !== CONFIG.scheme || !n || l(), 0 < e.length ? (e[e.length - 1].o.complete = function () {
-            t.next();
-        }, Velocity.RunSequence(e)) : t.next(), CONFIG.motion.async && t.next();
-    },
-    menu: function (t) {
-        Velocity(document.querySelectorAll('.menu-item'), 'transition.slideDownIn', {
-            display: null,
-            duration: 200,
-            complete: function () {
-                t.next();
-            }
-        }), CONFIG.motion.async && t.next();
-    },
-    subMenu: function (t) {
-        var e = document.querySelectorAll('.sub-menu .menu-item');
-        0 < e.length && e.forEach(function (t) {
-            t.style.opacity = 1;
-        }), t.next();
-    },
-    postList: function (t) {
-        var e = document.querySelectorAll('.post-block, .pagination, .comments'), o = CONFIG.motion.transition.post_block, n = document.querySelectorAll('.post-header'), i = CONFIG.motion.transition.post_header, r = document.querySelectorAll('.post-body'), c = CONFIG.motion.transition.post_body, u = document.querySelectorAll('.collection-header'), s = CONFIG.motion.transition.coll_header;
-        if (0 < e.length) {
-            var l = window.postMotionOptions || {
-                stagger: 100,
-                drag: !0,
-                complete: function () {
-                    t.next();
-                }
-            };
-            CONFIG.motion.transition.post_block && Velocity(e, 'transition.' + o, l), CONFIG.motion.transition.post_header && Velocity(n, 'transition.' + i, l), CONFIG.motion.transition.post_body && Velocity(r, 'transition.' + c, l), CONFIG.motion.transition.coll_header && Velocity(u, 'transition.' + s, l);
+      };
+
+      if (CONFIG.motion.transition.post_block) {
+        Velocity(postBlock, 'transition.' + postBlockTransition, postMotionOptions);
+      }
+      if (CONFIG.motion.transition.post_header) {
+        Velocity(postHeader, 'transition.' + postHeaderTransition, postMotionOptions);
+      }
+      if (CONFIG.motion.transition.post_body) {
+        Velocity(postBody, 'transition.' + postBodyTransition, postMotionOptions);
+      }
+      if (CONFIG.motion.transition.coll_header) {
+        Velocity(collHeader, 'transition.' + collHeaderTransition, postMotionOptions);
+      }
+    }
+    if (CONFIG.scheme === 'Pisces' || CONFIG.scheme === 'Gemini') {
+      integrator.next();
+    }
+  },
+
+  sidebar: function(integrator) {
+    var sidebarAffix = document.querySelector('.sidebar-inner');
+    var sidebarAffixTransition = CONFIG.motion.transition.sidebar;
+    // Only for Pisces | Gemini.
+    if (sidebarAffixTransition && (CONFIG.scheme === 'Pisces' || CONFIG.scheme === 'Gemini')) {
+      Velocity(sidebarAffix, 'transition.' + sidebarAffixTransition, {
+        display : null,
+        duration: 200,
+        complete: function() {
+          // After motion complete need to remove transform from sidebar to let affix work on Pisces | Gemini.
+          sidebarAffix.style.transform = 'initial';
         }
-        'Pisces' !== CONFIG.scheme && 'Gemini' !== CONFIG.scheme || t.next();
-    },
-    sidebar: function (t) {
-        var e = document.querySelector('.sidebar-inner'), o = CONFIG.motion.transition.sidebar;
-        !o || 'Pisces' !== CONFIG.scheme && 'Gemini' !== CONFIG.scheme || Velocity(e, 'transition.' + o, {
-            display: null,
-            duration: 200,
-            complete: function () {
-                e.style.transform = 'initial';
-            }
-        }), t.next();
+      });
     }
-};
+    integrator.next();
+  }
+};

+ 111 - 53
js/next-boot.js

@@ -1,56 +1,114 @@
-'use strict';
-function _toConsumableArray(e) {
-    if (Array.isArray(e)) {
-        for (var t = 0, i = Array(e.length); t < e.length; t++)
-            i[t] = e[t];
-        return i;
+/* global NexT, CONFIG, Velocity */
+
+NexT.boot = {};
+
+NexT.boot.registerEvents = function() {
+
+  NexT.utils.registerScrollPercent();
+  NexT.utils.registerCanIUseTag();
+
+  // Mobile top menu bar.
+  document.querySelector('.site-nav-toggle .toggle').addEventListener('click', () => {
+    event.currentTarget.classList.toggle('toggle-close');
+    var siteNav = document.querySelector('.site-nav');
+    var animateAction = siteNav.classList.contains('site-nav-on') ? 'slideUp' : 'slideDown';
+
+    if (typeof Velocity === 'function') {
+      Velocity(siteNav, animateAction, {
+        duration: 200,
+        complete: function() {
+          siteNav.classList.toggle('site-nav-on');
+        }
+      });
+    } else {
+      siteNav.classList.toggle('site-nav-on');
     }
-    return Array.from(e);
-}
-NexT.boot = {}, NexT.boot.registerEvents = function () {
-    NexT.utils.registerScrollPercent(), NexT.utils.registerCanIUseTag(), document.querySelector('.site-nav-toggle .toggle').addEventListener('click', function () {
-        event.currentTarget.classList.toggle('toggle-close');
-        var e = document.querySelector('.site-nav'), t = e.classList.contains('site-nav-on') ? 'slideUp' : 'slideDown';
-        'function' == typeof Velocity ? Velocity(e, t, {
-            duration: 200,
-            complete: function () {
-                e.classList.toggle('site-nav-on');
-            }
-        }) : e.classList.toggle('site-nav-on');
-    }), document.querySelectorAll('.sidebar-nav li').forEach(function (e, s) {
-        e.addEventListener('click', function (e) {
-            var t = e.currentTarget, i = 'sidebar-nav-active', o = 'sidebar-panel-active';
-            if (!t.classList.contains(i)) {
-                var n = document.querySelectorAll('.sidebar-panel'), a = n[s], r = n[1 - s];
-                window.anime({
-                    targets: r,
-                    duration: 200,
-                    easing: 'linear',
-                    opacity: 0,
-                    complete: function () {
-                        r.classList.remove(o), a.style.opacity = 0, a.classList.add(o), window.anime({
-                            targets: a,
-                            duration: 200,
-                            easing: 'linear',
-                            opacity: 1
-                        });
-                    }
-                }), [].concat(_toConsumableArray(t.parentNode.children)).forEach(function (e) {
-                    e.classList.remove(i);
-                }), t.classList.add(i);
-            }
-        });
-    }), window.addEventListener('resize', NexT.utils.initSidebarDimension), window.addEventListener('hashchange', function () {
-        var e = location.hash;
-        if ('' !== e && !e.match(/%\S{2}/)) {
-            var t = document.querySelector('.tabs ul.nav-tabs li a[href="' + e + '"]');
-            t && t.click();
+  });
+
+  var TAB_ANIMATE_DURATION = 200;
+  document.querySelectorAll('.sidebar-nav li').forEach((element, index) => {
+    element.addEventListener('click', event => {
+      var item = event.currentTarget;
+      var activeTabClassName = 'sidebar-nav-active';
+      var activePanelClassName = 'sidebar-panel-active';
+      if (item.classList.contains(activeTabClassName)) return;
+
+      var targets = document.querySelectorAll('.sidebar-panel');
+      var target = targets[index];
+      var currentTarget = targets[1 - index];
+      window.anime({
+        targets : currentTarget,
+        duration: TAB_ANIMATE_DURATION,
+        easing  : 'linear',
+        opacity : 0,
+        complete: () => {
+          // Prevent adding TOC to Overview if Overview was selected when close & open sidebar.
+          currentTarget.classList.remove(activePanelClassName);
+          target.style.opacity = 0;
+          target.classList.add(activePanelClassName);
+          window.anime({
+            targets : target,
+            duration: TAB_ANIMATE_DURATION,
+            easing  : 'linear',
+            opacity : 1
+          });
         }
+      });
+
+      [...item.parentNode.children].forEach(element => {
+        element.classList.remove(activeTabClassName);
+      });
+      item.classList.add(activeTabClassName);
     });
-}, NexT.boot.refresh = function () {
-    CONFIG.fancybox && NexT.utils.wrapImageWithFancyBox(), CONFIG.mediumzoom && window.mediumZoom('.post-body :not(a) > img, .post-body > img'), CONFIG.lazyload && window.lozad('.post-body img').observe(), CONFIG.pangu && window.pangu.spacingPage(), CONFIG.exturl && NexT.utils.registerExtURL(), CONFIG.copycode.enable && NexT.utils.registerCopyCode(), NexT.utils.registerTabsTag(), NexT.utils.registerActiveMenuItem(), NexT.utils.registerLangSelect(), NexT.utils.registerSidebarTOC(), NexT.utils.wrapTableWithBox(), NexT.utils.registerVideoIframe();
-}, NexT.boot.motion = function () {
-    CONFIG.motion.enable && NexT.motion.integrator.add(NexT.motion.middleWares.logo).add(NexT.motion.middleWares.menu).add(NexT.motion.middleWares.postList).add(NexT.motion.middleWares.sidebar).bootstrap(), NexT.utils.updateSidebarPosition();
-}, window.addEventListener('DOMContentLoaded', function () {
-    NexT.boot.registerEvents(), NexT.boot.refresh(), NexT.boot.motion();
-});
+  });
+
+  window.addEventListener('resize', NexT.utils.initSidebarDimension);
+
+  window.addEventListener('hashchange', () => {
+    var tHash = location.hash;
+    if (tHash !== '' && !tHash.match(/%\S{2}/)) {
+      var target = document.querySelector(`.tabs ul.nav-tabs li a[href="${tHash}"]`);
+      target && target.click();
+    }
+  });
+};
+
+NexT.boot.refresh = function() {
+
+  /**
+   * Register JS handlers by condition option.
+   * Need to add config option in Front-End at 'layout/_partials/head.swig' file.
+   */
+  CONFIG.fancybox && NexT.utils.wrapImageWithFancyBox();
+  CONFIG.mediumzoom && window.mediumZoom('.post-body :not(a) > img, .post-body > img');
+  CONFIG.lazyload && window.lozad('.post-body img').observe();
+  CONFIG.pangu && window.pangu.spacingPage();
+
+  CONFIG.exturl && NexT.utils.registerExtURL();
+  CONFIG.copycode.enable && NexT.utils.registerCopyCode();
+  NexT.utils.registerTabsTag();
+  NexT.utils.registerActiveMenuItem();
+  NexT.utils.registerLangSelect();
+  NexT.utils.registerSidebarTOC();
+  NexT.utils.wrapTableWithBox();
+  NexT.utils.registerVideoIframe();
+};
+
+NexT.boot.motion = function() {
+  // Define Motion Sequence & Bootstrap Motion.
+  if (CONFIG.motion.enable) {
+    NexT.motion.integrator
+      .add(NexT.motion.middleWares.logo)
+      .add(NexT.motion.middleWares.menu)
+      .add(NexT.motion.middleWares.postList)
+      .add(NexT.motion.middleWares.sidebar)
+      .bootstrap();
+  }
+  NexT.utils.updateSidebarPosition();
+};
+
+window.addEventListener('DOMContentLoaded', () => {
+  NexT.boot.registerEvents();
+  NexT.boot.refresh();
+  NexT.boot.motion();
+});

+ 53 - 1
js/offlineClient.js

@@ -1 +1,53 @@
-'use strict';
+"use strict";
+
+(function() {
+	
+	class OfflineClient
+	{
+		constructor()
+		{
+			// Create a BroadcastChannel, if supported.
+			this._broadcastChannel = (typeof BroadcastChannel === "undefined" ? null : new BroadcastChannel("offline"));
+			
+			// Queue of messages received before a message callback is set.
+			this._queuedMessages = [];
+			
+			// The message callback.
+			this._onMessageCallback = null;
+			
+			// If BroadcastChannel is supported, listen for messages.
+			if (this._broadcastChannel)
+				this._broadcastChannel.onmessage = (e => this._OnBroadcastChannelMessage(e));
+		}
+		
+		_OnBroadcastChannelMessage(e)
+		{
+			// Have a message callback set: just forward the call.
+			if (this._onMessageCallback)
+			{
+				this._onMessageCallback(e);
+				return;
+			}
+			
+			// Otherwise the app hasn't loaded far enough to set a message callback.
+			// Buffer the incoming messages to replay when the app sets a callback.
+			this._queuedMessages.push(e);
+		}
+		
+		SetMessageCallback(f)
+		{
+			this._onMessageCallback = f;
+			
+			// Replay any queued messages through the handler, then clear the queue.
+			for (let e of this._queuedMessages)
+				this._onMessageCallback(e);
+			
+			this._queuedMessages.length = 0;
+		}
+	};
+	
+	// Create the offline client ASAP so we receive and start queueing any messages the SW broadcasts.
+	window.OfflineClientInfo = new OfflineClient();
+	
+}());
+

+ 0 - 403
js/sw.js

@@ -1,403 +0,0 @@
-"use strict";
-
-const OFFLINE_DATA_FILE = "offline.js";
-const CACHE_NAME_PREFIX = "c2offline";
-const BROADCASTCHANNEL_NAME = "offline";
-const CONSOLE_PREFIX = "[SW] ";
-const LAZYLOAD_KEYNAME = "";
-
-// Create a BroadcastChannel if supported.
-const broadcastChannel = (typeof BroadcastChannel === "undefined" ? null : new BroadcastChannel(BROADCASTCHANNEL_NAME));
-
-//////////////////////////////////////
-// Utility methods
-function PostBroadcastMessage(o)
-{
-	if (!broadcastChannel)
-		return;		// not supported
-	
-	// Impose artificial (and arbitrary!) delay of 3 seconds to make sure client is listening by the time the message is sent.
-	// Note we could remove the delay on some messages, but then we create a race condition where sometimes messages can arrive
-	// in the wrong order (e.g. "update ready" arrives before "started downloading update"). So to keep the consistent ordering,
-	// delay all messages by the same amount.
-	setTimeout(() => broadcastChannel.postMessage(o), 3000);
-};
-
-function Broadcast(type)
-{
-	PostBroadcastMessage({
-		"type": type
-	});
-};
-
-function BroadcastDownloadingUpdate(version)
-{
-	PostBroadcastMessage({
-		"type": "downloading-update",
-		"version": version
-	});
-}
-
-function BroadcastUpdateReady(version)
-{
-	PostBroadcastMessage({
-		"type": "update-ready",
-		"version": version
-	});
-}
-
-function IsUrlInLazyLoadList(url, lazyLoadList)
-{
-	if (!lazyLoadList)
-		return false;		// presumably lazy load list failed to load
-	
-	try {
-		for (const lazyLoadRegex of lazyLoadList)
-		{
-			if (new RegExp(lazyLoadRegex).test(url))
-				return true;
-		}
-	}
-	catch (err)
-	{
-		console.error(CONSOLE_PREFIX + "Error matching in lazy-load list: ", err);
-	}
-	
-	return false;
-};
-
-function WriteLazyLoadListToStorage(lazyLoadList)
-{
-	if (typeof localforage === "undefined")
-		return Promise.resolve();		// bypass if localforage not imported
-	else
-		return localforage.setItem(LAZYLOAD_KEYNAME, lazyLoadList)
-};
-
-function ReadLazyLoadListFromStorage()
-{
-	if (typeof localforage === "undefined")
-		return Promise.resolve([]);		// bypass if localforage not imported
-	else
-		return localforage.getItem(LAZYLOAD_KEYNAME);
-};
-
-function GetCacheBaseName()
-{
-	// Include the scope to avoid name collisions with any other SWs on the same origin.
-	// e.g. "c2offline-https://example.com/foo/" (won't collide with anything under bar/)
-	return CACHE_NAME_PREFIX + "-" + self.registration.scope;
-};
-
-function GetCacheVersionName(version)
-{
-	// Append the version number to the cache name.
-	// e.g. "c2offline-https://example.com/foo/-v2"
-	return GetCacheBaseName() + "-v" + version;
-};
-
-// Return caches.keys() filtered down to just caches we're interested in (with the right base name).
-// This filters out caches from unrelated scopes.
-async function GetAvailableCacheNames()
-{
-	const cacheNames = await caches.keys();
-	const cacheBaseName = GetCacheBaseName();
-	return cacheNames.filter(n => n.startsWith(cacheBaseName));
-};
-
-// Identify if an update is pending, which is the case when we have 2 or more available caches.
-// One must be an update that is waiting, since the next navigate that does an upgrade will
-// delete all the old caches leaving just one currently-in-use cache.
-async function IsUpdatePending()
-{
-	const availableCacheNames = await GetAvailableCacheNames();
-	return (availableCacheNames.length >= 2);
-};
-
-// Automatically deduce the main page URL (e.g. index.html or main.aspx) from the available browser windows.
-// This prevents having to hard-code an index page in the file list, implicitly caching it like AppCache did.
-async function GetMainPageUrl()
-{
-	const allClients = await clients.matchAll({
-		includeUncontrolled: true,
-		type: "window"
-	});
-	
-	for (const c of allClients)
-	{
-		// Parse off the scope from the full client URL, e.g. https://example.com/index.html -> index.html
-		let url = c.url;
-		if (url.startsWith(self.registration.scope))
-			url = url.substring(self.registration.scope.length);
-		
-		if (url && url !== "/")		// ./ is also implicitly cached so don't bother returning that
-		{
-			// If the URL is solely a search string, prefix it with / to ensure it caches correctly.
-			// e.g. https://example.com/?foo=bar needs to cache as /?foo=bar, not just ?foo=bar.
-			if (url.startsWith("?"))
-				url = "/" + url;
-			
-			return url;
-		}
-	}
-	
-	return "";		// no main page URL could be identified
-};
-
-// Hack to fetch optionally bypassing HTTP cache until fetch cache options are supported in Chrome (crbug.com/453190)
-function fetchWithBypass(request, bypassCache)
-{
-	if (typeof request === "string")
-		request = new Request(request);
-	
-	if (bypassCache)
-	{
-		// bypass enabled: add a random search parameter to avoid getting a stale HTTP cache result
-		const url = new URL(request.url);
-		url.search += Math.floor(Math.random() * 1000000);
-
-		return fetch(url, {
-			headers: request.headers,
-			mode: request.mode,
-			credentials: request.credentials,
-			redirect: request.redirect,
-			cache: "no-store"
-		});
-	}
-	else
-	{
-		// bypass disabled: perform normal fetch which is allowed to return from HTTP cache
-		return fetch(request);
-	}
-};
-
-// Effectively a cache.addAll() that only creates the cache on all requests being successful (as a weak attempt at making it atomic)
-// and can optionally cache-bypass with fetchWithBypass in every request
-async function CreateCacheFromFileList(cacheName, fileList, bypassCache)
-{
-	// Kick off all requests and wait for them all to complete
-	const responses = await Promise.all(fileList.map(url => fetchWithBypass(url, bypassCache)));
-	
-	// Check if any request failed. If so don't move on to opening the cache.
-	// This makes sure we only open a cache if all requests succeeded.
-	let allOk = true;
-	
-	for (const response of responses)
-	{
-		if (!response.ok)
-		{
-			allOk = false;
-			console.error(CONSOLE_PREFIX + "Error fetching '" + response.url + "' (" + response.status + " " + response.statusText + ")");
-		}
-	}
-	
-	if (!allOk)
-		throw new Error("not all resources were fetched successfully");
-	
-	// Can now assume all responses are OK. Open a cache and write all responses there.
-	// TODO: ideally we can do this transactionally to ensure a complete cache is written as one atomic operation.
-	// This needs either new transactional features in the spec, or at the very least a way to rename a cache
-	// (so we can write to a temporary name that won't be returned by GetAvailableCacheNames() and then rename it when ready).
-	const cache = await caches.open(cacheName);
-	
-	try {
-		return await Promise.all(responses.map(
-			(response, i) => cache.put(fileList[i], response)
-		));
-	}
-	catch (err)
-	{
-		// Not sure why cache.put() would fail (maybe if storage quota exceeded?) but in case it does,
-		// clean up the cache to try to avoid leaving behind an incomplete cache.
-		console.error(CONSOLE_PREFIX + "Error writing cache entries: ", err);
-		caches.delete(cacheName);
-		throw err;
-	}
-};
-
-async function UpdateCheck(isFirst)
-{
-	try {
-		// Always bypass cache when requesting offline.js to make sure we find out about new versions.
-		const response = await fetchWithBypass(OFFLINE_DATA_FILE, true);
-		
-		if (!response.ok)
-			throw new Error(OFFLINE_DATA_FILE + " responded with " + response.status + " " + response.statusText);
-			
-		const data = await response.json();
-		
-		const version = data.version;
-		const fileList = data.fileList;
-		const lazyLoadList = data.lazyLoad;
-		const currentCacheName = GetCacheVersionName(version);
-		
-		const cacheExists = await caches.has(currentCacheName);
-
-		// Don't recache if there is already a cache that exists for this version. Assume it is complete.
-		if (cacheExists)
-		{
-			// Log whether we are up-to-date or pending an update.
-			const isUpdatePending = await IsUpdatePending();
-			if (isUpdatePending)
-			{
-				console.log(CONSOLE_PREFIX + "Update pending");
-				Broadcast("update-pending");
-			}
-			else
-			{
-				console.log(CONSOLE_PREFIX + "Up to date");
-				Broadcast("up-to-date");
-			}
-			return;
-		}
-		
-		// Implicitly add the main page URL to the file list, e.g. "index.html", so we don't have to assume a specific name.
-		const mainPageUrl = await GetMainPageUrl();
-		
-		// Prepend the main page URL to the file list if we found one and it is not already in the list.
-		// Also make sure we request the base / which should serve the main page.
-		fileList.unshift("./");
-		
-		if (mainPageUrl && fileList.indexOf(mainPageUrl) === -1)
-			fileList.unshift(mainPageUrl);
-		
-		console.log(CONSOLE_PREFIX + "Caching " + fileList.length + " files for offline use");
-		
-		if (isFirst)
-			Broadcast("downloading");
-		else
-			BroadcastDownloadingUpdate(version);
-		
-		// Note we don't bypass the cache on the first update check. This is because SW installation and the following
-		// update check caching will race with the normal page load requests. For any normal loading fetches that have already
-		// completed or are in-flight, it is pointless and wasteful to cache-bust the request for offline caching, since that
-		// forces a second network request to be issued when a response from the browser HTTP cache would be fine.
-		if (lazyLoadList)
-			await WriteLazyLoadListToStorage(lazyLoadList);							// dump lazy load list to local storage#
-		
-		await CreateCacheFromFileList(currentCacheName, fileList, !isFirst);
-		const isUpdatePending = await IsUpdatePending();
-		
-		if (isUpdatePending)
-		{
-			console.log(CONSOLE_PREFIX + "All resources saved, update ready");
-			BroadcastUpdateReady(version);
-		}
-		else
-		{
-			console.log(CONSOLE_PREFIX + "All resources saved, offline support ready");
-			Broadcast("offline-ready");
-		}
-	}
-	catch (err)
-	{
-		// Update check fetches fail when we're offline, but in case there's any other kind of problem with it, log a warning.
-		console.warn(CONSOLE_PREFIX + "Update check failed: ", err);
-	}
-};
-
-self.addEventListener("install", event =>
-{
-	// On install kick off an update check to cache files on first use.
-	// If it fails we can still complete the install event and leave the SW running, we'll just
-	// retry on the next navigate.
-	event.waitUntil(
-		UpdateCheck(true)		// first update
-		.catch(() => null)
-	);
-});
-
-async function GetCacheNameToUse(availableCacheNames, doUpdateCheck)
-{
-	// Prefer the oldest cache available. This avoids mixed-version responses by ensuring that if a new cache
-	// is created and filled due to an update check while the page is running, we keep returning resources
-	// from the original (oldest) cache only.
-	if (availableCacheNames.length === 1 || !doUpdateCheck)
-		return availableCacheNames[0];
-	
-	// We are making a navigate request with more than one cache available. Check if we can expire any old ones.
-	const allClients = await clients.matchAll();
-	
-	// If there are other clients open, don't expire anything yet. We don't want to delete any caches they
-	// might be using, which could cause mixed-version responses.
-	if (allClients.length > 1)
-		return availableCacheNames[0];
-	
-	// Identify newest cache to use. Delete all the others.
-	const latestCacheName = availableCacheNames[availableCacheNames.length - 1];
-	console.log(CONSOLE_PREFIX + "Updating to new version");
-	
-	await Promise.all(
-		availableCacheNames.slice(0, -1)
-		.map(c => caches.delete(c))
-	);
-	
-	return latestCacheName;
-};
-
-async function HandleFetch(event, doUpdateCheck)
-{
-	const availableCacheNames = await GetAvailableCacheNames();
-	
-	// No caches available: go to network
-	if (!availableCacheNames.length)
-		return fetch(event.request);
-	
-	const useCacheName = await GetCacheNameToUse(availableCacheNames, doUpdateCheck);
-	const cache = await caches.open(useCacheName);
-	const cachedResponse = await cache.match(event.request);
-	
-	if (cachedResponse)
-		return cachedResponse;		// use cached response
-	
-	// We need to check if this request is to be lazy-cached. Send the request and load the lazy-load list
-	// from storage simultaneously.
-	const result = await Promise.all([fetch(event.request), ReadLazyLoadListFromStorage()]);
-	const fetchResponse = result[0];
-	const lazyLoadList = result[1];
-	
-	if (IsUrlInLazyLoadList(event.request.url, lazyLoadList))
-	{
-		// Handle failure writing to the cache. This can happen if the storage quota is exceeded, which is particularly
-		// likely in Safari 11.1, which appears to have very tight storage limits. Make sure even in the event of an error
-		// we continue to return the response from the fetch.
-		try {
-			// Note clone response since we also respond with it
-			await cache.put(event.request, fetchResponse.clone());
-		}
-		catch (err)
-		{
-			console.warn(CONSOLE_PREFIX + "Error caching '" + event.request.url + "': ", err);
-		}
-	}
-		
-	return fetchResponse;
-};
-
-self.addEventListener("fetch", event =>
-{
-	/** NOTE (iain)
-	 *  This check is to prevent a bug with XMLHttpRequest where if its
-	 *  proxied with "FetchEvent.prototype.respondWith" no upload progress
-	 *  events are triggered. By returning we allow the default action to
-	 *  occur instead. Currently all cross-origin requests fall back to default.
-	 */
-	if (new URL(event.request.url).origin !== location.origin)
-		return;
-		
-	// Check for an update on navigate requests
-	const doUpdateCheck = (event.request.mode === "navigate");
-	
-	const responsePromise = HandleFetch(event, doUpdateCheck);
-
-	if (doUpdateCheck)
-	{
-		// allow the main request to complete, then check for updates
-		event.waitUntil(
-			responsePromise
-			.then(() => UpdateCheck(false))		 // not first check
-		);
-	}
-
-	event.respondWith(responsePromise);
-});

+ 14 - 14
lib/pace/README.html

@@ -1,17 +1,17 @@
-<h1 align="center"><a href="https://github.com/HubSpot/pace" target="_blank" rel="noopener">Progress bar</a> for <a href="https://github.com/theme-next" target="_blank" rel="noopener">NexT</a></h1><h1 align="center">Installation</h1><h2>If you want to use the CDN instead of clone this repo, please jump to the Step 3.</h2><h2 align="center">Step 1 &rarr; Go to NexT dir</h2><p>Change dir to <strong>NexT</strong> directory. There must be <code>layout</code>, <code>source</code>, <code>languages</code> and other directories:</p><pre class="highlight"><code class="sh">$ <span class="hljs-built_in">cd</span> themes/next
+<h1 align="center"><a href="https://github.com/HubSpot/pace" target="_blank" rel="noopener">Progress bar</a> for <a href="https://github.com/theme-next" target="_blank" rel="noopener">NexT</a></h1><h1 align="center">Installation</h1><h2>If you want to use the CDN instead of clone this repo, please jump to the Step 3.</h2><h2 align="center">Step 1 &rarr; Go to NexT dir</h2><p>Change dir to <strong>NexT</strong> directory. There must be <code>layout</code>, <code>source</code>, <code>languages</code> and other directories:</p><pre class="highlight"><code class="sh">$ <span class="built_in">cd</span> themes/next
 $ ls
-_config.yml  crowdin.yml  docs  gulpfile.js  languages  layout  LICENSE.md  package.json  README.md  scripts  <span class="hljs-built_in">source</span>
-</code></pre><h2 align="center">Step 2 &rarr; Get module</h2><p>Install module to <code>source/lib</code> directory:</p><pre class="highlight"><code class="sh">$ git <span class="hljs-built_in">clone</span> https://github.com/theme-next/theme-next-pace <span class="hljs-built_in">source</span>/lib/pace
-</code></pre><h2 align="center">Step 3 &rarr; Set it up</h2><p>Enable module in <strong>NexT</strong> <code>_config.yml</code> file and select your theme:</p><pre class="highlight"><code class="yml"><span class="hljs-attr">pace:</span>
-  <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
-  <span class="hljs-comment"># Themes list:</span>
-  <span class="hljs-comment"># big-counter | bounce | barber-shop | center-atom | center-circle | center-radar | center-simple</span>
-  <span class="hljs-comment"># corner-indicator | fill-left | flat-top | flash | loading-bar | mac-osx | material | minimal</span>
-  <span class="hljs-attr">theme:</span> <span class="hljs-string">minimal</span>
-</code></pre><p><strong>And, if you wants to use the CDN, then need to set:</strong> (you also need to find your corresponding theme css link in <a href="https://www.jsdelivr.com/package/npm/pace-js?path=themes" target="_blank" rel="noopener">jsdelivr</a>)</p><pre class="highlight"><code class="yml"><span class="hljs-attr">vendors:</span>
-  <span class="hljs-string">...</span>
-  <span class="hljs-attr">pace:</span> <span class="hljs-string">//cdn.jsdelivr.net/npm/pace-js@1/pace.min.js</span>
-  <span class="hljs-attr">pace_css:</span> <span class="hljs-string">//cdn.jsdelivr.net/npm/pace-js@1/themes/blue/pace-theme-minimal.css</span>
-</code></pre><h1 align="center">Update</h1><pre class="highlight"><code class="sh">$ <span class="hljs-built_in">cd</span> themes/next/<span class="hljs-built_in">source</span>/lib/pace
+_config.yml  crowdin.yml  docs  gulpfile.js  languages  layout  LICENSE.md  package.json  README.md  scripts  <span class="built_in">source</span>
+</code></pre><h2 align="center">Step 2 &rarr; Get module</h2><p>Install module to <code>source/lib</code> directory:</p><pre class="highlight"><code class="sh">$ git <span class="built_in">clone</span> https://github.com/theme-next/theme-next-pace <span class="built_in">source</span>/lib/pace
+</code></pre><h2 align="center">Step 3 &rarr; Set it up</h2><p>Enable module in <strong>NexT</strong> <code>_config.yml</code> file and select your theme:</p><pre class="highlight"><code class="yml"><span class="attr">pace:</span>
+  <span class="attr">enable:</span> <span class="literal">true</span>
+  <span class="comment"># Themes list:</span>
+  <span class="comment"># big-counter | bounce | barber-shop | center-atom | center-circle | center-radar | center-simple</span>
+  <span class="comment"># corner-indicator | fill-left | flat-top | flash | loading-bar | mac-osx | material | minimal</span>
+  <span class="attr">theme:</span> <span class="string">minimal</span>
+</code></pre><p><strong>And, if you wants to use the CDN, then need to set:</strong> (you also need to find your corresponding theme css link in <a href="https://www.jsdelivr.com/package/npm/pace-js?path=themes" target="_blank" rel="noopener">jsdelivr</a>)</p><pre class="highlight"><code class="yml"><span class="attr">vendors:</span>
+  <span class="string">...</span>
+  <span class="attr">pace:</span> <span class="string">//cdn.jsdelivr.net/npm/pace-js@1/pace.min.js</span>
+  <span class="attr">pace_css:</span> <span class="string">//cdn.jsdelivr.net/npm/pace-js@1/themes/blue/pace-theme-minimal.css</span>
+</code></pre><h1 align="center">Update</h1><pre class="highlight"><code class="sh">$ <span class="built_in">cd</span> themes/next/<span class="built_in">source</span>/lib/pace
 $ git pull
 </code></pre>

+ 103 - 0
motion.js

@@ -0,0 +1,103 @@
+'use strict';
+window.$ && window.$.Velocity && (window.Velocity = window.$.Velocity), NexT.motion = {}, NexT.motion.integrator = {
+    queue: [],
+    cursor: -1,
+    init: function () {
+        return this.queue = [], this.cursor = -1, this;
+    },
+    add: function (t) {
+        return this.queue.push(t), this;
+    },
+    next: function () {
+        this.cursor++;
+        var t = this.queue[this.cursor];
+        'function' == typeof t && t(NexT.motion.integrator);
+    },
+    bootstrap: function () {
+        this.next();
+    }
+}, NexT.motion.middleWares = {
+    logo: function (t) {
+        var e = [], o = document.querySelector('.brand'), n = document.querySelector('.custom-logo-image'), i = document.querySelector('.site-title'), r = document.querySelector('.site-subtitle'), c = document.querySelector('.logo-line-before i'), u = document.querySelector('.logo-line-after i');
+        function s(t, e) {
+            return {
+                e: t,
+                p: { translateX: e },
+                o: {
+                    duration: 500,
+                    sequenceQueue: !1
+                }
+            };
+        }
+        function l() {
+            e.push({
+                e: n,
+                p: {
+                    opacity: 1,
+                    top: 0
+                },
+                o: { duration: 200 }
+            });
+        }
+        o && e.push({
+            e: o,
+            p: { opacity: 1 },
+            o: { duration: 200 }
+        }), 'Mist' === CONFIG.scheme && c && u && e.push(s(c, '100%'), s(u, '-100%')), 'Muse' === CONFIG.scheme && n && l(), i && e.push({
+            e: i,
+            p: {
+                opacity: 1,
+                top: 0
+            },
+            o: { duration: 200 }
+        }), r && e.push({
+            e: r,
+            p: {
+                opacity: 1,
+                top: 0
+            },
+            o: { duration: 200 }
+        }), 'Pisces' !== CONFIG.scheme && 'Gemini' !== CONFIG.scheme || !n || l(), 0 < e.length ? (e[e.length - 1].o.complete = function () {
+            t.next();
+        }, Velocity.RunSequence(e)) : t.next(), CONFIG.motion.async && t.next();
+    },
+    menu: function (t) {
+        Velocity(document.querySelectorAll('.menu-item'), 'transition.slideDownIn', {
+            display: null,
+            duration: 200,
+            complete: function () {
+                t.next();
+            }
+        }), CONFIG.motion.async && t.next();
+    },
+    subMenu: function (t) {
+        var e = document.querySelectorAll('.sub-menu .menu-item');
+        0 < e.length && e.forEach(function (t) {
+            t.style.opacity = 1;
+        }), t.next();
+    },
+    postList: function (t) {
+        var e = document.querySelectorAll('.post-block, .pagination, .comments'), o = CONFIG.motion.transition.post_block, n = document.querySelectorAll('.post-header'), i = CONFIG.motion.transition.post_header, r = document.querySelectorAll('.post-body'), c = CONFIG.motion.transition.post_body, u = document.querySelectorAll('.collection-header'), s = CONFIG.motion.transition.coll_header;
+        if (0 < e.length) {
+            var l = window.postMotionOptions || {
+                stagger: 100,
+                drag: !0,
+                complete: function () {
+                    t.next();
+                }
+            };
+            CONFIG.motion.transition.post_block && Velocity(e, 'transition.' + o, l), CONFIG.motion.transition.post_header && Velocity(n, 'transition.' + i, l), CONFIG.motion.transition.post_body && Velocity(r, 'transition.' + c, l), CONFIG.motion.transition.coll_header && Velocity(u, 'transition.' + s, l);
+        }
+        'Pisces' !== CONFIG.scheme && 'Gemini' !== CONFIG.scheme || t.next();
+    },
+    sidebar: function (t) {
+        var e = document.querySelector('.sidebar-inner'), o = CONFIG.motion.transition.sidebar;
+        !o || 'Pisces' !== CONFIG.scheme && 'Gemini' !== CONFIG.scheme || Velocity(e, 'transition.' + o, {
+            display: null,
+            duration: 200,
+            complete: function () {
+                e.style.transform = 'initial';
+            }
+        }), t.next();
+    }
+};

+ 57 - 0
next-boot.js

@@ -0,0 +1,57 @@
+'use strict';
+function _toConsumableArray(e) {
+    if (Array.isArray(e)) {
+        for (var t = 0, i = Array(e.length); t < e.length; t++)
+            i[t] = e[t];
+        return i;
+    }
+    return Array.from(e);
+}
+NexT.boot = {}, NexT.boot.registerEvents = function () {
+    NexT.utils.registerScrollPercent(), NexT.utils.registerCanIUseTag(), document.querySelector('.site-nav-toggle .toggle').addEventListener('click', function () {
+        event.currentTarget.classList.toggle('toggle-close');
+        var e = document.querySelector('.site-nav'), t = e.classList.contains('site-nav-on') ? 'slideUp' : 'slideDown';
+        'function' == typeof Velocity ? Velocity(e, t, {
+            duration: 200,
+            complete: function () {
+                e.classList.toggle('site-nav-on');
+            }
+        }) : e.classList.toggle('site-nav-on');
+    });
+    document.querySelectorAll('.sidebar-nav li').forEach(function (e, s) {
+        e.addEventListener('click', function (e) {
+            var t = e.currentTarget, i = 'sidebar-nav-active', o = 'sidebar-panel-active';
+            if (!t.classList.contains(i)) {
+                var n = document.querySelectorAll('.sidebar-panel'), a = n[s], r = n[1 - s];
+                window.anime({
+                    targets: r,
+                    duration: 200,
+                    easing: 'linear',
+                    opacity: 0,
+                    complete: function () {
+                        r.classList.remove(o), a.style.opacity = 0, a.classList.add(o), window.anime({
+                            targets: a,
+                            duration: 200,
+                            easing: 'linear',
+                            opacity: 1
+                        });
+                    }
+                }), [].concat(_toConsumableArray(t.parentNode.children)).forEach(function (e) {
+                    e.classList.remove(i);
+                }), t.classList.add(i);
+            }
+        });
+    }), window.addEventListener('resize', NexT.utils.initSidebarDimension), window.addEventListener('hashchange', function () {
+        var e = location.hash;
+        if ('' !== e && !e.match(/%\S{2}/)) {
+            var t = document.querySelector('.tabs ul.nav-tabs li a[href="' + e + '"]');
+            t && t.click();
+        }
+    });
+}, NexT.boot.refresh = function () {
+    CONFIG.fancybox && NexT.utils.wrapImageWithFancyBox(), CONFIG.mediumzoom && window.mediumZoom('.post-body :not(a) > img, .post-body > img'), CONFIG.lazyload && window.lozad('.post-body img').observe(), CONFIG.pangu && window.pangu.spacingPage(), CONFIG.exturl && NexT.utils.registerExtURL(), CONFIG.copycode.enable && NexT.utils.registerCopyCode(), NexT.utils.registerTabsTag(), NexT.utils.registerActiveMenuItem(), NexT.utils.registerLangSelect(), NexT.utils.registerSidebarTOC(), NexT.utils.wrapTableWithBox(), NexT.utils.registerVideoIframe();
+}, NexT.boot.motion = function () {
+    CONFIG.motion.enable && NexT.motion.integrator.add(NexT.motion.middleWares.logo).add(NexT.motion.middleWares.menu).add(NexT.motion.middleWares.postList).add(NexT.motion.middleWares.sidebar).bootstrap(), NexT.utils.updateSidebarPosition();
+}, window.addEventListener('DOMContentLoaded', function () {
+    NexT.boot.registerEvents(), NexT.boot.refresh(), NexT.boot.motion();
+});

+ 26 - 0
offlineClient.js

@@ -0,0 +1,26 @@
+'use strict';
+var _createClass = function () {
+    function s(e, a) {
+        for (var n = 0; n < a.length; n++) {
+            var s = a[n];
+            s.enumerable = s.enumerable || !1, s.configurable = !0, 'value' in s && (s.writable = !0), Object.defineProperty(e, s.key, s);
+        }
+    }
+    return function (e, a, n) {
+        return a && s(e.prototype, a), n && s(e, n), e;
+    };
+}();
+function _classCallCheck(e, a) {
+    if (!(e instanceof a))
+        throw new TypeError('Cannot call a class as a function');
+}
+!function () {
+    var e = (_createClass(n, [{key:"_OnBroadcastChannelMessage",value:function(e){this._onMessageCallback?this._onMessageCallback(e):this._queuedMessages.push(e)}},{key:"SetMessageCallback",value:function(e){this._onMessageCallback=e;var a=!0,n=!1,s=void 0;try{for(var t,l=this._queuedMessages[Symbol.iterator]();!(a=(t=l.next()).done);a=!0){var r=t.value;this._onMessageCallback(r)}}catch(e){n=!0,s=e}finally{try{!a&&l.return&&l.return()}finally{if(n)throw s}}this._queuedMessages.length=0}}]), n);
+    function n() {
+        var a = this;
+        _classCallCheck(this, n), this._broadcastChannel = 'undefined' == typeof BroadcastChannel ? null : new BroadcastChannel('offline'), this._queuedMessages = [], this._onMessageCallback = null, this._broadcastChannel && (this._broadcastChannel.onmessage = function (e) {
+            return a._OnBroadcastChannelMessage(e);
+        });
+    }
+    window.OfflineClientInfo = new e();
+}();

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
sans/index.html


+ 235 - 0
utils.js

@@ -0,0 +1,235 @@
+'use strict';
+function _toConsumableArray(e) {
+    if (Array.isArray(e)) {
+        for (var t = 0, n = Array(e.length); t < e.length; t++)
+            n[t] = e[t];
+        return n;
+    }
+    return Array.from(e);
+}
+HTMLElement.prototype.wrap = function (e) {
+    this.parentNode.insertBefore(e, this), this.parentNode.removeChild(this), e.appendChild(this);
+}, NexT.utils = {
+    wrapImageWithFancyBox: function () {
+        document.querySelectorAll('.post-body :not(a) > img, .post-body > img').forEach(function (e) {
+            var t = $(e), n = t.attr('data-src') || t.attr('src'), a = t.wrap('<a class="fancybox fancybox.image" href="' + n + '" itemscope itemtype="http://schema.org/ImageObject" itemprop="url"></a>').parent('a');
+            t.is('.post-gallery img') ? a.attr('data-fancybox', 'gallery').attr('rel', 'gallery') : t.is('.group-picture img') ? a.attr('data-fancybox', 'group').attr('rel', 'group') : a.attr('data-fancybox', 'default').attr('rel', 'default');
+            var r = t.attr('title') || t.attr('alt');
+            r && (a.append('<p class="image-caption">' + r + '</p>'), a.attr('title', r).attr('data-caption', r));
+        }), $.fancybox.defaults.hash = !1, $('.fancybox').fancybox({
+            loop: !0,
+            helpers: { overlay: { locked: !1 } }
+        });
+    },
+    registerExtURL: function () {
+        document.querySelectorAll('span.exturl').forEach(function (e) {
+            var t = document.createElement('a');
+            t.href = decodeURIComponent(atob(e.dataset.url).split('').map(function (e) {
+                return '%' + ('00' + e.charCodeAt(0).toString(16)).slice(-2);
+            }).join('')), t.rel = 'noopener external nofollow noreferrer', t.target = '_blank', t.className = e.className, t.innerHTML = e.innerHTML, e.parentNode.replaceChild(t, e);
+        });
+    },
+    registerCopyCode: function () {
+        document.querySelectorAll('figure.highlight').forEach(function (e) {
+            var t = document.createElement('div');
+            e.wrap(t), t.classList.add('highlight-container'), t.insertAdjacentHTML('beforeend', '<div class="copy-btn"><i class="fa fa-clipboard"></i></div>');
+            var n = e.parentNode.querySelector('.copy-btn');
+            n.addEventListener('click', function (e) {
+                var t = e.currentTarget, n = [].concat(_toConsumableArray(t.parentNode.querySelectorAll('.code .line'))).map(function (e) {
+                        return e.innerText;
+                    }).join('\n'), a = document.createElement('textarea');
+                a.style.top = window.scrollY + 'px', a.style.position = 'absolute', a.style.opacity = '0', a.readOnly = !0, a.value = n, document.body.append(a);
+                var r = document.getSelection(), o = 0 < r.rangeCount && r.getRangeAt(0);
+                a.select(), a.setSelectionRange(0, n.length), a.readOnly = !1;
+                var i = document.execCommand('copy');
+                CONFIG.copycode.show_result && (t.querySelector('i').className = i ? 'fa fa-check' : 'fa fa-times'), a.blur(), t.blur(), o && (r.removeAllRanges(), r.addRange(o)), document.body.removeChild(a);
+            }), n.addEventListener('mouseleave', function (e) {
+                setTimeout(function () {
+                    e.target.querySelector('i').className = 'fa fa-clipboard';
+                }, 300);
+            });
+        });
+    },
+    wrapTableWithBox: function () {
+        document.querySelectorAll('table').forEach(function (e) {
+            var t = document.createElement('div');
+            t.className = 'table-container', e.wrap(t);
+        });
+    },
+    registerVideoIframe: function () {
+        document.querySelectorAll('iframe').forEach(function (t) {
+            if (["www.youtube.com","player.vimeo.com","player.youku.com","player.bilibili.com","www.tudou.com"].some(function (e) {
+                    return t.src.includes(e);
+                }) && !t.parentNode.matches('.video-container')) {
+                var e = document.createElement('div');
+                e.className = 'video-container', t.wrap(e);
+                var n = Number(t.width), a = Number(t.height);
+                n && a && (t.parentNode.style.paddingTop = a / n * 100 + '%');
+            }
+        });
+    },
+    registerScrollPercent: function () {
+        var r = document.querySelector('.back-to-top'), o = document.querySelector('.reading-progress-bar');
+        window.addEventListener('scroll', function () {
+            if (r || o) {
+                var e = document.querySelector('.container').offsetHeight, t = window.innerHeight, n = t < e ? e - t : document.body.scrollHeight - t, a = Math.min(100 * window.scrollY / n, 100);
+                r && (r.classList.toggle('back-to-top-on', 50 < window.scrollY), r.querySelector('span').innerText = Math.round(a) + '%'), o && (o.style.width = a.toFixed(2) + '%');
+            }
+        }), r && r.addEventListener('click', function () {
+            window.anime({
+                targets: document.scrollingElement,
+                duration: 500,
+                easing: 'linear',
+                scrollTop: 0
+            });
+        });
+    },
+    registerTabsTag: function () {
+        document.querySelectorAll('.tabs ul.nav-tabs .tab').forEach(function (e) {
+            e.addEventListener('click', function (e) {
+                e.preventDefault();
+                var t = e.currentTarget;
+                if (!t.classList.contains('active')) {
+                    [].concat(_toConsumableArray(t.parentNode.children)).forEach(function (e) {
+                        e.classList.remove('active');
+                    }), t.classList.add('active');
+                    var n = document.getElementById(t.querySelector('a').getAttribute('href').replace('#', ''));
+                    [].concat(_toConsumableArray(n.parentNode.children)).forEach(function (e) {
+                        e.classList.remove('active');
+                    }), n.classList.add('active'), n.dispatchEvent(new Event('tabs:click', { bubbles: !0 }));
+                }
+            });
+        }), window.dispatchEvent(new Event('tabs:register'));
+    },
+    registerCanIUseTag: function () {
+        window.addEventListener('message', function (e) {
+            var t = e.data;
+            if ('string' == typeof t && t.includes('ciu_embed')) {
+                var n = t.split(':')[1], a = t.split(':')[2];
+                document.querySelector('iframe[data-feature=' + n + ']').style.height = parseInt(a, 10) + 5 + 'px';
+            }
+        }, !1);
+    },
+    registerActiveMenuItem: function () {
+        document.querySelectorAll('.menu-item').forEach(function (e) {
+            var t = e.querySelector('a[href]');
+            if (t) {
+                var n = t.pathname === location.pathname || t.pathname === location.pathname.replace('index.html', ''), a = !CONFIG.root.startsWith(t.pathname) && location.pathname.startsWith(t.pathname);
+                e.classList.toggle('menu-item-active', t.hostname === location.hostname && (n || a));
+            }
+        });
+    },
+    registerLangSelect: function () {
+        var n = document.querySelector('.lang-select');
+        n && (n.value = CONFIG.page.lang, n.addEventListener('change', function () {
+            var e = n.options[n.selectedIndex];
+            document.querySelector('.lang-select-label span').innerText = e.text;
+            var t = e.dataset.href;
+            window.pjax ? window.pjax.loadUrl(t) : window.location.href = t;
+        }));
+    },
+    registerSidebarTOC: function () {
+        var i = document.querySelectorAll('.post-toc li'), c = [].concat(_toConsumableArray(i)).map(function (e) {
+                var t = e.querySelector('a.nav-link');
+                return t.addEventListener('click', function (e) {
+                    e.preventDefault();
+                    var t = document.getElementById(e.currentTarget.getAttribute('href').replace('#', '')).getBoundingClientRect().top + window.scrollY;
+                    window.anime({
+                        targets: document.scrollingElement,
+                        duration: 500,
+                        easing: 'linear',
+                        scrollTop: t + 10
+                    });
+                }), document.getElementById(t.getAttribute('href').replace('#', ''));
+            }), l = document.querySelector('.post-toc-wrap');
+        !function r(o) {
+            o = Math.floor(o + 10000);
+            var t = new IntersectionObserver(function (e, t) {
+                var n = document.documentElement.scrollHeight + 100;
+                if (o < n)
+                    return t.disconnect(), void r(n);
+                var a = function (e) {
+                    var t = 0, n = e[t];
+                    if (0 < n.boundingClientRect.top)
+                        return 0 === (t = c.indexOf(n.target)) ? 0 : t - 1;
+                    for (; t < e.length; t++) {
+                        if (!(e[t].boundingClientRect.top <= 0))
+                            return c.indexOf(n.target);
+                        n = e[t];
+                    }
+                    return c.indexOf(n.target);
+                }(e);
+                !function (e) {
+                    if (!e.classList.contains('active-current')) {
+                        document.querySelectorAll('.post-toc .active').forEach(function (e) {
+                            e.classList.remove('active', 'active-current');
+                        }), e.classList.add('active', 'active-current');
+                        for (var t = e.parentNode; !t.matches('.post-toc');)
+                            t.matches('li') && t.classList.add('active'), t = t.parentNode;
+                        window.anime({
+                            targets: l,
+                            duration: 200,
+                            easing: 'linear',
+                            scrollTop: l.scrollTop - l.offsetHeight / 2 + e.getBoundingClientRect().top - l.getBoundingClientRect().top
+                        });
+                    }
+                }(i[a]);
+            }, {
+                rootMargin: o + 'px 0px -100% 0px',
+                threshold: 0
+            });
+            c.forEach(function (e) {
+                e && t.observe(e);
+            });
+        }(document.documentElement.scrollHeight);
+    },
+    hasMobileUA: function () {
+        var e = navigator.userAgent;
+        return /iPad|iPhone|Android|Opera Mini|BlackBerry|webOS|UCWEB|Blazer|PSP|IEMobile|Symbian/g.test(e);
+    },
+    isTablet: function () {
+        return window.screen.width < 992 && 767 < window.screen.width && this.hasMobileUA();
+    },
+    isMobile: function () {
+        return window.screen.width < 767 && this.hasMobileUA();
+    },
+    isDesktop: function () {
+        return !this.isTablet() && !this.isMobile();
+    },
+    supportsPDFs: function () {
+        var e = navigator.userAgent, t = e.includes('irefox') && 18 < parseInt(e.split('rv:')[1].split('.')[0], 10), n = void 0 !== navigator.mimeTypes['application/pdf'], a = /iphone|ipad|ipod/i.test(e.toLowerCase());
+        return t || n && !a;
+    },
+    initSidebarDimension: function () {
+        var e = document.querySelector('.sidebar-nav'), t = 'none' !== e.style.display ? e.offsetHeight : 0, n = CONFIG.sidebar.offset || 12, a = CONFIG.back2top.enable && CONFIG.back2top.sidebar ? document.querySelector('.back-to-top').offsetHeight : 0, r = 2 * CONFIG.sidebar.padding + t + a;
+        'Pisces' !== CONFIG.scheme && 'Gemini' !== CONFIG.scheme || (r += 2 * n - 22);
+        var o = document.body.offsetHeight - r + 'px';
+        document.querySelector('.site-overview-wrap').style.maxHeight = o, document.querySelector('.post-toc-wrap').style.maxHeight = o;
+    },
+    updateSidebarPosition: function () {
+        var e = document.querySelector('.sidebar-nav'), t = document.querySelector('.post-toc');
+        if (t ? (e.style.display = '', e.classList.add('motion-element'), document.querySelector('.sidebar-nav-toc').click()) : (e.style.display = 'none', e.classList.remove('motion-element'), document.querySelector('.sidebar-nav-overview').click()), NexT.utils.initSidebarDimension(), this.isDesktop() && 'Pisces' !== CONFIG.scheme && 'Gemini' !== CONFIG.scheme) {
+            var n = CONFIG.page.sidebar;
+            'boolean' != typeof n && (n = 'always' === CONFIG.sidebar.display || 'post' === CONFIG.sidebar.display && t), n && window.dispatchEvent(new Event('sidebar:show'));
+        }
+    },
+    getScript: function (e, n, t) {
+        if (t)
+            n();
+        else {
+            var a = document.createElement('script');
+            a.onload = a.onreadystatechange = function (e, t) {
+                !t && a.readyState && !/loaded|complete/.test(a.readyState) || (a.onload = a.onreadystatechange = null, a = void 0, !t && n && setTimeout(n, 0));
+            }, a.src = e, document.head.appendChild(a);
+        }
+    },
+    loadComments: function (e, n) {
+        if (CONFIG.comments.lazyload && e) {
+            var t = new IntersectionObserver(function (e, t) {
+                e[0].isIntersecting && (n(), t.disconnect());
+            });
+            return t.observe(e), t;
+        }
+        n();
+    }
+};

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov