← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~flacoste/launchpad/self-hosted-3rd-party-js into lp:launchpad

 

Francis J. Lacoste has proposed merging lp:~flacoste/launchpad/self-hosted-3rd-party-js into lp:launchpad.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~flacoste/launchpad/self-hosted-3rd-party-js/+merge/84319

Hi,

This brings back support for Ubuntu web fonts and Google Analytics that were
removed in https://code.launchpad.net/~wgrant/launchpad/no-more-external-js

The web fonts CSS is snippet will be included in the main Launchpad CSS file.
The web fonts will still be downloaded from Google, but since those aren't
executable content, that is fine.

The google analytics code is similarly bundled in our general JS file. I've
commented out one section of it which is used to support the Site Overlay
Feature. (I think this is to browse the site, with Google Analytics
information overlayed on it. Never used it though.) Anyway, this loads
additional JS from Google when there is a cookie requesting this feature. And
that's verboten.

Let me know if you have any questions.
-- 
https://code.launchpad.net/~flacoste/launchpad/self-hosted-3rd-party-js/+merge/84319
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~flacoste/launchpad/self-hosted-3rd-party-js into lp:launchpad.
=== modified file 'buildout-templates/bin/combine-css.in'
--- buildout-templates/bin/combine-css.in	2011-11-22 02:46:23 +0000
+++ buildout-templates/bin/combine-css.in	2011-12-02 19:55:05 +0000
@@ -24,6 +24,7 @@
 # including lots of styles that we don't need/want, so keeping this hard-coded
 # list seems like the best option for now.
 names = [
+    'ubuntu-webfonts.css',
     'style.css',
     'yui/cssreset/reset.css',
     # Use the old cssgrids instead of the new cssgrids.

=== added symlink 'lib/canonical/launchpad/icing/ubuntu-webfonts.css'
=== target is u'../../../lp/contrib/css/ubuntu-webfonts.css'
=== added symlink 'lib/canonical/launchpad/javascript/google-analytics'
=== target is u'../../../lp/contrib/javascript/google-analytics'
=== modified file 'lib/lp/app/templates/base-layout.pt'
--- lib/lp/app/templates/base-layout.pt	2011-11-30 01:18:42 +0000
+++ lib/lp/app/templates/base-layout.pt	2011-12-02 19:55:05 +0000
@@ -72,6 +72,14 @@
       ${view/macro:pagetype}
       ${view/context/fmt:public-private-css}
       yui3-skin-sam">
+        <script type="text/javascript"
+          tal:condition="python: is_lpnet">
+          var _gaq = _gaq || [];
+          _gaq.push(['_setAccount', 'UA-12833497-1']);
+          _gaq.push(['_setDomainName', '.launchpad.net']);
+          _gaq.push(['_setAllowHash', false]);
+          _gaq.push(['_trackPageview']);
+        </script>
     <div class="yui-d0">
       <div id="locationbar" class="login-logout">
         <tal:login replace="structure context/@@login_status" />

=== added directory 'lib/lp/contrib/css'
=== added file 'lib/lp/contrib/css/ubuntu-webfonts.css'
--- lib/lp/contrib/css/ubuntu-webfonts.css	1970-01-01 00:00:00 +0000
+++ lib/lp/contrib/css/ubuntu-webfonts.css	2011-12-02 19:55:05 +0000
@@ -0,0 +1,30 @@
+/* Web font defintions for the Ubuntu font.
+ *
+ * Retrieved from https://fonts.googleapis.com/css?family=Ubuntu:400,400italic,700,700italic
+ *
+ * But served from launchpad.net for performance and security reasons.
+ */
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: italic;
+  font-weight: normal;
+  src: local('Ubuntu Italic'), local('Ubuntu-Italic'), url('https://themes.googleusercontent.com/static/fonts/ubuntu/v3/kbP_6ONYVgE-bLa9ZRbvvvesZW2xOQ-xsNqO47m55DA.woff') format('woff');
+}
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: normal;
+  font-weight: bold;
+  src: local('Ubuntu Bold'), local('Ubuntu-Bold'), url('https://themes.googleusercontent.com/static/fonts/ubuntu/v3/0ihfXUL2emPh0ROJezvraD8E0i7KZn-EPnyo3HZu7kw.woff') format('woff');
+}
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: italic;
+  font-weight: bold;
+  src: local('Ubuntu Bold Italic'), local('Ubuntu-BoldItalic'), url('https://themes.googleusercontent.com/static/fonts/ubuntu/v3/OMD20Sg9RTs7sUORCEN-7YbN6UDyHWBl620a-IRfuBk.woff') format('woff');
+}
+@font-face {
+  font-family: 'Ubuntu';
+  font-style: normal;
+  font-weight: normal;
+  src: local('Ubuntu'), url('https://themes.googleusercontent.com/static/fonts/ubuntu/v3/_xyN3apAT_yRRDeqB3sPRg.woff') format('woff');
+}

=== added directory 'lib/lp/contrib/javascript/google-analytics'
=== added file 'lib/lp/contrib/javascript/google-analytics/ga-disable-gaso.diff'
--- lib/lp/contrib/javascript/google-analytics/ga-disable-gaso.diff	1970-01-01 00:00:00 +0000
+++ lib/lp/contrib/javascript/google-analytics/ga-disable-gaso.diff	2011-12-02 19:55:05 +0000
@@ -0,0 +1,23 @@
+Diff that was applied to a copy of http://www.google-analytics.com/ga.js
+passed through http://http://jsbeautifier.org/ to disable
+the additional JS loading from Google Analytics when the Site Overlay
+feature is used.
+
+--- ga.js.orig	2011-12-01 15:29:39.000000000 -0500
++++ ga.js	2011-12-01 15:30:45.000000000 -0500
+@@ -1178,6 +1178,7 @@
+             return i
+         };
+     var zd, Ad = function (a) {
++            /* Disabled for security.
+             var f;
+             var e;
+             if (!zd) {
+@@ -1187,6 +1188,7 @@
+                     d = /^#?gaso=([^&]*)/;
+                 if (f = (e = (b = b && b[ma](d) || c && c[ma](d)) ? b[1] : I(W("GASO")), b = e) && b[ma](/^(?:\|([-0-9a-z.]{1,40})\|)?([-.\w]{10,1200})$/i), c = f) if (cd(a, "GASO", "" + b), K._gasoDomain = a.get(Ma), K._gasoCPath = a.get(N), b = "https://"; + ((c[1] || "www") + ".google.com") + "/analytics/reporting/overlay_js?gaso=" + c[2] + "&" + va()) a = J.createElement("script"), a.type = "text/javascript", a.async = h, a.src = b, a.id = "_gasojs", fa(a, g), b = J.getElementsByTagName("script")[0], b.parentNode.insertBefore(a, b);
+                 zd = h
++                */
+             }
+         };
+     var sd = function (a, b, c) {

=== added file 'lib/lp/contrib/javascript/google-analytics/ga.js'
--- lib/lp/contrib/javascript/google-analytics/ga.js	1970-01-01 00:00:00 +0000
+++ lib/lp/contrib/javascript/google-analytics/ga.js	2011-12-02 19:55:05 +0000
@@ -0,0 +1,1817 @@
+// Google Analytics Tracker code.
+// Download from http://www.google-analytics.com/ga.js
+// on 2011-12-01
+//
+// Beautified through http://jsbeautifier.org/
+//
+// We are serving it as part of Launchpad for security reasons.
+// Modification from the original: disable the Site Overlay feature
+// which loads additional JS from Google.
+// See ga-disable-gaso.diff
+(function () {
+    var g = void 0,
+        h = true,
+        i = null,
+        j = false,
+        ba = encodeURIComponent,
+        ca = Infinity,
+        da = setTimeout,
+        ea = decodeURIComponent,
+        k = Math;
+
+    function fa(a, b) {
+        return a.onload = b
+    }
+    function ga(a, b) {
+        return a.name = b
+    }
+    var m = "push",
+        ha = "slice",
+        ia = "replace",
+        ja = "load",
+        ka = "floor",
+        n = "charAt",
+        la = "value",
+        p = "indexOf",
+        ma = "match",
+        r = "name",
+        oa = "host",
+        t = "toString",
+        u = "length",
+        v = "prototype",
+        w = "split",
+        pa = "stopPropagation",
+        qa = "scope",
+        x = "location",
+        y = "getString",
+        z = "substring",
+        ra = "navigator",
+        A = "join",
+        C = "toLowerCase",
+        D;
+
+    function sa(a, b) {
+        switch (b) {
+        case 0:
+            return "" + a;
+        case 1:
+            return a * 1;
+        case 2:
+            return !!a;
+        case 3:
+            return a * 1E3
+        }
+        return a
+    }
+    function E(a, b) {
+        return g == a || "-" == a && !b || "" == a
+    }
+    function ta(a) {
+        if (!a || "" == a) return "";
+        for (; a && " \n\r\t" [p](a[n](0)) > -1;) a = a[z](1);
+        for (; a && " \n\r\t" [p](a[n](a[u] - 1)) > -1;) a = a[z](0, a[u] - 1);
+        return a
+    }
+    function ua(a) {
+        var b = 1,
+            c = 0,
+            d;
+        if (!E(a)) {
+            b = 0;
+            for (d = a[u] - 1; d >= 0; d--) c = a.charCodeAt(d), b = (b << 6 & 268435455) + c + (c << 14), c = b & 266338304, b = c != 0 ? b ^ c >> 21 : b
+        }
+        return b
+    }
+
+    function va() {
+        return k.round(k.random() * 2147483647)
+    }
+    function wa() {}
+    function F(a, b) {
+        return ba instanceof Function ? b ? encodeURI(a) : ba(a) : (G(68), escape(a))
+    }
+    function H(a) {
+        a = a[w]("+")[A](" ");
+        if (ea instanceof Function) try {
+            return ea(a)
+        } catch (b) {
+            G(17)
+        } else G(68);
+        return unescape(a)
+    }
+    var xa = function (a, b, c, d) {
+            a.addEventListener ? a.addEventListener(b, c, !! d) : a.attachEvent && a.attachEvent("on" + b, c)
+        },
+        ya = function (a, b, c, d) {
+            a.removeEventListener ? a.removeEventListener(b, c, !! d) : a.detachEvent && a.detachEvent("on" + b, c)
+        };
+
+    function I(a) {
+        return a && a[u] > 0 ? a[0] : ""
+    }
+    function za(a) {
+        var b = a ? a[u] : 0;
+        return b > 0 ? a[b - 1] : ""
+    }
+    var Aa = function () {
+            this.prefix = "ga.";
+            this.I = {}
+        };
+    Aa[v].set = function (a, b) {
+        this.I[this.prefix + a] = b
+    };
+    Aa[v].get = function (a) {
+        return this.I[this.prefix + a]
+    };
+    Aa[v].contains = function (a) {
+        return this.get(a) !== g
+    };
+
+    function Ba(a) {
+        a[p]("www.") == 0 && (a = a[z](4));
+        return a[C]()
+    }
+    function Ca(a, b) {
+        var c, d = {
+            url: a,
+            protocol: "http",
+            host: "",
+            path: "",
+            c: new Aa,
+            anchor: ""
+        };
+        if (!a) return d;
+        c = a[p]("://");
+        if (c >= 0) d.protocol = a[z](0, c), a = a[z](c + 3);
+        c = a.search("/|\\?|#");
+        if (c >= 0) d.host = a[z](0, c)[C](), a = a[z](c);
+        else return d.host = a[C](), d;
+        c = a[p]("#");
+        if (c >= 0) d.anchor = a[z](c + 1), a = a[z](0, c);
+        c = a[p]("?");
+        c >= 0 && (Da(d.c, a[z](c + 1)), a = a[z](0, c));
+        d.anchor && b && Da(d.c, d.anchor);
+        a && a[n](0) == "/" && (a = a[z](1));
+        d.path = a;
+        return d
+    }
+
+    function Da(a, b) {
+        function c(b, c) {
+            a.contains(b) || a.set(b, []);
+            a.get(b)[m](c)
+        }
+        for (var d = ta(b)[w]("&"), e = 0; e < d[u]; e++) if (d[e]) {
+            var f = d[e][p]("=");
+            f < 0 ? c(d[e], "1") : c(d[e][z](0, f), d[e][z](f + 1))
+        }
+    }
+    function Ea(a, b) {
+        if (E(a)) return "-";
+        if ("[" == a[n](0) && "]" == a[n](a[u] - 1)) return "-";
+        var c = J.domain;
+        c += b && b != "/" ? b : "";
+        return a[p](c) == (a[p]("http://";) == 0 ? 7 : a[p]("https://";) == 0 ? 8 : 0) ? "0" : a
+    };
+
+    function Fa(a, b, c) {
+        k.random() * 100 >= 1 || (a = ["utmt=error", "utmerr=" + a, "utmwv=5.2.2", "utmn=" + va(), "utmsp=1"], b && a[m]("api=" + b), c && a[m]("msg=" + F(c[z](0, 100))), K.q && a[m]("aip=1"), Ga(a[A]("&")))
+    };
+    var Ha = 0;
+
+    function L(a) {
+        return (a ? "_" : "") + Ha++
+    }
+    var Ia = L(),
+        Ja = L(),
+        Ka = L(),
+        La = L(),
+        Ma = L(),
+        M = L(),
+        N = L(),
+        Na = L(),
+        Oa = L(),
+        Pa = L(),
+        Qa = L(),
+        Ra = L(),
+        Sa = L(),
+        Ta = L(),
+        Ua = L(),
+        Va = L(),
+        Wa = L(),
+        Xa = L(),
+        Ya = L(),
+        Za = L(),
+        $a = L(),
+        ab = L(),
+        bb = L(),
+        cb = L(),
+        db = L(),
+        eb = L(),
+        fb = L(),
+        gb = L(),
+        hb = L(),
+        ib = L(),
+        jb = L(),
+        kb = L(),
+        lb = L(),
+        mb = L(),
+        nb = L(),
+        O = L(h),
+        ob = L(),
+        pb = L(),
+        qb = L(),
+        rb = L(),
+        sb = L(),
+        tb = L(),
+        ub = L(),
+        vb = L(),
+        wb = L(),
+        xb = L(),
+        P = L(h),
+        yb = L(h),
+        zb = L(h),
+        Bb = L(h),
+        Cb = L(h),
+        Db = L(h),
+        Eb = L(h),
+        Fb = L(h),
+        Gb = L(h),
+        Hb = L(h),
+        Ib = L(h),
+        Q = L(h),
+        Jb = L(h),
+        Kb = L(h),
+        Lb = L(h),
+        Mb = L(h),
+        Nb = L(h),
+        Ob = L(h),
+        Pb = L(h),
+        Qb = L(h),
+        Rb = L(h),
+        Sb = L(h),
+        Tb = L(h),
+        Ub = L(h),
+        Vb = L(h),
+        Wb = L(),
+        Xb = L(),
+        Yb = L();
+    L();
+    var Zb = L(),
+        $b = L(),
+        ac = L(),
+        bc = L(),
+        cc = L(),
+        dc = L(),
+        ec = L(),
+        hc = L(),
+        ic = L(),
+        jc = L();
+    L();
+    var kc = L(),
+        lc = L();
+    var mc = function () {
+            function a(a, c, d) {
+                R(S[v], a, c, d)
+            }
+            T("_getName", Ka, 58);
+            T("_getAccount", Ia, 64);
+            T("_visitCode", P, 54);
+            T("_getClientInfo", Ta, 53, 1);
+            T("_getDetectTitle", Wa, 56, 1);
+            T("_getDetectFlash", Ua, 65, 1);
+            T("_getLocalGifPath", fb, 57);
+            T("_getServiceMode", gb, 59);
+            U("_setClientInfo", Ta, 66, 2);
+            U("_setAccount", Ia, 3);
+            U("_setNamespace", Ja, 48);
+            U("_setAllowLinker", Qa, 11, 2);
+            U("_setDetectFlash", Ua, 61, 2);
+            U("_setDetectTitle", Wa, 62, 2);
+            U("_setLocalGifPath", fb, 46, 0);
+            U("_setLocalServerMode", gb, 92, g, 0);
+            U("_setRemoteServerMode", gb, 63, g, 1);
+            U("_setLocalRemoteServerMode", gb, 47, g, 2);
+            U("_setSampleRate", eb, 45, 1);
+            U("_setCampaignTrack", Va, 36, 2);
+            U("_setAllowAnchor", Ra, 7, 2);
+            U("_setCampNameKey", Ya, 41);
+            U("_setCampContentKey", cb, 38);
+            U("_setCampIdKey", Xa, 39);
+            U("_setCampMediumKey", ab, 40);
+            U("_setCampNOKey", db, 42);
+            U("_setCampSourceKey", $a, 43);
+            U("_setCampTermKey", bb, 44);
+            U("_setCampCIdKey", Za, 37);
+            U("_setCookiePath", N, 9, 0);
+            U("_setMaxCustomVariables", hb, 0, 1);
+            U("_setVisitorCookieTimeout", Na, 28, 1);
+            U("_setSessionCookieTimeout", Oa, 26, 1);
+            U("_setCampaignCookieTimeout", Pa, 29, 1);
+            U("_setReferrerOverride", qb, 49);
+            U("_setSiteSpeedSampleRate", ic, 132);
+            a("_trackPageview", S[v].na, 1);
+            a("_trackEvent", S[v].v, 4);
+            a("_trackPageLoadTime", S[v].ma, 100);
+            a("_trackSocial", S[v].oa, 104);
+            a("_trackTrans", S[v].pa, 18);
+            a("_sendXEvent", S[v].u, 78);
+            a("_createEventTracker", S[v].V, 74);
+            a("_getVersion", S[v].$, 60);
+            a("_setDomainName", S[v].t, 6);
+            a("_setAllowHash", S[v].ea, 8);
+            a("_getLinkerUrl", S[v].Z, 52);
+            a("_link", S[v].link, 101);
+            a("_linkByPost", S[v].da, 102);
+            a("_setTrans", S[v].ha, 20);
+            a("_addTrans", S[v].O, 21);
+            a("_addItem", S[v].M, 19);
+            a("_setTransactionDelim", S[v].ia, 82);
+            a("_setCustomVar", S[v].fa, 10);
+            a("_deleteCustomVar", S[v].X, 35);
+            a("_getVisitorCustomVar", S[v].aa, 50);
+            a("_setXKey", S[v].ka, 83);
+            a("_setXValue", S[v].la, 84);
+            a("_getXKey", S[v].ba, 76);
+            a("_getXValue", S[v].ca, 77);
+            a("_clearXKey", S[v].S, 72);
+            a("_clearXValue", S[v].T, 73);
+            a("_createXObj", S[v].W, 75);
+            a("_addIgnoredOrganic", S[v].K, 15);
+            a("_clearIgnoredOrganic", S[v].P, 97);
+            a("_addIgnoredRef", S[v].L, 31);
+            a("_clearIgnoredRef", S[v].Q, 32);
+            a("_addOrganic", S[v].N, 14);
+            a("_clearOrganic", S[v].R, 70);
+            a("_cookiePathCopy", S[v].U, 30);
+            a("_get", S[v].Y, 106);
+            a("_set", S[v].ga, 107);
+            a("_addEventListener", S[v].addEventListener, 108);
+            a("_removeEventListener", S[v].removeEventListener, 109);
+            a("_initData", S[v].m, 2);
+            a("_setVar", S[v].ja, 22);
+            U("_setSessionTimeout", Oa, 27, 3);
+            U("_setCookieTimeout", Pa, 25, 3);
+            U("_setCookiePersistence", Na, 24, 1);
+            a("_setAutoTrackOutbound", wa, 79);
+            a("_setTrackOutboundSubdomains", wa, 81);
+            a("_setHrefExamineLimit", wa, 80)
+        },
+        R = function (a, b, c, d) {
+            a[b] = function () {
+                try {
+                    return G(d), c.apply(this, arguments)
+                } catch (a) {
+                    throw Fa("exc", b, a && a[r]), a;
+                }
+            }
+        },
+        T = function (a, b, c, d) {
+            S[v][a] = function () {
+                try {
+                    return G(c), sa(this.a.get(b), d)
+                } catch (e) {
+                    throw Fa("exc", a, e && e[r]), e;
+                }
+            }
+        },
+        U = function (a, b, c, d, e) {
+            S[v][a] = function (f) {
+                try {
+                    G(c), e == g ? this.a.set(b, sa(f, d)) : this.a.set(b, e)
+                } catch (l) {
+                    throw Fa("exc", a, l && l[r]), l;
+                }
+            }
+        },
+        nc = function (a, b) {
+            return {
+                type: b,
+                target: a,
+                stopPropagation: function () {
+                    throw "aborted";
+                }
+            }
+        };
+    var oc = function (a, b) {
+            return b !== "/" ? j : (a[p]("www.google.") == 0 || a[p](".google.") == 0 || a[p]("google.") == 0) && !(a[p]("google.org") > -1) ? h : j
+        },
+        pc = function (a) {
+            var b = a.get(Ma),
+                c = a[y](N, "/");
+            oc(b, c) && a[pa]()
+        };
+    var uc = function () {
+            var a = {},
+                b = {},
+                c = new qc;
+            this.g = function (a, b) {
+                c.add(a, b)
+            };
+            var d = new qc;
+            this.d = function (a, b) {
+                d.add(a, b)
+            };
+            var e = j,
+                f = j,
+                l = h;
+            this.J = function () {
+                e = h
+            };
+            this.f = function (a) {
+                this[ja]();
+                this.set(Wb, a, h);
+                a = new rc(this);
+                e = j;
+                d.execute(this);
+                e = h;
+                b = {};
+                this.i();
+                a.qa()
+            };
+            this.load = function () {
+                e && (e = j, this.sa(), sc(this), f || (f = h, c.execute(this), tc(this), sc(this)), e = h)
+            };
+            this.i = function () {
+                if (e) if (f) e = j, tc(this), e = h;
+                else this[ja]()
+            };
+            this.get = function (c) {
+                c && c[n](0) == "_" && this[ja]();
+                return b[c] !== g ? b[c] : a[c]
+            };
+            this.set = function (c, d, e) {
+                c && c[n](0) == "_" && this[ja]();
+                e ? b[c] = d : a[c] = d;
+                c && c[n](0) == "_" && this.i()
+            };
+            this.n = function (b) {
+                a[b] = this.b(b, 0) + 1
+            };
+            this.b = function (a, b) {
+                var c = this.get(a);
+                return c == g || c === "" ? b : c * 1
+            };
+            this.getString = function (a, b) {
+                var c = this.get(a);
+                return c == g ? b : c + ""
+            };
+            this.sa = function () {
+                if (l) {
+                    var b = this[y](Ma, ""),
+                        c = this[y](N, "/");
+                    oc(b, c) || (a[M] = a[Sa] && b != "" ? ua(b) : 1, l = j)
+                }
+            }
+        };
+    uc[v].stopPropagation = function () {
+        throw "aborted";
+    };
+    var rc = function (a) {
+            var b = this;
+            this.j = 0;
+            var c = a.get(Xb);
+            this.Aa = function () {
+                b.j > 0 && c && (b.j--, b.j || c())
+            };
+            this.qa = function () {
+                !b.j && c && da(c, 0)
+            };
+            a.set(Yb, b, h)
+        };
+
+    function vc(a, b) {
+        for (var b = b || [], c = 0; c < b[u]; c++) {
+            var d = b[c];
+            if ("" + a == d || d[p](a + ".") == 0) return d
+        }
+        return "-"
+    }
+    var xc = function (a, b, c) {
+            c = c ? "" : a[y](M, "1");
+            b = b[w](".");
+            if (b[u] !== 6 || wc(b[0], c)) return j;
+            var c = b[1] * 1,
+                d = b[2] * 1,
+                e = b[3] * 1,
+                f = b[4] * 1,
+                b = b[5] * 1;
+            if (!(c >= 0 && d > 0 && e > 0 && f > 0 && b >= 0)) return G(110), j;
+            a.set(P, c);
+            a.set(Cb, d);
+            a.set(Db, e);
+            a.set(Eb, f);
+            a.set(Fb, b);
+            return h
+        },
+        yc = function (a) {
+            var b = a.get(P),
+                c = a.get(Cb),
+                d = a.get(Db),
+                e = a.get(Eb),
+                f = a.b(Fb, 1);
+            b == g ? G(113) : b == NaN && G(114);
+            b >= 0 && c > 0 && d > 0 && e > 0 && f >= 0 || G(115);
+            return [a.b(M, 1), b != g ? b : "-", c || "-", d || "-", e || "-", f][A](".")
+        },
+        zc = function (a) {
+            return [a.b(M, 1), a.b(Ib, 0), a.b(Q, 1), a.b(Jb, 0)][A](".")
+        },
+        Ac = function (a, b, c) {
+            var c = c ? "" : a[y](M, "1"),
+                d = b[w](".");
+            if (d[u] !== 4 || wc(d[0], c)) d = i;
+            a.set(Ib, d ? d[1] * 1 : 0);
+            a.set(Q, d ? d[2] * 1 : 10);
+            a.set(Jb, d ? d[3] * 1 : a.get(La));
+            return d != i || !wc(b, c)
+        },
+        Bc = function (a, b) {
+            var c = F(a[y](zb, "")),
+                d = [],
+                e = a.get(O);
+            if (!b && e) {
+                for (var f = 0; f < e[u]; f++) {
+                    var l = e[f];
+                    l && l[qa] == 1 && d[m](f + "=" + F(l[r]) + "=" + F(l[la]) + "=1")
+                }
+                d[u] > 0 && (c += "|" + d[A](","))
+            }
+            return c ? a.b(M, 1) + "." + c : i
+        },
+        Cc = function (a, b, c) {
+            c = c ? "" : a[y](M, "1");
+            b = b[w](".");
+            if (b[u] < 2 || wc(b[0], c)) return j;
+            b = b[ha](1)[A](".")[w]("|");
+            b[u] > 0 && a.set(zb, H(b[0]));
+            if (b[u] <= 1) return h;
+            for (var c = b[1][w](b[1][p](",") == -1 ? "^" : ","), d = 0; d < c[u]; d++) {
+                var e = c[d][w]("=");
+                if (e[u] == 4) {
+                    var f = {};
+                    ga(f, H(e[1]));
+                    f.value = H(e[2]);
+                    f.scope = 1;
+                    a.get(O)[e[0]] = f
+                }
+            }
+            b[1][p]("^") >= 0 && G(125);
+            return h
+        },
+        Ec = function (a, b) {
+            var c = Dc(a, b);
+            return c ? [a.b(M, 1), a.b(Kb, 0), a.b(Lb, 1), a.b(Mb, 1), c][A](".") : ""
+        },
+        Dc = function (a) {
+            function b(b, e) {
+                if (!E(a.get(b))) {
+                    var f = a[y](b, ""),
+                        f = f[w](" ")[A]("%20"),
+                        f = f[w]("+")[A]("%20");
+                    c[m](e + "=" + f)
+                }
+            }
+            var c = [];
+            b(Ob, "utmcid");
+            b(Sb, "utmcsr");
+            b(Qb, "utmgclid");
+            b(Rb, "utmdclid");
+            b(Pb, "utmccn");
+            b(Tb, "utmcmd");
+            b(Ub, "utmctr");
+            b(Vb, "utmcct");
+            return c[A]("|")
+        },
+        Gc = function (a, b, c) {
+            c = c ? "" : a[y](M, "1");
+            b = b[w](".");
+            if (b[u] < 5 || wc(b[0], c)) return a.set(Kb, g), a.set(Lb, g), a.set(Mb, g), a.set(Ob, g), a.set(Pb, g), a.set(Sb, g), a.set(Tb, g), a.set(Ub, g), a.set(Vb, g), a.set(Qb, g), a.set(Rb, g), j;
+            a.set(Kb, b[1] * 1);
+            a.set(Lb, b[2] * 1);
+            a.set(Mb, b[3] * 1);
+            Fc(a, b[ha](4)[A]("."));
+            return h
+        },
+        Fc = function (a, b) {
+            function c(a) {
+                return (a = b[ma](a + "=(.*?)(?:\\|utm|$)")) && a[u] == 2 ? a[1] : g
+            }
+            function d(b, c) {
+                c && (c = e ? H(c) : c[w]("%20")[A](" "), a.set(b, c))
+            }
+            b[p]("=") == -1 && (b = H(b));
+            var e = c("utmcvr") == "2";
+            d(Ob, c("utmcid"));
+            d(Pb, c("utmccn"));
+            d(Sb, c("utmcsr"));
+            d(Tb, c("utmcmd"));
+            d(Ub, c("utmctr"));
+            d(Vb, c("utmcct"));
+            d(Qb, c("utmgclid"));
+            d(Rb, c("utmdclid"))
+        },
+        wc = function (a, b) {
+            return b ? a != b : !/^\d+$/.test(a)
+        };
+    var qc = function () {
+            this.s = []
+        };
+    qc[v].add = function (a, b) {
+        this.s[m]({
+            name: a,
+            Da: b
+        })
+    };
+    qc[v].execute = function (a) {
+        try {
+            for (var b = 0; b < this.s[u]; b++) this.s[b].Da.call(V, a)
+        } catch (c) {}
+    };
+
+    function Hc(a) {
+        a.get(eb) != 100 && a.get(P) % 1E4 >= a.get(eb) * 100 && a[pa]()
+    }
+    function Ic(a) {
+        Jc() && a[pa]()
+    }
+    function Kc(a) {
+        J[x].protocol == "file:" && a[pa]()
+    }
+    function Lc(a) {
+        a.get(pb) || a.set(pb, J.title, h);
+        a.get(ob) || a.set(ob, J[x].pathname + J[x].search, h)
+    };
+    var Mc = new function () {
+            var a = [];
+            this.set = function (b) {
+                a[b] = h
+            };
+            this.Ea = function () {
+                for (var b = [], c = 0; c < a[u]; c++) a[c] && (b[k[ka](c / 6)] ^= 1 << c % 6);
+                for (c = 0; c < b[u]; c++) b[c] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" [n](b[c] || 0);
+                return b[A]("") + "~"
+            }
+        };
+
+    function G(a) {
+        Mc.set(a)
+    };
+    var V = window,
+        J = document,
+        Jc = function () {
+            var a = V._gaUserPrefs;
+            return a && a.ioo && a.ioo()
+        },
+        Nc = function (a, b) {
+            da(a, b)
+        },
+        W = function (a) {
+            for (var b = [], c = J.cookie[w](";"), a = RegExp("^\\s*" + a + "=\\s*(.*?)\\s*$"), d = 0; d < c[u]; d++) {
+                var e = c[d][ma](a);
+                e && b[m](e[1])
+            }
+            return b
+        },
+        X = function (a, b, c, d, e) {
+            var f;
+            f = Jc() ? j : oc(d, c) ? j : h;
+            if (f) {
+                if (b && V[ra].userAgent[p]("Firefox") >= 0) {
+                    b = b[ia](/\n|\r/g, " ");
+                    f = 0;
+                    for (var l = b[u]; f < l; ++f) {
+                        var o = b.charCodeAt(f) & 255;
+                        if (o == 10 || o == 13) b = b[z](0, f) + "?" + b[z](f + 1)
+                    }
+                }
+                b && b[u] > 2E3 && (b = b[z](0, 2E3), G(69));
+                a = a + "=" + b + "; path=" + c + "; ";
+                e && (a += "expires=" + (new Date((new Date).getTime() + e)).toGMTString() + "; ");
+                d && (a += "domain=" + d + ";");
+                J.cookie = a
+            }
+        };
+    var Oc, Pc, Qc = function () {
+            if (!Oc) {
+                var a = {},
+                    b = V[ra],
+                    c = V.screen;
+                a.H = c ? c.width + "x" + c.height : "-";
+                a.G = c ? c.colorDepth + "-bit" : "-";
+                a.language = (b && (b.language || b.browserLanguage) || "-")[C]();
+                a.javaEnabled = b && b.javaEnabled() ? 1 : 0;
+                a.characterSet = J.characterSet || J.charset || "-";
+                Oc = a
+            }
+        },
+        Rc = function () {
+            Qc();
+            for (var a = Oc, b = V[ra], a = b.appName + b.version + a.language + b.platform + b.userAgent + a.javaEnabled + a.H + a.G + (J.cookie ? J.cookie : "") + (J.referrer ? J.referrer : ""), b = a[u], c = V.history[u]; c > 0;) a += c-- ^ b++;
+            return ua(a)
+        },
+        Sc = function (a) {
+            Qc();
+            var b = Oc;
+            a.set(sb, b.H);
+            a.set(tb, b.G);
+            a.set(wb, b.language);
+            a.set(xb, b.characterSet);
+            a.set(ub, b.javaEnabled);
+            if (a.get(Ta) && a.get(Ua)) {
+                if (!(b = Pc)) {
+                    var c, d, e;
+                    d = "ShockwaveFlash";
+                    if ((b = (b = V[ra]) ? b.plugins : g) && b[u] > 0) for (c = 0; c < b[u] && !e; c++) d = b[c], d[r][p]("Shockwave Flash") > -1 && (e = d.description[w]("Shockwave Flash ")[1]);
+                    else {
+                        d = d + "." + d;
+                        try {
+                            c = new ActiveXObject(d + ".7"), e = c.GetVariable("$version")
+                        } catch (f) {}
+                        if (!e) try {
+                            c = new ActiveXObject(d + ".6"), e = "WIN 6,0,21,0", c.AllowScriptAccess = "always", e = c.GetVariable("$version")
+                        } catch (l) {}
+                        if (!e) try {
+                            c = new ActiveXObject(d), e = c.GetVariable("$version")
+                        } catch (o) {}
+                        e && (e = e[w](" ")[1][w](","), e = e[0] + "." + e[1] + " r" + e[2])
+                    }
+                    b = e ? e : "-"
+                }
+                Pc = b;
+                a.set(vb, Pc)
+            } else a.set(vb, "-")
+        };
+    var Y = function () {
+            R(Y[v], "push", Y[v][m], 5);
+            R(Y[v], "_createAsyncTracker", Y[v].Ba, 33);
+            R(Y[v], "_getAsyncTracker", Y[v].Ca, 34);
+            this.r = 0
+        };
+    Y[v].Ba = function (a, b) {
+        return K.l(a, b || "")
+    };
+    Y[v].Ca = function (a) {
+        return K.p(a)
+    };
+    Y[v].push = function (a) {
+        this.r > 0 && G(105);
+        this.r++;
+        for (var b = arguments, c = 0, d = 0; d < b[u]; d++) try {
+            if (typeof b[d] === "function") b[d]();
+            else {
+                var e = "",
+                    f = b[d][0],
+                    l = f.lastIndexOf(".");
+                l > 0 && (e = f[z](0, l), f = f[z](l + 1));
+                var o = e == "_gat" ? K : e == "_gaq" ? Tc : K.p(e);
+                o[f].apply(o, b[d][ha](1))
+            }
+        } catch (q) {
+            c++
+        }
+        this.r--;
+        return c
+    };
+    var Yc = function () {
+            function a(a, b, c, d) {
+                g == f[a] && (f[a] = {});
+                g == f[a][b] && (f[a][b] = []);
+                f[a][b][c] = d
+            }
+            function b(a, b, c) {
+                if (g != f[a] && g != f[a][b]) return f[a][b][c]
+            }
+            function c(a, b) {
+                if (g != f[a] && g != f[a][b]) {
+                    f[a][b] = g;
+                    var c = h,
+                        d;
+                    for (d = 0; d < l[u]; d++) if (g != f[a][l[d]]) {
+                        c = j;
+                        break
+                    }
+                    c && (f[a] = g)
+                }
+            }
+            function d(a) {
+                var b = "",
+                    c = j,
+                    d, e;
+                for (d = 0; d < l[u]; d++) if (e = a[l[d]], g != e) {
+                    c && (b += l[d]);
+                    for (var c = [], f = g, $ = g, $ = 0; $ < e[u]; $++) if (g != e[$]) {
+                        f = "";
+                        $ != aa && g == e[$ - 1] && (f += $[t]() + na);
+                        for (var Wc = e[$], Xc = "", Ab = g, fc = g, gc = g, Ab = 0; Ab < Wc[u]; Ab++) fc = Wc[n](Ab), gc = B[fc], Xc += g != gc ? gc : fc;
+                        f += Xc;
+                        c[m](f)
+                    }
+                    b += o + c[A](s) + q;
+                    c = j
+                } else c = h;
+                return b
+            }
+            var e = this,
+                f = [],
+                l = ["k", "v"],
+                o = "(",
+                q = ")",
+                s = "*",
+                na = "!",
+                B = {
+                    "'": "'0"
+                };
+            B[q] = "'1";
+            B[s] = "'2";
+            B[na] = "'3";
+            var aa = 1;
+            e.va = function (a) {
+                return g != f[a]
+            };
+            e.o = function () {
+                for (var a = "", b = 0; b < f[u]; b++) g != f[b] && (a += b[t]() + d(f[b]));
+                return a
+            };
+            e.ua = function (a) {
+                if (a == g) return e.o();
+                for (var b = a.o(), c = 0; c < f[u]; c++) g != f[c] && !a.va(c) && (b += c[t]() + d(f[c]));
+                return b
+            };
+            e.e = function (b, c, d) {
+                if (!Uc(d)) return j;
+                a(b, "k", c, d);
+                return h
+            };
+            e.k = function (b, c, d) {
+                if (!Vc(d)) return j;
+                a(b, "v", c, d[t]());
+                return h
+            };
+            e.getKey = function (a, c) {
+                return b(a, "k", c)
+            };
+            e.C = function (a, c) {
+                return b(a, "v", c)
+            };
+            e.A = function (a) {
+                c(a, "k")
+            };
+            e.B = function (a) {
+                c(a, "v")
+            };
+            R(e, "_setKey", e.e, 89);
+            R(e, "_setValue", e.k, 90);
+            R(e, "_getKey", e.getKey, 87);
+            R(e, "_getValue", e.C, 88);
+            R(e, "_clearKey", e.A, 85);
+            R(e, "_clearValue", e.B, 86)
+        };
+
+    function Uc(a) {
+        return typeof a == "string"
+    }
+    function Vc(a) {
+        return typeof a != "number" && (g == Number || !(a instanceof Number)) || k.round(a) != a || a == NaN || a == ca ? j : h
+    };
+    var Zc = function (a) {
+            var b = V.gaGlobal;
+            a && !b && (V.gaGlobal = b = {});
+            return b
+        },
+        $c = function () {
+            var a = Zc(h).hid;
+            if (a == i) a = va(), Zc(h).hid = a;
+            return a
+        },
+        ad = function (a) {
+            a.set(rb, $c());
+            var b = Zc();
+            if (b && b.dh == a.get(M)) {
+                var c = b.sid;
+                c && (c == "0" && G(112), a.set(Eb, c), a.get(yb) && a.set(Db, c));
+                b = b.vid;
+                a.get(yb) && b && (b = b[w]("."), b[1] * 1 || G(112), a.set(P, b[0] * 1), a.set(Cb, b[1] * 1))
+            }
+        };
+    var bd, cd = function (a, b, c) {
+            var d = a[y](Ma, ""),
+                e = a[y](N, "/"),
+                a = a.b(Na, 0);
+            X(b, c, e, d, a)
+        },
+        tc = function (a) {
+            var b = a[y](Ma, "");
+            a.b(M, 1);
+            var c = a[y](N, "/");
+            X("__utma", yc(a), c, b, a.get(Na));
+            X("__utmb", zc(a), c, b, a.get(Oa));
+            X("__utmc", "" + a.b(M, 1), c, b);
+            var d = Ec(a, h);
+            d ? X("__utmz", d, c, b, a.get(Pa)) : X("__utmz", "", c, b, -1);
+            (d = Bc(a, j)) ? X("__utmv", d, c, b, a.get(Na)) : X("__utmv", "", c, b, -1)
+        },
+        sc = function (a) {
+            var b = a.b(M, 1);
+            if (!xc(a, vc(b, W("__utma")))) return a.set(Bb, h), j;
+            var c = !Ac(a, vc(b, W("__utmb")));
+            a.set(Hb, c);
+            Gc(a, vc(b, W("__utmz")));
+            Cc(a, vc(b, W("__utmv")));
+            bd = !c;
+            return h
+        },
+        dd = function (a) {
+            !bd && !(W("__utmb")[u] > 0) && (X("__utmd", "1", a[y](N, "/"), a[y](Ma, ""), 1E4), W("__utmd")[u] == 0 && a[pa]())
+        };
+    var gd = function (a) {
+            a.get(P) == g ? ed(a) : a.get(Bb) && !a.get(kc) ? ed(a) : a.get(Hb) && fd(a)
+        },
+        hd = function (a) {
+            a.get(Nb) && !a.get(Gb) && (fd(a), a.set(Lb, a.get(Fb)))
+        },
+        ed = function (a) {
+            var b = a.get(La);
+            a.set(yb, h);
+            a.set(P, va() ^ Rc(a) & 2147483647);
+            a.set(zb, "");
+            a.set(Cb, b);
+            a.set(Db, b);
+            a.set(Eb, b);
+            a.set(Fb, 1);
+            a.set(Gb, h);
+            a.set(Ib, 0);
+            a.set(Q, 10);
+            a.set(Jb, b);
+            a.set(O, []);
+            a.set(Bb, j);
+            a.set(Hb, j)
+        },
+        fd = function (a) {
+            a.set(Db, a.get(Eb));
+            a.set(Eb, a.get(La));
+            a.n(Fb);
+            a.set(Gb, h);
+            a.set(Ib, 0);
+            a.set(Q, 10);
+            a.set(Jb, a.get(La));
+            a.set(Hb, j)
+        };
+    var id = "daum:q,eniro:search_word,naver:query,pchome:q,images.google:q,google:q,yahoo:p,yahoo:q,msn:q,bing:q,aol:query,aol:q,lycos:query,ask:q,netscape:query,cnn:query,about:terms,mamma:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,kvasir:q,ozu:q,terra:query,rambler:query".split(","),
+        od = function (a) {
+            if (a.get(Va) && !a.get(kc)) {
+                for (var b = !E(a.get(Ob)) || !E(a.get(Sb)) || !E(a.get(Qb)) || !E(a.get(Rb)), c = {}, d = 0; d < jd[u]; d++) {
+                    var e = jd[d];
+                    c[e] = a.get(e)
+                }
+                d = Ca(J[x].href, a.get(Ra));
+                if (!(za(d.c.get(a.get(db))) == "1" && b) && (d = kd(a, d) || ld(a), !d && !b && a.get(Gb) && (md(a, g, "(direct)", g, g, "(direct)", "(none)", g, g), d = h), d && (a.set(Nb, nd(a, c)), b = a.get(Sb) == "(direct)" && a.get(Pb) == "(direct)" && a.get(Tb) == "(none)", a.get(Nb) || a.get(Gb) && !b))) a.set(Kb, a.get(La)), a.set(Lb, a.get(Fb)), a.n(Mb)
+            }
+        },
+        kd = function (a, b) {
+            function c(c, d) {
+                var d = d || "-",
+                    e = za(b.c.get(a.get(c)));
+                return e && e != "-" ? H(e) : d
+            }
+            var d = za(b.c.get(a.get(Xa))) || "-",
+                e = za(b.c.get(a.get($a))) || "-",
+                f = za(b.c.get(a.get(Za))) || "-",
+                l = za(b.c.get("dclid")) || "-",
+                o = c(Ya, "(not set)"),
+                q = c(ab, "(not set)"),
+                s = c(bb),
+                na = c(cb);
+            if (E(d) && E(f) && E(l) && E(e)) return j;
+            if (E(s)) {
+                var B = Ea(a.get(qb), a.get(N)),
+                    B = Ca(B, h);
+                (B = pd(a, B)) && !E(B[1] && !B[2]) && (s = B[1])
+            }
+            md(a, d, e, f, l, o, q, s, na);
+            return h
+        },
+        ld = function (a) {
+            var b = Ea(a.get(qb), a.get(N)),
+                c = Ca(b, h);
+            if (!(b != g && b != i && b != "" && b != "0" && b != "-" && b[p]("://") >= 0) || c && c[oa][p]("google") > -1 && c.c.contains("q") && c.path == "cse") return j;
+            if ((b = pd(a, c)) && !b[2]) return md(a, g, b[0], g, g, "(organic)", "organic", b[1], g), h;
+            else if (b) return j;
+            if (a.get(Gb)) a: {
+                for (var b = a.get(kb), d = Ba(c[oa]), e = 0; e < b[u]; ++e) if (d[p](b[e]) > -1) {
+                    a = j;
+                    break a
+                }
+                md(a, g, d, g, g, "(referral)", "referral", g, "/" + c.path);
+                a = h
+            } else a = j;
+            return a
+        },
+        pd = function (a, b) {
+            for (var c = a.get(ib), d = 0; d < c[u]; ++d) {
+                var e = c[d][w](":");
+                if (b[oa][p](e[0][C]()) > -1) {
+                    var f = b.c.get(e[1]);
+                    if (f && (f = I(f), !f && b[oa][p]("google.") > -1 && (f = "(not provided)"), !e[3] || b.url[p](e[3]) > -1)) {
+                        a: {
+                            for (var c = f, d = a.get(jb), c = H(c)[C](), l = 0; l < d[u]; ++l) if (c == d[l]) {
+                                c = h;
+                                break a
+                            }
+                            c = j
+                        }
+                        return [e[2] || e[0], f, c]
+                    }
+                }
+            }
+            return i
+        },
+        md = function (a, b, c, d, e, f, l, o, q) {
+            a.set(Ob, b);
+            a.set(Sb, c);
+            a.set(Qb, d);
+            a.set(Rb, e);
+            a.set(Pb, f);
+            a.set(Tb, l);
+            a.set(Ub, o);
+            a.set(Vb, q)
+        },
+        jd = [Pb, Ob, Qb, Rb, Sb, Tb, Ub, Vb],
+        nd = function (a, b) {
+            function c(a) {
+                a = ("" + a)[w]("+")[A]("%20");
+                return a = a[w](" ")[A]("%20")
+            }
+            function d(c) {
+                var d = "" + (a.get(c) || ""),
+                    c = "" + (b[c] || "");
+                return d[u] > 0 && d == c
+            }
+            if (d(Qb) || d(Rb)) return G(131), j;
+            for (var e = 0; e < jd[u]; e++) {
+                var f = jd[e],
+                    l = b[f] || "-",
+                    f = a.get(f) || "-";
+                if (c(l) != c(f)) return h
+            }
+            return j
+        };
+    var rd = function (a) {
+            qd(a, J[x].href) ? (a.set(kc, h), G(12)) : a.set(kc, j)
+        },
+        qd = function (a, b) {
+            if (!a.get(Qa)) return j;
+            var c = Ca(b, a.get(Ra)),
+                d = I(c.c.get("__utma")),
+                e = I(c.c.get("__utmb")),
+                f = I(c.c.get("__utmc")),
+                l = I(c.c.get("__utmx")),
+                o = I(c.c.get("__utmz")),
+                q = I(c.c.get("__utmv")),
+                c = I(c.c.get("__utmk"));
+            if (ua("" + d + e + f + l + o + q) != c) {
+                d = H(d);
+                e = H(e);
+                f = H(f);
+                l = H(l);
+                a: {
+                    for (var f = d + e + f + l, s = 0; s < 3; s++) {
+                        for (var na = 0; na < 3; na++) {
+                            if (c == ua(f + o + q)) {
+                                G(127);
+                                c = [o, q];
+                                break a
+                            }
+                            var B = o[ia](/ /g, "%20"),
+                                aa = q[ia](/ /g, "%20");
+                            if (c == ua(f + B + aa)) {
+                                G(128);
+                                c = [B, aa];
+                                break a
+                            }
+                            B = B[ia](/\+/g, "%20");
+                            aa = aa[ia](/\+/g, "%20");
+                            if (c == ua(f + B + aa)) {
+                                G(129);
+                                c = [B, aa];
+                                break a
+                            }
+                            o = H(o)
+                        }
+                        q = H(q)
+                    }
+                    c = g
+                }
+                if (!c) return j;
+                o = c[0];
+                q = c[1]
+            }
+            if (!xc(a, d, h)) return j;
+            Ac(a, e, h);
+            Gc(a, o, h);
+            Cc(a, q, h);
+            sd(a, l, h);
+            return h
+        },
+        ud = function (a, b, c) {
+            var d;
+            d = yc(a) || "-";
+            var e = zc(a) || "-",
+                f = "" + a.b(M, 1) || "-",
+                l = td(a) || "-",
+                o = Ec(a, j) || "-",
+                a = Bc(a, j) || "-",
+                q = ua("" + d + e + f + l + o + a),
+                s = [];
+            s[m]("__utma=" + d);
+            s[m]("__utmb=" + e);
+            s[m]("__utmc=" + f);
+            s[m]("__utmx=" + l);
+            s[m]("__utmz=" + o);
+            s[m]("__utmv=" + a);
+            s[m]("__utmk=" + q);
+            d = s[A]("&");
+            if (!d) return b;
+            e = b[p]("#");
+            return c ? e < 0 ? b + "#" + d : b + "&" + d : (c = "", f = b[p]("?"), e > 0 && (c = b[z](e), b = b[z](0, e)), f < 0 ? b + "?" + d + c : b + "&" + d + c)
+        };
+    var vd = "|",
+        xd = function (a, b, c, d, e, f, l, o, q) {
+            var s = wd(a, b);
+            s || (s = {}, a.get(lb)[m](s));
+            s.id_ = b;
+            s.affiliation_ = c;
+            s.total_ = d;
+            s.tax_ = e;
+            s.shipping_ = f;
+            s.city_ = l;
+            s.state_ = o;
+            s.country_ = q;
+            s.items_ = s.items_ || [];
+            return s
+        },
+        yd = function (a, b, c, d, e, f, l) {
+            var a = wd(a, b) || xd(a, b, "", 0, 0, 0, "", "", ""),
+                o;
+            a: {
+                if (a && a.items_) {
+                    o = a.items_;
+                    for (var q = 0; q < o[u]; q++) if (o[q].sku_ == c) {
+                        o = o[q];
+                        break a
+                    }
+                }
+                o = i
+            }
+            q = o || {};
+            q.transId_ = b;
+            q.sku_ = c;
+            q.name_ = d;
+            q.category_ = e;
+            q.price_ = f;
+            q.quantity_ = l;
+            o || a.items_[m](q);
+            return q
+        },
+        wd = function (a, b) {
+            for (var c = a.get(lb), d = 0; d < c[u]; d++) if (c[d].id_ == b) return c[d];
+            return i
+        };
+    var zd, Ad = function (a) {
+            /* Disabled for security.
+            var f;
+            var e;
+            if (!zd) {
+                var b;
+                b = J[x].hash;
+                var c = V[r],
+                    d = /^#?gaso=([^&]*)/;
+                if (f = (e = (b = b && b[ma](d) || c && c[ma](d)) ? b[1] : I(W("GASO")), b = e) && b[ma](/^(?:\|([-0-9a-z.]{1,40})\|)?([-.\w]{10,1200})$/i), c = f) if (cd(a, "GASO", "" + b), K._gasoDomain = a.get(Ma), K._gasoCPath = a.get(N), b = "https://"; + ((c[1] || "www") + ".google.com") + "/analytics/reporting/overlay_js?gaso=" + c[2] + "&" + va()) a = J.createElement("script"), a.type = "text/javascript", a.async = h, a.src = b, a.id = "_gasojs", fa(a, g), b = J.getElementsByTagName("script")[0], b.parentNode.insertBefore(a, b);
+                zd = h
+                */
+            }
+        };
+    var sd = function (a, b, c) {
+            c && (b = H(b));
+            c = a.b(M, 1);
+            b = b[w](".");
+            !(b[u] < 2) && /^\d+$/.test(b[0]) && (b[0] = "" + c, cd(a, "__utmx", b[A](".")))
+        },
+        td = function (a, b) {
+            var c = vc(a.get(M), W("__utmx"));
+            c == "-" && (c = "");
+            return b ? F(c) : c
+        };
+    var Fd = function (a, b) {
+            var c = k.min(a.b(ic, 0), 10);
+            if (a.b(P, 0) % 100 >= c) return j;
+            c = Bd() || Cd();
+            if (c == g) return j;
+            var d = c[0];
+            if (d == g || d == ca || isNaN(d)) return j;
+            d > 0 ? Dd(c) ? b(Ed(c)) : b(Ed(c[ha](0, 1))) : xa(V, "load", function () {
+                Fd(a, b)
+            }, j);
+            return h
+        },
+        Dd = function (a) {
+            for (var b = 1; b < a[u]; b++) if (isNaN(a[b]) || a[b] == ca || a[b] < 0) return j;
+            return h
+        },
+        Ed = function (a) {
+            for (var b = new Yc, c = 0; c < a[u]; c++) b.e(14, c + 1, (isNaN(a[c]) || a[c] < 0 ? 0 : a[c] < 5E3 ? k[ka](a[c] / 10) * 10 : a[c] < 45E4 ? k[ka](a[c] / 100) * 100 : 45E4) + ""), b.k(14, c + 1, a[c]);
+            return b
+        },
+        Bd = function () {
+            var a = V.performance || V.webkitPerformance;
+            if (a = a && a.timing) {
+                var b = a.navigationStart;
+                if (b == 0) G(133);
+                else return [a.loadEventStart - b, a.domainLookupEnd - a.domainLookupStart, a.connectEnd - a.connectStart, a.responseStart - a.requestStart, a.responseEnd - a.responseStart, a.fetchStart - b]
+            }
+        },
+        Cd = function () {
+            if (V.top == V) {
+                var a = V.external,
+                    b = a && a.onloadT;
+                a && !a.isValidLoadTime && (b = g);
+                b > 2147483648 && (b = g);
+                b > 0 && a.setPageReadyTime();
+                return b == g ? g : [b]
+            }
+        };
+    var S = function (a, b, c) {
+            function d(a) {
+                return function (b) {
+                    if ((b = b.get(lc)[a]) && b[u]) for (var c = nc(e, a), d = 0; d < b[u]; d++) b[d].call(e, c)
+                }
+            }
+            var e = this;
+            this.a = new uc;
+            this.get = function (a) {
+                return this.a.get(a)
+            };
+            this.set = function (a, b, c) {
+                this.a.set(a, b, c)
+            };
+            this.set(Ia, b || "UA-XXXXX-X");
+            this.set(Ka, a || "");
+            this.set(Ja, c || "");
+            this.set(La, k.round((new Date).getTime() / 1E3));
+            this.set(N, "/");
+            this.set(Na, 63072E6);
+            this.set(Pa, 15768E6);
+            this.set(Oa, 18E5);
+            this.set(Qa, j);
+            this.set(hb, 50);
+            this.set(Ra, j);
+            this.set(Sa, h);
+            this.set(Ta, h);
+            this.set(Ua, h);
+            this.set(Va, h);
+            this.set(Wa, h);
+            this.set(Ya, "utm_campaign");
+            this.set(Xa, "utm_id");
+            this.set(Za, "gclid");
+            this.set($a, "utm_source");
+            this.set(ab, "utm_medium");
+            this.set(bb, "utm_term");
+            this.set(cb, "utm_content");
+            this.set(db, "utm_nooverride");
+            this.set(eb, 100);
+            this.set(ic, 1);
+            this.set(jc, j);
+            this.set(fb, "/__utm.gif");
+            this.set(gb, 1);
+            this.set(lb, []);
+            this.set(O, []);
+            this.set(ib, id[ha](0));
+            this.set(jb, []);
+            this.set(kb, []);
+            this.t("auto");
+            this.set(qb, this.ra());
+            this.set(lc, {
+                hit: [],
+                load: []
+            });
+            this.a.g("0", rd);
+            this.a.g("1", gd);
+            this.a.g("2", od);
+            this.a.g("3", hd);
+            this.a.g("4", d("load"));
+            this.a.g("5", Ad);
+            this.a.d("A", Ic);
+            this.a.d("B", Kc);
+            this.a.d("C", gd);
+            this.a.d("D", Hc);
+            this.a.d("E", pc);
+            this.a.d("F", Gd);
+            this.a.d("G", dd);
+            this.a.d("H", Lc);
+            this.a.d("I", Sc);
+            this.a.d("J", ad);
+            this.a.d("K", d("hit"));
+            this.a.d("L", Hd);
+            this.a.d("M", Id);
+            this.get(La) === 0 && G(111);
+            this.a.J();
+            this.w = g
+        };
+    D = S[v];
+    D.h = function () {
+        var a = this.get(mb);
+        a || (a = new Yc, this.set(mb, a));
+        return a
+    };
+    D.ta = function (a) {
+        for (var b in a) {
+            var c = a[b];
+            a.hasOwnProperty(b) && typeof c != "function" && this.set(b, c, h)
+        }
+    };
+    D.z = function (a) {
+        if (this.get(jc)) return j;
+        var b = this,
+            c = Fd(this.a, function (c) {
+                b.set(ob, a, h);
+                b.u(c)
+            });
+        this.set(jc, c);
+        return c
+    };
+    D.na = function (a) {
+        a && a != g && (a.constructor + "")[p]("String") > -1 ? (G(13), this.set(ob, a, h)) : typeof a === "object" && a !== i && this.ta(a);
+        this.w = a = this.get(ob);
+        this.a.f("page");
+        this.z(a)
+    };
+    D.v = function (a, b, c, d, e) {
+        if (a == "" || !Uc(a) || b == "" || !Uc(b)) return j;
+        if (c != g && !Uc(c)) return j;
+        if (d != g && !Vc(d)) return j;
+        this.set($b, a, h);
+        this.set(ac, b, h);
+        this.set(bc, c, h);
+        this.set(cc, d, h);
+        this.set(Zb, !! e, h);
+        this.a.f("event");
+        return h
+    };
+    D.oa = function (a, b, c, d) {
+        if (!a || !b) return j;
+        this.set(dc, a, h);
+        this.set(ec, b, h);
+        this.set(hc, c || J[x].href, h);
+        d && this.set(ob, d, h);
+        this.a.f("social");
+        return h
+    };
+    D.ma = function () {
+        this.set(ic, 10);
+        this.z(this.w)
+    };
+    D.pa = function () {
+        this.a.f("trans")
+    };
+    D.u = function (a) {
+        this.set(nb, a, h);
+        this.a.f("event")
+    };
+    D.V = function (a) {
+        this.m();
+        var b = this;
+        return {
+            _trackEvent: function (c, d, e) {
+                G(91);
+                b.v(a, c, d, e)
+            }
+        }
+    };
+    D.Y = function (a) {
+        return this.get(a)
+    };
+    D.ga = function (a, b) {
+        if (a) if (a != g && (a.constructor + "")[p]("String") > -1) this.set(a, b);
+        else if (typeof a == "object") for (var c in a) a.hasOwnProperty(c) && this.set(c, a[c])
+    };
+    D.addEventListener = function (a, b) {
+        var c = this.get(lc)[a];
+        c && c[m](b)
+    };
+    D.removeEventListener = function (a, b) {
+        for (var c = this.get(lc)[a], d = 0; c && d < c[u]; d++) if (c[d] == b) {
+            c.splice(d, 1);
+            break
+        }
+    };
+    D.$ = function () {
+        return "5.2.2"
+    };
+    D.t = function (a) {
+        this.get(Sa);
+        a = a == "auto" ? Ba(J.domain) : !a || a == "-" || a == "none" ? "" : a[C]();
+        this.set(Ma, a)
+    };
+    D.ea = function (a) {
+        this.set(Sa, !! a)
+    };
+    D.Z = function (a, b) {
+        return ud(this.a, a, b)
+    };
+    D.link = function (a, b) {
+        if (this.a.get(Qa) && a) {
+            var c = ud(this.a, a, b);
+            J[x].href = c
+        }
+    };
+    D.da = function (a, b) {
+        this.a.get(Qa) && a && a.action && (a.action = ud(this.a, a.action, b))
+    };
+    D.ha = function () {
+        this.m();
+        var a = this.a,
+            b = J.getElementById ? J.getElementById("utmtrans") : J.utmform && J.utmform.utmtrans ? J.utmform.utmtrans : i;
+        if (b && b[la]) {
+            a.set(lb, []);
+            for (var b = b[la][w]("UTM:"), c = 0; c < b[u]; c++) {
+                b[c] = ta(b[c]);
+                for (var d = b[c][w](vd), e = 0; e < d[u]; e++) d[e] = ta(d[e]);
+                "T" == d[0] ? xd(a, d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8]) : "I" == d[0] && yd(a, d[1], d[2], d[3], d[4], d[5], d[6])
+            }
+        }
+    };
+    D.O = function (a, b, c, d, e, f, l, o) {
+        return xd(this.a, a, b, c, d, e, f, l, o)
+    };
+    D.M = function (a, b, c, d, e, f) {
+        return yd(this.a, a, b, c, d, e, f)
+    };
+    D.ia = function (a) {
+        vd = a || "|"
+    };
+    D.fa = function (a, b, c, d) {
+        var e = this.a;
+        if (a <= 0 || a > e.get(hb)) a = j;
+        else if (!b || !c || F(b)[u] + F(c)[u] > 64) a = j;
+        else {
+            d != 1 && d != 2 && (d = 3);
+            var f = {};
+            ga(f, b);
+            f.value = c;
+            f.scope = d;
+            e.get(O)[a] = f;
+            a = h
+        }
+        a && this.a.i();
+        return a
+    };
+    D.X = function (a) {
+        this.a.get(O)[a] = g;
+        this.a.i()
+    };
+    D.aa = function (a) {
+        return (a = this.a.get(O)[a]) && a[qa] == 1 ? a[la] : g
+    };
+    D.ka = function (a, b, c) {
+        this.h().e(a, b, c)
+    };
+    D.la = function (a, b, c) {
+        this.h().k(a, b, c)
+    };
+    D.ba = function (a, b) {
+        return this.h().getKey(a, b)
+    };
+    D.ca = function (a, b) {
+        return this.h().C(a, b)
+    };
+    D.S = function (a) {
+        this.h().A(a)
+    };
+    D.T = function (a) {
+        this.h().B(a)
+    };
+    D.W = function () {
+        return new Yc
+    };
+    D.K = function (a) {
+        a && this.get(jb)[m](a[C]())
+    };
+    D.P = function () {
+        this.set(jb, [])
+    };
+    D.L = function (a) {
+        a && this.get(kb)[m](a[C]())
+    };
+    D.Q = function () {
+        this.set(kb, [])
+    };
+    D.N = function (a, b, c, d, e) {
+        if (a && b) {
+            a = [a, b[C]()][A](":");
+            if (d || e) a = [a, d, e][A](":");
+            d = this.get(ib);
+            d.splice(c ? 0 : d[u], 0, a)
+        }
+    };
+    D.R = function () {
+        this.set(ib, [])
+    };
+    D.U = function (a) {
+        this.a[ja]();
+        var b = this.get(N),
+            c = td(this.a);
+        this.set(N, a);
+        this.a.i();
+        sd(this.a, c);
+        this.set(N, b)
+    };
+    D.ra = function () {
+        return J.referrer
+    };
+    D.m = function () {
+        this.a[ja]()
+    };
+    D.ja = function (a) {
+        a && a != "" && (this.set(zb, a), this.a.f("var"))
+    };
+    var Gd = function (a) {
+            a.get(Wb) !== "trans" && a.b(Ib, 0) >= 500 && a[pa]();
+            if (a.get(Wb) === "event") {
+                var b = (new Date).getTime(),
+                    c = a.b(Jb, 0),
+                    d = a.b(Eb, 0),
+                    c = k[ka](0.2 * ((b - (c != d ? c : c * 1E3)) / 1E3));
+                c > 0 && (a.set(Jb, b), a.set(Q, k.min(10, a.b(Q, 0) + c)));
+                a.b(Q, 0) <= 0 && a[pa]()
+            }
+        },
+        Id = function (a) {
+            a.get(Wb) === "event" && a.set(Q, k.max(0, a.b(Q, 10) - 1))
+        };
+    var Jd = function () {
+            var a = [];
+            this.add = function (b, c, d) {
+                d && (c = F("" + c));
+                a[m](b + "=" + c)
+            };
+            this.toString = function () {
+                return a[A]("&")
+            }
+        },
+        Kd = function (a, b) {
+            (b || a.get(gb) != 2) && a.n(Ib)
+        },
+        Ld = function (a, b) {
+            b.add("utmwv", "5.2.2");
+            b.add("utms", a.get(Ib));
+            b.add("utmn", va());
+            var c = J[x].hostname;
+            E(c) || b.add("utmhn", c, h);
+            c = a.get(eb);
+            c != 100 && b.add("utmsp", c, h)
+        },
+        Nd = function (a, b) {
+            b.add("utmac", a.get(Ia));
+            a.get(Zb) && b.add("utmni", 1);
+            Md(a, b);
+            K.q && b.add("aip", 1);
+            b.add("utmu", Mc.Ea())
+        },
+        Md = function (a, b) {
+            function c(a, b) {
+                b && d[m](a + "=" + b + ";")
+            }
+            var d = [];
+            c("__utma", yc(a));
+            c("__utmz", Ec(a, j));
+            c("__utmv", Bc(a, h));
+            c("__utmx", td(a));
+            b.add("utmcc", d[A]("+"), h)
+        },
+        Od = function (a, b) {
+            a.get(Ta) && (b.add("utmcs", a.get(xb), h), b.add("utmsr", a.get(sb)), b.add("utmsc", a.get(tb)), b.add("utmul", a.get(wb)), b.add("utmje", a.get(ub)), b.add("utmfl", a.get(vb), h))
+        },
+        Pd = function (a, b) {
+            a.get(Wa) && a.get(pb) && b.add("utmdt", a.get(pb), h);
+            b.add("utmhid", a.get(rb));
+            b.add("utmr", Ea(a.get(qb), a.get(N)), h);
+            b.add("utmp", F(a.get(ob), h), h)
+        },
+        Qd = function (a, b) {
+            for (var c = a.get(mb), d = a.get(nb), e = a.get(O) || [], f = 0; f < e[u]; f++) {
+                var l = e[f];
+                l && (c || (c = new Yc), c.e(8, f, l[r]), c.e(9, f, l[la]), l[qa] != 3 && c.e(11, f, "" + l[qa]))
+            }!E(a.get($b)) && !E(a.get(ac), h) && (c || (c = new Yc), c.e(5, 1, a.get($b)), c.e(5, 2, a.get(ac)), e = a.get(bc), e != g && c.e(5, 3, e), e = a.get(cc), e != g && c.k(5, 1, e));
+            c ? b.add("utme", c.ua(d), h) : d && b.add("utme", d.o(), h)
+        },
+        Rd = function (a, b, c) {
+            var d = new Jd;
+            Kd(a, c);
+            Ld(a, d);
+            d.add("utmt", "tran");
+            d.add("utmtid", b.id_, h);
+            d.add("utmtst", b.affiliation_, h);
+            d.add("utmtto", b.total_, h);
+            d.add("utmttx", b.tax_, h);
+            d.add("utmtsp", b.shipping_, h);
+            d.add("utmtci", b.city_, h);
+            d.add("utmtrg", b.state_, h);
+            d.add("utmtco", b.country_, h);
+            !c && Nd(a, d);
+            return d[t]()
+        },
+        Sd = function (a, b, c) {
+            var d = new Jd;
+            Kd(a, c);
+            Ld(a, d);
+            d.add("utmt", "item");
+            d.add("utmtid", b.transId_, h);
+            d.add("utmipc", b.sku_, h);
+            d.add("utmipn", b.name_, h);
+            d.add("utmiva", b.category_, h);
+            d.add("utmipr", b.price_, h);
+            d.add("utmiqt", b.quantity_, h);
+            !c && Nd(a, d);
+            return d[t]()
+        },
+        Td = function (a, b) {
+            var c = a.get(Wb);
+            if (c == "page") c = new Jd, Kd(a, b), Ld(a, c), Qd(a, c), Od(a, c), Pd(a, c), b || Nd(a, c), c = [c[t]()];
+            else if (c == "event") c = new Jd, Kd(a, b), Ld(a, c), c.add("utmt", "event"), Qd(a, c), Od(a, c), Pd(a, c), !b && Nd(a, c), c = [c[t]()];
+            else if (c == "var") c = new Jd, Kd(a, b), Ld(a, c), c.add("utmt", "var"), !b && Nd(a, c), c = [c[t]()];
+            else if (c == "trans") for (var c = [], d = a.get(lb), e = 0; e < d[u]; ++e) {
+                c[m](Rd(a, d[e], b));
+                for (var f = d[e].items_, l = 0; l < f[u]; ++l) c[m](Sd(a, f[l], b))
+            } else c == "social" ? b ? c = [] : (c = new Jd, Kd(a, b), Ld(a, c), c.add("utmt", "social"), c.add("utmsn", a.get(dc), h), c.add("utmsa", a.get(ec), h), c.add("utmsid", a.get(hc), h), Qd(a, c), Od(a, c), Pd(a, c), Nd(a, c), c = [c[t]()]) : c = [];
+            return c
+        },
+        Hd = function (a) {
+            var b, c = a.get(gb),
+                d = a.get(Yb),
+                e = d && d.Aa,
+                f = 0;
+            if (c == 0 || c == 2) {
+                var l = a.get(fb) + "?";
+                b = Td(a, h);
+                for (var o = 0, q = b[u]; o < q; o++) Ga(b[o], e, l, h), f++
+            }
+            if (c == 1 || c == 2) {
+                b = Td(a);
+                o = 0;
+                for (q = b[u]; o < q; o++) try {
+                    Ga(b[o], e), f++
+                } catch (s) {
+                    s && Fa(s[r], g, s.message)
+                }
+            }
+            if (d) d.j = f
+        };
+    var Ud = "https:" == J[x].protocol ? "https://ssl.google-analytics.com"; : "http://www.google-analytics.com";,
+        Vd = function (a) {
+            ga(this, "len");
+            this.message = a + "-8192"
+        },
+        Wd = function (a) {
+            ga(this, "ff2post");
+            this.message = a + "-2036"
+        },
+        Ga = function (a, b, c, d) {
+            b = b || wa;
+            if (d || a[u] <= 2036) Xd(a, b, c);
+            else if (a[u] <= 8192) {
+                if (V[ra].userAgent[p]("Firefox") >= 0 && ![].reduce) throw new Wd(a[u]);
+                Yd(a, b) || Zd(a, b)
+            } else throw new Vd(a[u]);
+        },
+        Xd = function (a, b, c) {
+            var c = c || Ud + "/__utm.gif?",
+                d = new Image(1, 1);
+            d.src = c + a;
+            fa(d, function () {
+                fa(d, i);
+                d.onerror = i;
+                b()
+            });
+            d.onerror = function () {
+                fa(d, i);
+                d.onerror = i;
+                b()
+            }
+        },
+        Yd = function (a, b) {
+            var c, d = Ud + "/p/__utm.gif",
+                e = V.XDomainRequest;
+            if (e) c = new e, c.open("POST", d);
+            else if (e = V.XMLHttpRequest) e = new e, "withCredentials" in e && (c = e, c.open("POST", d, h), c.setRequestHeader("Content-Type", "text/plain"));
+            if (c) return c.onreadystatechange = function () {
+                c.readyState == 4 && (b(), c = i)
+            }, c.send(a), h
+        },
+        Zd = function (a, b) {
+            if (J.body) {
+                a = ba(a);
+                try {
+                    var c = J.createElement('<iframe name="' + a + '"></iframe>')
+                } catch (d) {
+                    c = J.createElement("iframe"), ga(c, a)
+                }
+                c.height = "0";
+                c.width = "0";
+                c.style.display = "none";
+                c.style.visibility = "hidden";
+                var e = J[x],
+                    e = Ud + "/u/post_iframe.html#" + ba(e.protocol + "//" + e[oa] + "/favicon.ico"),
+                    f = function () {
+                        c.src = "";
+                        c.parentNode && c.parentNode.removeChild(c)
+                    };
+                xa(V, "beforeunload", f);
+                var l = j,
+                    o = 0,
+                    q = function () {
+                        if (!l) {
+                            try {
+                                if (o > 9 || c.contentWindow[x][oa] == J[x][oa]) {
+                                    l = h;
+                                    f();
+                                    ya(V, "beforeunload", f);
+                                    b();
+                                    return
+                                }
+                            } catch (a) {}
+                            o++;
+                            da(q, 200)
+                        }
+                    };
+                xa(c, "load", q);
+                J.body.appendChild(c);
+                c.src = e
+            } else Nc(function () {
+                Zd(a, b)
+            }, 100)
+        };
+    var Z = function () {
+            this.q = j;
+            this.D = {};
+            this.F = [];
+            this.wa = 0;
+            this._gasoCPath = this._gasoDomain = g;
+            R(Z[v], "_createTracker", Z[v].l, 55);
+            R(Z[v], "_getTracker", Z[v].ya, 0);
+            R(Z[v], "_getTrackerByName", Z[v].p, 51);
+            R(Z[v], "_getTrackers", Z[v].za, 130);
+            R(Z[v], "_anonymizeIp", Z[v].xa, 16);
+            mc()
+        };
+    D = Z[v];
+    D.ya = function (a, b) {
+        return this.l(a, g, b)
+    };
+    D.l = function (a, b, c) {
+        b && G(23);
+        c && G(67);
+        b == g && (b = "~" + K.wa++);
+        a = new S(b, a, c);
+        K.D[b] = a;
+        K.F[m](a);
+        return a
+    };
+    D.p = function (a) {
+        a = a || "";
+        return K.D[a] || K.l(g, a)
+    };
+    D.za = function () {
+        return K.F[ha](0)
+    };
+    D.xa = function () {
+        this.q = h
+    };
+    var $d = function (a) {
+            if (J.webkitVisibilityState == "prerender") return j;
+            a();
+            return h
+        };
+    var K = new Z;
+    var ae = V._gat;
+    ae && typeof ae._getTracker == "function" ? K = ae : V._gat = K;
+    var Tc = new Y;
+    (function (a) {
+        if (!$d(a)) {
+            G(123);
+            var b = j,
+                c = function () {
+                    !b && $d(a) && (G(124), b = h, ya(J, "webkitvisibilitychange", c))
+                };
+            xa(J, "webkitvisibilitychange", c)
+        }
+    })(function () {
+        var a = V._gaq,
+            b = j;
+        if (a && typeof a[m] == "function" && (b = Object[v][t].call(Object(a)) == "[object Array]", !b)) {
+            Tc = a;
+            return
+        }
+        V._gaq = Tc;
+        b && Tc[m].apply(Tc, a)
+    });
+})();