/*! jQuery v1.8.3 jquery.com | jquery.org/license */
(function(e, t) {
        function _(e) {
                var t = M[e] = {};
                return v.each(e.split(y),
                function(e, n) {
                        t[n] = !0
                }),
                t
        }

        function B(e) {
                var t;
                for (t in e) {
                        if (t === "data" && v.isEmptyObject(e[t])) {
                                continue
                        }
                        if (t !== "toJSON") {
                                return ! 1
                        }
                }
                return ! 0
        }

        function et() {
                return ! 1
        }

        function lt(e) {
                var t = ct.split("|"),
                n = e.createDocumentFragment();
                if (n.createElement) {
                        while (t.length) {
                                n.createElement(t.pop())
                        }
                }
                return n
        }

        function Lt(e, t) {
                return e.getElementsByTagName(t)[0] || e.appendChild(e.ownerDocument.createElement(t))
        }

        function Zt(e, t, n) {
                var r = Rt.exec(t);
                return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t
        }

        function en(e, t, n, r) {
                var i = n === (r ? "border": "content") ? 4 : t === "width" ? 1 : 0,
                s = 0;
                for (; i < 4; i += 2) {
                        n === "margin" && (s += v.css(e, n + $t[i], !0)),
                        r ? (n === "content" && (s -= parseFloat(Dt(e, "padding" + $t[i])) || 0), n !== "margin" && (s -= parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0)) : (s += parseFloat(Dt(e, "padding" + $t[i])) || 0, n !== "padding" && (s += parseFloat(Dt(e, "border" + $t[i] + "Width")) || 0))
                }
                return s
        }

        function Cn(e) {
                return function(t, n) {
                        typeof t != "string" && (n = t, t = "*");
                        var r, i, s, o = t.toLowerCase().split(y),
                        u = 0,
                        a = o.length;
                        if (v.isFunction(n)) {
                                for (; u < a; u++) {
                                        r = o[u],
                                        s = /^\+/.test(r),
                                        s && (r = r.substr(1) || "*"),
                                        i = e[r] = e[r] || [],
                                        i[s ? "unshift": "push"](n)
                                }
                        }
                }
        }

        function kn(e, n, r, i, s, o) {
                s = s || n.dataTypes[0],
                o = o || {},
                o[s] = !0;
                var u, a = e[s],
                f = 0,
                l = a ? a.length: 0,
                c = e === Sn;
                for (; f < l && (c || !u); f++) {
                        u = a[f](n, r, i),
                        typeof u == "string" && (!c || o[u] ? u = t: (n.dataTypes.unshift(u), u = kn(e, n, r, i, u, o)))
                }
                return (c || !u) && !o["*"] && (u = kn(e, n, r, i, "*", o)),
                u
        }

        function Ln(e, n) {
                var r, i, s = v.ajaxSettings.flatOptions || {};
                for (r in n) {
                        n[r] !== t && ((s[r] ? e: i || (i = {}))[r] = n[r])
                }
                i && v.extend(!0, e, i)
        }

        function An(e, n, r) {
                var i, s, o, u, a = e.contents,
                f = e.dataTypes,
                l = e.responseFields;
                for (s in l) {
                        s in r && (n[l[s]] = r[s])
                }
                while (f[0] === "*") {
                        f.shift(),
                        i === t && (i = e.mimeType || n.getResponseHeader("content-type"))
                }
                if (i) {
                        for (s in a) {
                                if (a[s] && a[s].test(i)) {
                                        f.unshift(s);
                                        break
                                }
                        }
                }
                if (f[0] in r) {
                        o = f[0]
                } else {
                        for (s in r) {
                                if (!f[0] || e.converters[s + " " + f[0]]) {
                                        o = s;
                                        break
                                }
                                u || (u = s)
                        }
                        o = o || u
                }
                if (o) {
                        return o !== f[0] && f.unshift(o),
                        r[o]
                }
        }

        function On(e, t) {
                var n, r, i, s, o = e.dataTypes.slice(),
                u = o[0],
                a = {},
                f = 0;
                e.dataFilter && (t = e.dataFilter(t, e.dataType));
                if (o[1]) {
                        for (n in e.converters) {
                                a[n.toLowerCase()] = e.converters[n]
                        }
                }
                for (; i = o[++f];) {
                        if (i !== "*") {
                                if (u !== "*" && u !== i) {
                                        n = a[u + " " + i] || a["* " + i];
                                        if (!n) {
                                                for (r in a) {
                                                        s = r.split(" ");
                                                        if (s[1] === i) {
                                                                n = a[u + " " + s[0]] || a["* " + s[0]];
                                                                if (n) {
                                                                        n === !0 ? n = a[r] : a[r] !== !0 && (i = s[0], o.splice(f--, 0, i));
                                                                        break
                                                                }
                                                        }
                                                }
                                        }
                                        if (n !== !0) {
                                                if (n && e["throws"]) {
                                                        t = n(t)
                                                } else {
                                                        try {
                                                                t = n(t)
                                                        } catch(l) {
                                                                return {
                                                                        state: "parsererror",
                                                                        error: n ? l: "No conversion from " + u + " to " + i
                                                                }
                                                        }
                                                }
                                        }
                                }
                                u = i
                        }
                }
                return {
                        state: "success",
                        data: t
                }
        }

        function Fn() {
                try {
                        return new e.XMLHttpRequest
                } catch(t) {}
        }

        function In() {
                try {
                        return new e.ActiveXObject("Microsoft.XMLHTTP")
                } catch(t) {}
        }

        function $n() {
                return setTimeout(function() {
                        qn = t
                },
                0),
                qn = v.now()
        }

        function Jn(e, t) {
                v.each(t,
                function(t, n) {
                        var r = (Vn[t] || []).concat(Vn["*"]),
                        i = 0,
                        s = r.length;
                        for (; i < s; i++) {
                                if (r[i].call(e, t, n)) {
                                        return
                                }
                        }
                })
        }

        function Kn(e, t, n) {
                var r, i = 0,
                s = 0,
                o = Xn.length,
                u = v.Deferred().always(function() {
                        delete a.elem
                }),
                a = function() {
                        var t = qn || $n(),
                        n = Math.max(0, f.startTime + f.duration - t),
                        r = n / f.duration || 0,
                        i = 1 - r,
                        s = 0,
                        o = f.tweens.length;
                        for (; s < o; s++) {
                                f.tweens[s].run(i)
                        }
                        return u.notifyWith(e, [f, i, n]),
                        i < 1 && o ? n: (u.resolveWith(e, [f]), !1)
                },
                f = u.promise({
                        elem: e,
                        props: v.extend({},
                        t),
                        opts: v.extend(!0, {
                                specialEasing: {}
                        },
                        n),
                        originalProperties: t,
                        originalOptions: n,
                        startTime: qn || $n(),
                        duration: n.duration,
                        tweens: [],
                        createTween: function(t, n, r) {
                                var i = v.Tween(e, f.opts, t, n, f.opts.specialEasing[t] || f.opts.easing);
                                return f.tweens.push(i),
                                i
                        },
                        stop: function(t) {
                                var n = 0,
                                r = t ? f.tweens.length: 0;
                                for (; n < r; n++) {
                                        f.tweens[n].run(1)
                                }
                                return t ? u.resolveWith(e, [f, t]) : u.rejectWith(e, [f, t]),
                                this
                        }
                }),
                l = f.props;
                Qn(l, f.opts.specialEasing);
                for (; i < o; i++) {
                        r = Xn[i].call(f, e, l, f.opts);
                        if (r) {
                                return r
                        }
                }
                return Jn(f, l),
                v.isFunction(f.opts.start) && f.opts.start.call(e, f),
                v.fx.timer(v.extend(a, {
                        anim: f,
                        queue: f.opts.queue,
                        elem: e
                })),
                f.progress(f.opts.progress).done(f.opts.done, f.opts.complete).fail(f.opts.fail).always(f.opts.always)
        }

        function Gn(e, t, n) {
                var r, i, s, o, u, a, f, l, c, h = this,
                p = e.style,
                d = {},
                m = [],
                g = e.nodeType && Gt(e);
                n.queue || (l = v._queueHooks(e, "fx"), l.unqueued == null && (l.unqueued = 0, c = l.empty.fire, l.empty.fire = function() {
                        l.unqueued || c()
                }), l.unqueued++, h.always(function() {
                        h.always(function() {
                                l.unqueued--,
                                v.queue(e, "fx").length || l.empty.fire()
                        })
                })),
                e.nodeType === 1 && ("height" in t || "width" in t) && (n.overflow = [p.overflow, p.overflowX, p.overflowY], v.css(e, "display") === "inline" && v.css(e, "float") === "none" && (!v.support.inlineBlockNeedsLayout || nn(e.nodeName) === "inline" ? p.display = "inline-block": p.zoom = 1)),
                n.overflow && (p.overflow = "hidden", v.support.shrinkWrapBlocks || h.done(function() {
                        p.overflow = n.overflow[0],
                        p.overflowX = n.overflow[1],
                        p.overflowY = n.overflow[2]
                }));
                for (r in t) {
                        s = t[r];
                        if (Un.exec(s)) {
                                delete t[r],
                                a = a || s === "toggle";
                                if (s === (g ? "hide": "show")) {
                                        continue
                                }
                                m.push(r)
                        }
                }
                o = m.length;
                if (o) {
                        u = v._data(e, "fxshow") || v._data(e, "fxshow", {}),
                        "hidden" in u && (g = u.hidden),
                        a && (u.hidden = !g),
                        g ? v(e).show() : h.done(function() {
                                v(e).hide()
                        }),
                        h.done(function() {
                                var t;
                                v.removeData(e, "fxshow", !0);
                                for (t in d) {
                                        v.style(e, t, d[t])
                                }
                        });
                        for (r = 0; r < o; r++) {
                                i = m[r],
                                f = h.createTween(i, g ? u[i] : 0),
                                d[i] = u[i] || v.style(e, i),
                                i in u || (u[i] = f.start, g && (f.end = f.start, f.start = i === "width" || i === "height" ? 1 : 0))
                        }
                }
        }

        function Yn(e, t, n, r, i) {
                return new Yn.prototype.init(e, t, n, r, i)
        }

        function Zn(e, t) {
                var n, r = {
                        height: e
                },
                i = 0;
                t = t ? 1 : 0;
                for (; i < 4; i += 2 - t) {
                        n = $t[i],
                        r["margin" + n] = r["padding" + n] = e
                }
                return t && (r.opacity = r.width = e),
                r
        }

        function tr(e) {
                return v.isWindow(e) ? e: e.nodeType === 9 ? e.defaultView || e.parentWindow: !1
        }
        var n, r, i = e.document,
        s = e.location,
        o = e.navigator,
        u = e.jQuery,
        a = e.$,
        f = Array.prototype.push,
        l = Array.prototype.slice,
        c = Array.prototype.indexOf,
        h = Object.prototype.toString,
        p = Object.prototype.hasOwnProperty,
        d = String.prototype.trim,
        v = function(e, t) {
                return new v.fn.init(e, t, n)
        },
        m = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,
        g = /\S/,
        y = /\s+/,
        b = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
        w = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
        E = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
        S = /^[\],:{}\s]*$/,
        x = /(?:^|:|,)(?:\s*\[)+/g,
        T = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
        N = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,
        C = /^-ms-/,
        k = /-([\da-z])/gi,
        L = function(e, t) {
                return (t + "").toUpperCase()
        },
        A = function() {
               
        },
        O = {};
        v.fn = v.prototype = {
                constructor: v,
                init: function(e, n, r) {
                        var s, o, u, a;
                        if (!e) {
                                return this
                        }
                        if (e.nodeType) {
                                return this.context = this[0] = e,
                                this.length = 1,
                                this
                        }
                        if (typeof e == "string") {
                                e.charAt(0) === "<" && e.charAt(e.length - 1) === ">" && e.length >= 3 ? s = [null, e, null] : s = w.exec(e);
                                if (s && (s[1] || !n)) {
                                        if (s[1]) {
                                                return n = n instanceof v ? n[0] : n,
                                                a = n && n.nodeType ? n.ownerDocument || n: i,
                                                e = v.parseHTML(s[1], a, !0),
                                                E.test(s[1]) && v.isPlainObject(n) && this.attr.call(e, n, !0),
                                                v.merge(this, e)
                                        }
                                        o = i.getElementById(s[2]);
                                        if (o && o.parentNode) {
                                                if (o.id !== s[2]) {
                                                        return r.find(e)
                                                }
                                                this.length = 1,
                                                this[0] = o
                                        }
                                        return this.context = i,
                                        this.selector = e,
                                        this
                                }
                                return ! n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e)
                        }
                        return v.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, this.context = e.context), v.makeArray(e, this))
                },
                selector: "",
                jquery: "1.8.3",
                length: 0,
                size: function() {
                        return this.length
                },
                toArray: function() {
                        return l.call(this)
                },
                get: function(e) {
                        return e == null ? this.toArray() : e < 0 ? this[this.length + e] : this[e]
                },
                pushStack: function(e, t, n) {
                        var r = v.merge(this.constructor(), e);
                        return r.prevObject = this,
                        r.context = this.context,
                        t === "find" ? r.selector = this.selector + (this.selector ? " ": "") + n: t && (r.selector = this.selector + "." + t + "(" + n + ")"),
                        r
                },
                each: function(e, t) {
                        return v.each(this, e, t)
                },
                ready: function(e) {
                        return v.ready.promise().done(e),
                        this
                },
                eq: function(e) {
                        return e = +e,
                        e === -1 ? this.slice(e) : this.slice(e, e + 1)
                },
                first: function() {
                        return this.eq(0)
                },
                last: function() {
                        return this.eq( - 1)
                },
                slice: function() {
                        return this.pushStack(l.apply(this, arguments), "slice", l.call(arguments).join(","))
                },
                map: function(e) {
                        return this.pushStack(v.map(this,
                        function(t, n) {
                                return e.call(t, n, t)
                        }))
                },
                end: function() {
                        return this.prevObject || this.constructor(null)
                },
                push: f,
                sort: [].sort,
                splice: [].splice
        },
        v.fn.init.prototype = v.fn,
        v.extend = v.fn.extend = function() {
                var e, n, r, i, s, o, u = arguments[0] || {},
                a = 1,
                f = arguments.length,
                l = !1;
                typeof u == "boolean" && (l = u, u = arguments[1] || {},
                a = 2),
                typeof u != "object" && !v.isFunction(u) && (u = {}),
                f === a && (u = this, --a);
                for (; a < f; a++) {
                        if ((e = arguments[a]) != null) {
                                for (n in e) {
                                        r = u[n],
                                        i = e[n];
                                        if (u === i) {
                                                continue
                                        }
                                        l && i && (v.isPlainObject(i) || (s = v.isArray(i))) ? (s ? (s = !1, o = r && v.isArray(r) ? r: []) : o = r && v.isPlainObject(r) ? r: {},
                                        u[n] = v.extend(l, o, i)) : i !== t && (u[n] = i)
                                }
                        }
                }
                return u
        },
        v.extend({
                noConflict: function(t) {
                        return e.$ === v && (e.$ = a),
                        t && e.jQuery === v && (e.jQuery = u),
                        v
                },
                isReady: !1,
                readyWait: 1,
                holdReady: function(e) {
                        e ? v.readyWait++:v.ready(!0)
                },
                ready: function(e) {
                        if (e === !0 ? --v.readyWait: v.isReady) {
                                return
                        }
                        if (!i.body) {
                                return setTimeout(v.ready, 1)
                        }
                        v.isReady = !0;
                        if (e !== !0 && --v.readyWait > 0) {
                                return
                        }
                        r.resolveWith(i, [v]),
                        v.fn.trigger && v(i).trigger("ready")
                },
                isFunction: function(e) {
                        return v.type(e) === "function"
                },
                isArray: Array.isArray ||
                function(e) {
                        return v.type(e) === "array"
                },
                isWindow: function(e) {
                        return e != null && e == e.window
                },
                isNumeric: function(e) {
                        return ! isNaN(parseFloat(e)) && isFinite(e)
                },
                type: function(e) {
                        return e == null ? String(e) : O[h.call(e)] || "object"
                },
                isPlainObject: function(e) {
                        if (!e || v.type(e) !== "object" || e.nodeType || v.isWindow(e)) {
                                return ! 1
                        }
                        try {
                                if (e.constructor && !p.call(e, "constructor") && !p.call(e.constructor.prototype, "isPrototypeOf")) {
                                        return ! 1
                                }
                        } catch(n) {
                                return ! 1
                        }
                        var r;
                        for (r in e) {}
                        return r === t || p.call(e, r)
                },
                isEmptyObject: function(e) {
                        var t;
                        for (t in e) {
                                return ! 1
                        }
                        return ! 0
                },
                error: function(e) {
                        throw new Error(e)
                },
                parseHTML: function(e, t, n) {
                        var r;
                        return ! e || typeof e != "string" ? null: (typeof t == "boolean" && (n = t, t = 0), t = t || i, (r = E.exec(e)) ? [t.createElement(r[1])] : (r = v.buildFragment([e], t, n ? null: []), v.merge([], (r.cacheable ? v.clone(r.fragment) : r.fragment).childNodes)))
                },
                parseJSON: function(t) {
                        if (!t || typeof t != "string") {
                                return null
                        }
                        t = v.trim(t);
                        if (e.JSON && e.JSON.parse) {
                                return e.JSON.parse(t)
                        }
                        if (S.test(t.replace(T, "@").replace(N, "]").replace(x, ""))) {
                                return (new Function("return " + t))()
                        }
                        v.error("Invalid JSON: " + t)
                },
                parseXML: function(n) {
                        var r, i;
                        if (!n || typeof n != "string") {
                                return null
                        }
                        try {
                                e.DOMParser ? (i = new DOMParser, r = i.parseFromString(n, "text/xml")) : (r = new ActiveXObject("Microsoft.XMLDOM"), r.async = "false", r.loadXML(n))
                        } catch(s) {
                                r = t
                        }
                        return (!r || !r.documentElement || r.getElementsByTagName("parsererror").length) && v.error("Invalid XML: " + n),
                        r
                },
                noop: function() {},
                globalEval: function(t) {
                        t && g.test(t) && (e.execScript ||
                        function(t) {
                                e.eval.call(e, t)
                        })(t)
                },
                camelCase: function(e) {
                        return e.replace(C, "ms-").replace(k, L)
                },
                nodeName: function(e, t) {
                        return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
                },
                each: function(e, n, r) {
                        var i, s = 0,
                        o = e.length,
                        u = o === t || v.isFunction(e);
                        if (r) {
                                if (u) {
                                        for (i in e) {
                                                if (n.apply(e[i], r) === !1) {
                                                        break
                                                }
                                        }
                                } else {
                                        for (; s < o;) {
                                                if (n.apply(e[s++], r) === !1) {
                                                        break
                                                }
                                        }
                                }
                        } else {
                                if (u) {
                                        for (i in e) {
                                                if (n.call(e[i], i, e[i]) === !1) {
                                                        break
                                                }
                                        }
                                } else {
                                        for (; s < o;) {
                                                if (n.call(e[s], s, e[s++]) === !1) {
                                                        break
                                                }
                                        }
                                }
                        }
                        return e
                },
                trim: d && !d.call("\ufeff\u00a0") ?
                function(e) {
                        return e == null ? "": d.call(e)
                }: function(e) {
                        return e == null ? "": (e + "").replace(b, "")
                },
                makeArray: function(e, t) {
                        var n, r = t || [];
                        return e != null && (n = v.type(e), e.length == null || n === "string" || n === "function" || n === "regexp" || v.isWindow(e) ? f.call(r, e) : v.merge(r, e)),
                        r
                },
                inArray: function(e, t, n) {
                        var r;
                        if (t) {
                                if (c) {
                                        return c.call(t, e, n)
                                }
                                r = t.length,
                                n = n ? n < 0 ? Math.max(0, r + n) : n: 0;
                                for (; n < r; n++) {
                                        if (n in t && t[n] === e) {
                                                return n
                                        }
                                }
                        }
                        return - 1
                },
                merge: function(e, n) {
                        var r = n.length,
                        i = e.length,
                        s = 0;
                        if (typeof r == "number") {
                                for (; s < r; s++) {
                                        e[i++] = n[s]
                                }
                        } else {
                                while (n[s] !== t) {
                                        e[i++] = n[s++]
                                }
                        }
                        return e.length = i,
                        e
                },
                grep: function(e, t, n) {
                        var r, i = [],
                        s = 0,
                        o = e.length;
                        n = !!n;
                        for (; s < o; s++) {
                                r = !!t(e[s], s),
                                n !== r && i.push(e[s])
                        }
                        return i
                },
                map: function(e, n, r) {
                        var i, s, o = [],
                        u = 0,
                        a = e.length,
                        f = e instanceof v || a !== t && typeof a == "number" && (a > 0 && e[0] && e[a - 1] || a === 0 || v.isArray(e));
                        if (f) {
                                for (; u < a; u++) {
                                        i = n(e[u], u, r),
                                        i != null && (o[o.length] = i)
                                }
                        } else {
                                for (s in e) {
                                        i = n(e[s], s, r),
                                        i != null && (o[o.length] = i)
                                }
                        }
                        return o.concat.apply([], o)
                },
                guid: 1,
                proxy: function(e, n) {
                        var r, i, s;
                        return typeof n == "string" && (r = e[n], n = e, e = r),
                        v.isFunction(e) ? (i = l.call(arguments, 2), s = function() {
                                return e.apply(n, i.concat(l.call(arguments)))
                        },
                        s.guid = e.guid = e.guid || v.guid++, s) : t
                },
                access: function(e, n, r, i, s, o, u) {
                        var a, f = r == null,
                        l = 0,
                        c = e.length;
                        if (r && typeof r == "object") {
                                for (l in r) {
                                        v.access(e, n, l, r[l], 1, o, i)
                                }
                                s = 1
                        } else {
                                if (i !== t) {
                                        a = u === t && v.isFunction(i),
                                        f && (a ? (a = n, n = function(e, t, n) {
                                                return a.call(v(e), n)
                                        }) : (n.call(e, i), n = null));
                                        if (n) {
                                                for (; l < c; l++) {
                                                        n(e[l], r, a ? i.call(e[l], l, n(e[l], r)) : i, u)
                                                }
                                        }
                                        s = 1
                                }
                        }
                        return s ? e: f ? n.call(e) : c ? n(e[0], r) : o
                },
                now: function() {
                        return (new Date).getTime()
                }
        }),
        v.ready.promise = function(t) {
                if (!r) {
                        r = v.Deferred();
                        if (i.readyState === "complete") {
                                setTimeout(v.ready, 1)
                        } else {
                                if (i.addEventListener) {
                                        i.addEventListener("DOMContentLoaded", A, !1),
                                        e.addEventListener("load", v.ready, !1)
                                } else {
                                        i.attachEvent("onreadystatechange", A),
                                        e.attachEvent("onload", v.ready);
                                        var n = !1;
                                        try {
                                                n = e.frameElement == null && i.documentElement
                                        } catch(s) {}
                                        n && n.doScroll &&
                                        function o() {
                                                if (!v.isReady) {
                                                        try {
                                                                n.doScroll("left")
                                                        } catch(e) {
                                                                return setTimeout(o, 50)
                                                        }
                                                        v.ready()
                                                }
                                        } ()
                                }
                        }
                }
                return r.promise(t)
        },
        v.each("Boolean Number String Function Array Date RegExp Object".split(" "),
        function(e, t) {
                O["[object " + t + "]"] = t.toLowerCase()
        }),
        n = v(i);
        var M = {};
        v.Callbacks = function(e) {
                e = typeof e == "string" ? M[e] || _(e) : v.extend({},
                e);
                var n, r, i, s, o, u, a = [],
                f = !e.once && [],
                l = function(t) {
                        n = e.memory && t,
                        r = !0,
                        u = s || 0,
                        s = 0,
                        o = a.length,
                        i = !0;
                        for (; a && u < o; u++) {
                                if (a[u].apply(t[0], t[1]) === !1 && e.stopOnFalse) {
                                        n = !1;
                                        break
                                }
                        }
                        i = !1,
                        a && (f ? f.length && l(f.shift()) : n ? a = [] : c.disable())
                },
                c = {
                        add: function() {
                                if (a) {
                                        var t = a.length; (function r(t) {
                                                v.each(t,
                                                function(t, n) {
                                                        var i = v.type(n);
                                                        i === "function" ? (!e.unique || !c.has(n)) && a.push(n) : n && n.length && i !== "string" && r(n)
                                                })
                                        })(arguments),
                                        i ? o = a.length: n && (s = t, l(n))
                                }
                                return this
                        },
                        remove: function() {
                                return a && v.each(arguments,
                                function(e, t) {
                                        var n;
                                        while ((n = v.inArray(t, a, n)) > -1) {
                                                a.splice(n, 1),
                                                i && (n <= o && o--, n <= u && u--)
                                        }
                                }),
                                this
                        },
                        has: function(e) {
                                return v.inArray(e, a) > -1
                        },
                        empty: function() {
                                return a = [],
                                this
                        },
                        disable: function() {
                                return a = f = n = t,
                                this
                        },
                        disabled: function() {
                                return ! a
                        },
                        lock: function() {
                                return f = t,
                                n || c.disable(),
                                this
                        },
                        locked: function() {
                                return ! f
                        },
                        fireWith: function(e, t) {
                                return t = t || [],
                                t = [e, t.slice ? t.slice() : t],
                                a && (!r || f) && (i ? f.push(t) : l(t)),
                                this
                        },
                        fire: function() {
                                return c.fireWith(this, arguments),
                                this
                        },
                        fired: function() {
                                return !! r
                        }
                };
                return c
        },
        v.extend({
                Deferred: function(e) {
                        var t = [["resolve", "done", v.Callbacks("once memory"), "resolved"], ["reject", "fail", v.Callbacks("once memory"), "rejected"], ["notify", "progress", v.Callbacks("memory")]],
                        n = "pending",
                        r = {
                                state: function() {
                                        return n
                                },
                                always: function() {
                                        return i.done(arguments).fail(arguments),
                                        this
                                },
                                then: function() {
                                        var e = arguments;
                                        return v.Deferred(function(n) {
                                                v.each(t,
                                                function(t, r) {
                                                        var s = r[0],
                                                        o = e[t];
                                                        i[r[1]](v.isFunction(o) ?
                                                        function() {
                                                                var e = o.apply(this, arguments);
                                                                e && v.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[s + "With"](this === i ? n: this, [e])
                                                        }: n[s])
                                                }),
                                                e = null
                                        }).promise()
                                },
                                promise: function(e) {
                                        return e != null ? v.extend(e, r) : r
                                }
                        },
                        i = {};
                        return r.pipe = r.then,
                        v.each(t,
                        function(e, s) {
                                var o = s[2],
                                u = s[3];
                                r[s[1]] = o.add,
                                u && o.add(function() {
                                        n = u
                                },
                                t[e ^ 1][2].disable, t[2][2].lock),
                                i[s[0]] = o.fire,
                                i[s[0] + "With"] = o.fireWith
                        }),
                        r.promise(i),
                        e && e.call(i, i),
                        i
                },
                when: function(e) {
                        var t = 0,
                        n = l.call(arguments),
                        r = n.length,
                        i = r !== 1 || e && v.isFunction(e.promise) ? r: 0,
                        s = i === 1 ? e: v.Deferred(),
                        o = function(e, t, n) {
                                return function(r) {
                                        t[e] = this,
                                        n[e] = arguments.length > 1 ? l.call(arguments) : r,
                                        n === u ? s.notifyWith(t, n) : --i || s.resolveWith(t, n)
                                }
                        },
                        u,
                        a,
                        f;
                        if (r > 1) {
                                u = new Array(r),
                                a = new Array(r),
                                f = new Array(r);
                                for (; t < r; t++) {
                                        n[t] && v.isFunction(n[t].promise) ? n[t].promise().done(o(t, f, n)).fail(s.reject).progress(o(t, a, u)) : --i
                                }
                        }
                        return i || s.resolveWith(f, n),
                        s.promise()
                }
        }),
        v.support = function() {
                var t, n, r, s, o, u, a, f, l, c, h, p = i.createElement("div");
                p.setAttribute("className", "t"),
                p.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",
                n = p.getElementsByTagName("*"),
                r = p.getElementsByTagName("a")[0];
                if (!n || !r || !n.length) {
                        return {}
                }
                s = i.createElement("select"),
                o = s.appendChild(i.createElement("option")),
                u = p.getElementsByTagName("input")[0],
                r.style.cssText = "top:1px;float:left;opacity:.5",
                t = {
                        leadingWhitespace: p.firstChild.nodeType === 3,
                        tbody: !p.getElementsByTagName("tbody").length,
                        htmlSerialize: !!p.getElementsByTagName("link").length,
                        style: /top/.test(r.getAttribute("style")),
                        hrefNormalized: r.getAttribute("href") === "/a",
                        opacity: /^0.5/.test(r.style.opacity),
                        cssFloat: !!r.style.cssFloat,
                        checkOn: u.value === "on",
                        optSelected: o.selected,
                        getSetAttribute: p.className !== "t",
                        enctype: !!i.createElement("form").enctype,
                        html5Clone: i.createElement("nav").cloneNode(!0).outerHTML !== "<:nav></:nav>",
                        boxModel: i.compatMode === "CSS1Compat",
                        submitBubbles: !0,
                        changeBubbles: !0,
                        focusinBubbles: !1,
                        deleteExpando: !0,
                        noCloneEvent: !0,
                        inlineBlockNeedsLayout: !1,
                        shrinkWrapBlocks: !1,
                        reliableMarginRight: !0,
                        boxSizingReliable: !0,
                        pixelPosition: !1
                },
                u.checked = !0,
                t.noCloneChecked = u.cloneNode(!0).checked,
                s.disabled = !0,
                t.optDisabled = !o.disabled;
                try {
                        delete p.test
                } catch(d) {
                        t.deleteExpando = !1
                } ! p.addEventListener && p.attachEvent && p.fireEvent && (p.attachEvent("onclick", h = function() {
                        t.noCloneEvent = !1
                }), p.cloneNode(!0).fireEvent("onclick"), p.detachEvent("onclick", h)),
                u = i.createElement("input"),
                u.value = "t",
                u.setAttribute("type", "radio"),
                t.radioValue = u.value === "t",
                u.setAttribute("checked", "checked"),
                u.setAttribute("name", "t"),
                p.appendChild(u),
                a = i.createDocumentFragment(),
                a.appendChild(p.lastChild),
                t.checkClone = a.cloneNode(!0).cloneNode(!0).lastChild.checked,
                t.appendChecked = u.checked,
                a.removeChild(u),
                a.appendChild(p);
                if (p.attachEvent) {
                        for (l in {
                                submit: !0,
                                change: !0,
                                focusin: !0
                        }) {
                                f = "on" + l,
                                c = f in p,
                                c || (p.setAttribute(f, "return;"), c = typeof p[f] == "function"),
                                t[l + "Bubbles"] = c
                        }
                }
                return v(function() {
                        var n, r, s, o, u = "padding:0;margin:0;border:0;display:block;overflow:hidden;",
                        a = i.getElementsByTagName("body")[0];
                        if (!a) {
                                return
                        }
                        n = i.createElement("div"),
                        n.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",
                        a.insertBefore(n, a.firstChild),
                        r = i.createElement("div"),
                        n.appendChild(r),
                        r.innerHTML = "<table><tr><td></td><td>t</td></tr></table>",
                        s = r.getElementsByTagName("td"),
                        s[0].style.cssText = "padding:0;margin:0;border:0;display:none",
                        c = s[0].offsetHeight === 0,
                        s[0].style.display = "",
                        s[1].style.display = "none",
                        t.reliableHiddenOffsets = c && s[0].offsetHeight === 0,
                        r.innerHTML = "",
                        r.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",
                        t.boxSizing = r.offsetWidth === 4,
                        t.doesNotIncludeMarginInBodyOffset = a.offsetTop !== 1,
                        e.getComputedStyle && (t.pixelPosition = (e.getComputedStyle(r, null) || {}).top !== "1%", t.boxSizingReliable = (e.getComputedStyle(r, null) || {
                                width: "4px"
                        }).width === "4px", o = i.createElement("div"), o.style.cssText = r.style.cssText = u, o.style.marginRight = o.style.width = "0", r.style.width = "1px", r.appendChild(o), t.reliableMarginRight = !parseFloat((e.getComputedStyle(o, null) || {}).marginRight)),
                        typeof r.style.zoom != "undefined" && (r.innerHTML = "", r.style.cssText = u + "width:1px;padding:1px;display:inline;zoom:1", t.inlineBlockNeedsLayout = r.offsetWidth === 3, r.style.display = "block", r.style.overflow = "visible", r.innerHTML = "<div></div>", r.firstChild.style.width = "5px", t.shrinkWrapBlocks = r.offsetWidth !== 3, n.style.zoom = 1),
                        a.removeChild(n),
                        n = r = s = o = null
                }),
                a.removeChild(p),
                n = r = s = o = u = a = p = null,
                t
        } ();
        var D = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
        P = /([A-Z])/g;
        v.extend({
                cache: {},
                deletedIds: [],
                uuid: 0,
                expando: "jQuery" + (v.fn.jquery + Math.random()).replace(/\D/g, ""),
                noData: {
                        embed: !0,
                        object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
                        applet: !0
                },
    


                acceptData: function(e) {
                        var t = e.nodeName && v.noData[e.nodeName.toLowerCase()];
                        return ! t || t !== !0 && e.getAttribute("classid") === t
                }
        }),
        v.fn.extend({
                data: function(e, n) {
                        var r, i, s, o, u, a = this[0],
                        f = 0,
                        l = null;
                        if (e === t) {
                                if (this.length) {
                                        l = v.data(a);
                                        if (a.nodeType === 1 && !v._data(a, "parsedAttrs")) {
                                                s = a.attributes;
                                                for (u = s.length; f < u; f++) {
                                                        o = s[f].name,
                                                        o.indexOf("data-") || (o = v.camelCase(o.substring(5)), H(a, o, l[o]))
                                                }
                                                v._data(a, "parsedAttrs", !0)
                                        }
                                }
                                return l
                        }
                        return typeof e == "object" ? this.each(function() {
                                v.data(this, e)
                        }) : (r = e.split(".", 2), r[1] = r[1] ? "." + r[1] : "", i = r[1] + "!", v.access(this,
                        function(n) {
                                if (n === t) {
                                        return l = this.triggerHandler("getData" + i, [r[0]]),
                                        l === t && a && (l = v.data(a, e), l = H(a, e, l)),
                                        l === t && r[1] ? this.data(r[0]) : l
                                }
                                r[1] = n,
                                this.each(function() {
                                        var t = v(this);
                                        t.triggerHandler("setData" + i, r),
                                        v.data(this, e, n),
                                        t.triggerHandler("changeData" + i, r)
                                })
                        },
                        null, n, arguments.length > 1, null, !1))
                },
                removeData: function(e) {
                        return this.each(function() {
                                v.removeData(this, e)
                        })
                }
        }),
        v.extend({
                queue: function(e, t, n) {
                        var r;
                        if (e) {
                                return t = (t || "fx") + "queue",
                                r = v._data(e, t),
                                n && (!r || v.isArray(n) ? r = v._data(e, t, v.makeArray(n)) : r.push(n)),
                                r || []
                        }
                },
                dequeue: function(e, t) {
                        t = t || "fx";
                        var n = v.queue(e, t),
                        r = n.length,
                        i = n.shift(),
                        s = v._queueHooks(e, t),
                        o = function() {
                                v.dequeue(e, t)
                        };
                        i === "inprogress" && (i = n.shift(), r--),
                        i && (t === "fx" && n.unshift("inprogress"), delete s.stop, i.call(e, o, s)),
                        !r && s && s.empty.fire()
                },
                promise: function(e, n) {
                        var r, i = 1,
                        s = v.Deferred(),
                        o = this,
                        u = this.length,
                        a = function() {--i || s.resolveWith(o, [o])
                        };
                        typeof e != "string" && (n = e, e = t),
                        e = e || "fx";
                        while (u--) {
                                r = v._data(o[u], e + "queueHooks"),
                                r && r.empty && (i++, r.empty.add(a))
                        }
                        return a(),
                        s.promise(n)
                }
        });
        var j, F, I, q = /[\t\r\n]/g,
        R = /\r/g,
        U = /^(?:button|input)$/i,
        z = /^(?:button|input|object|select|textarea)$/i,
        W = /^a(?:rea|)$/i,
        X = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
        V = v.support.getSetAttribute;
        v.fn.extend({
                attr: function(e, t) {
                        return v.access(this, v.attr, e, t, arguments.length > 1)
                },
                removeAttr: function(e) {
                        return this.each(function() {
                                v.removeAttr(this, e)
                        })
                },
                hasClass: function(e) {
                        var t = " " + e + " ",
                        n = 0,
                        r = this.length;
                        for (; n < r; n++) {
                                if (this[n].nodeType === 1 && (" " + this[n].className + " ").replace(q, " ").indexOf(t) >= 0) {
                                        return ! 0
                                }
                        }
                        return ! 1
                },
                val: function(e) {
                        var n, r, i, s = this[0];
                        if (!arguments.length) {
                                if (s) {
                                        return n = v.valHooks[s.type] || v.valHooks[s.nodeName.toLowerCase()],
                                        n && "get" in n && (r = n.get(s, "value")) !== t ? r: (r = s.value, typeof r == "string" ? r.replace(R, "") : r == null ? "": r)
                                }
                                return
                        }
                        return i = v.isFunction(e),
                        this.each(function(r) {
                                var s, o = v(this);
                                if (this.nodeType !== 1) {
                                        return
                                }
                                i ? s = e.call(this, r, o.val()) : s = e,
                                s == null ? s = "": typeof s == "number" ? s += "": v.isArray(s) && (s = v.map(s,
                                function(e) {
                                        return e == null ? "": e + ""
                                })),
                                n = v.valHooks[this.type] || v.valHooks[this.nodeName.toLowerCase()];
                                if (!n || !("set" in n) || n.set(this, s, "value") === t) {
                                        this.value = s
                                }
                        })
                }
        }),
        v.extend({
                valHooks: {
                        option: {
                                get: function(e) {
                                        var t = e.attributes.value;
                                        return ! t || t.specified ? e.value: e.text
                                }
                        },
                        select: {
                                get: function(e) {
                                        var t, n, r = e.options,
                                        i = e.selectedIndex,
                                        s = e.type === "select-one" || i < 0,
                                        o = s ? null: [],
                                        u = s ? i + 1 : r.length,
                                        a = i < 0 ? u: s ? i: 0;
                                        for (; a < u; a++) {
                                                n = r[a];
                                                if ((n.selected || a === i) && (v.support.optDisabled ? !n.disabled: n.getAttribute("disabled") === null) && (!n.parentNode.disabled || !v.nodeName(n.parentNode, "optgroup"))) {
                                                        t = v(n).val();
                                                        if (s) {
                                                                return t
                                                        }
                                                        o.push(t)
                                                }
                                        }
                                        return o
                                },
                                set: function(e, t) {
                                        var n = v.makeArray(t);
                                        return v(e).find("option").each(function() {
                                                this.selected = v.inArray(v(this).val(), n) >= 0
                                        }),
                                        n.length || (e.selectedIndex = -1),
                                        n
                                }
                        }
                },
                propHooks: {
                        tabIndex: {
                                get: function(e) {
                                        var n = e.getAttributeNode("tabindex");
                                        return n && n.specified ? parseInt(n.value, 10) : z.test(e.nodeName) || W.test(e.nodeName) && e.href ? 0 : t
                                }
                        }
                }
        }),
        F = {
                get: function(e, n) {
                        var r, i = v.prop(e, n);
                        return i === !0 || typeof i != "boolean" && (r = e.getAttributeNode(n)) && r.nodeValue !== !1 ? n.toLowerCase() : t
                },
                set: function(e, t, n) {
                        var r;
                        return t === !1 ? v.removeAttr(e, n) : (r = v.propFix[n] || n, r in e && (e[r] = !0), e.setAttribute(n, n.toLowerCase())),
                        n
                }
        },
        V || (I = {
                name: !0,
                id: !0,
                coords: !0
        },
        j = v.valHooks.button = {
                get: function(e, n) {
                        var r;
                        return r = e.getAttributeNode(n),
                        r && (I[n] ? r.value !== "": r.specified) ? r.value: t
                },
                set: function(e, t, n) {
                        var r = e.getAttributeNode(n);
                        return r || (r = i.createAttribute(n), e.setAttributeNode(r)),
                        r.value = t + ""
                }
        },
        v.each(["width", "height"],
        function(e, t) {
                v.attrHooks[t] = v.extend(v.attrHooks[t], {
                        set: function(e, n) {
                                if (n === "") {
                                        return e.setAttribute(t, "auto"),
                                        n
                                }
                        }
                })
        }), v.attrHooks.contenteditable = {
                get: j.get,
                set: function(e, t, n) {
                        t === "" && (t = "false"),
                        j.set(e, t, n)
                }
        }),
        v.support.hrefNormalized || v.each(["href", "src", "width", "height"],
        function(e, n) {
                v.attrHooks[n] = v.extend(v.attrHooks[n], {
                        get: function(e) {
                                var r = e.getAttribute(n, 2);
                                return r === null ? t: r
                        }
                })
        }),
        v.support.style || (v.attrHooks.style = {
                get: function(e) {
                        return e.style.cssText.toLowerCase() || t
                },
                set: function(e, t) {
                        return e.style.cssText = t + ""
                }
        }),
        v.support.optSelected || (v.propHooks.selected = v.extend(v.propHooks.selected, {
                get: function(e) {
                        var t = e.parentNode;
                        return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex),
                        null
                }
        })),
        v.support.enctype || (v.propFix.enctype = "encoding"),
        v.support.checkOn || v.each(["radio", "checkbox"],
        function() {
                v.valHooks[this] = {
                        get: function(e) {
                                return e.getAttribute("value") === null ? "on": e.value
                        }
                }
        }),
        v.each(["radio", "checkbox"],
        function() {
                v.valHooks[this] = v.extend(v.valHooks[this], {
                        set: function(e, t) {
                                if (v.isArray(t)) {
                                        return e.checked = v.inArray(v(e).val(), t) >= 0
                                }
                        }
                })
        });
        var $ = /^(?:textarea|input|select)$/i,
        J = /^([^\.]*|)(?:\.(.+)|)$/,
        K = /(?:^|\s)hover(\.\S+|)\b/,
        Q = /^key/,
        G = /^(?:mouse|contextmenu)|click/,
        Y = /^(?:focusinfocus|focusoutblur)$/,
        Z = function(e) {
                return v.event.special.hover ? e: e.replace(K, "mouseenter$1 mouseleave$1")
        };
        v.event = {
                add: function(e, n, r, i, s) {
                        var o, u, a, f, l, c, h, p, d, m, g;
                        if (e.nodeType === 3 || e.nodeType === 8 || !n || !r || !(o = v._data(e))) {
                                return
                        }
                        r.handler && (d = r, r = d.handler, s = d.selector),
                        r.guid || (r.guid = v.guid++),
                        a = o.events,
                        a || (o.events = a = {}),
                        u = o.handle,
                        u || (o.handle = u = function(e) {
                                return typeof v == "undefined" || !!e && v.event.triggered === e.type ? t: v.event.dispatch.apply(u.elem, arguments)
                        },
                        u.elem = e),
                        n = v.trim(Z(n)).split(" ");
                        for (f = 0; f < n.length; f++) {
                                l = J.exec(n[f]) || [],
                                c = l[1],
                                h = (l[2] || "").split(".").sort(),
                                g = v.event.special[c] || {},
                                c = (s ? g.delegateType: g.bindType) || c,
                                g = v.event.special[c] || {},
                                p = v.extend({
                                        type: c,
                                        origType: l[1],
                                        data: i,
                                        handler: r,
                                        guid: r.guid,
                                        selector: s,
                                        needsContext: s && v.expr.match.needsContext.test(s),
                                        namespace: h.join(".")
                                },
                                d),
                                m = a[c];
                                if (!m) {
                                        m = a[c] = [],
                                        m.delegateCount = 0;
                                        if (!g.setup || g.setup.call(e, i, h, u) === !1) {
                                                e.addEventListener ? e.addEventListener(c, u, !1) : e.attachEvent && e.attachEvent("on" + c, u)
                                        }
                                }
                                g.add && (g.add.call(e, p), p.handler.guid || (p.handler.guid = r.guid)),
                                s ? m.splice(m.delegateCount++, 0, p) : m.push(p),
                                v.event.global[c] = !0
                        }
                        e = null
                },
               
             
                customEvent: {
                        getData: !0,
                        setData: !0,
                        changeData: !0
                },
                trigger: function(n, r, s, o) {
                        if (!s || s.nodeType !== 3 && s.nodeType !== 8) {
                                var u, a, f, l, c, h, p, d, m, g, y = n.type || n,
                                b = [];
                                if (Y.test(y + v.event.triggered)) {
                                        return
                                }
                                y.indexOf("!") >= 0 && (y = y.slice(0, -1), a = !0),
                                y.indexOf(".") >= 0 && (b = y.split("."), y = b.shift(), b.sort());
                                if ((!s || v.event.customEvent[y]) && !v.event.global[y]) {
                                        return
                                }
                                n = typeof n == "object" ? n[v.expando] ? n: new v.Event(y, n) : new v.Event(y),
                                n.type = y,
                                n.isTrigger = !0,
                                n.exclusive = a,
                                n.namespace = b.join("."),
                                n.namespace_re = n.namespace ? new RegExp("(^|\\.)" + b.join("\\.(?:.*\\.|)") + "(\\.|$)") : null,
                                h = y.indexOf(":") < 0 ? "on" + y: "";
                                if (!s) {
                                        u = v.cache;
                                        for (f in u) {
                                                u[f].events && u[f].events[y] && v.event.trigger(n, r, u[f].handle.elem, !0)
                                        }
                                        return
                                }
                                n.result = t,
                                n.target || (n.target = s),
                                r = r != null ? v.makeArray(r) : [],
                                r.unshift(n),
                                p = v.event.special[y] || {};
                                if (p.trigger && p.trigger.apply(s, r) === !1) {
                                        return
                                }
                                m = [[s, p.bindType || y]];
                                if (!o && !p.noBubble && !v.isWindow(s)) {
                                        g = p.delegateType || y,
                                        l = Y.test(g + y) ? s: s.parentNode;
                                        for (c = s; l; l = l.parentNode) {
                                                m.push([l, g]),
                                                c = l
                                        }
                                        c === (s.ownerDocument || i) && m.push([c.defaultView || c.parentWindow || e, g])
                                }
                               
                                !o && !n.isDefaultPrevented() && (!p._default || p._default.apply(s.ownerDocument, r) === !1) && (y !== "click" || !v.nodeName(s, "a")) && v.acceptData(s) && h && s[y] && (y !== "focus" && y !== "blur" || n.target.offsetWidth !== 0) && !v.isWindow(s) && (c = s[h], c && (s[h] = null), v.event.triggered = y, s[y](), v.event.triggered = t, c && (s[h] = c)),
                                n.result
                        }
                        return
                },
                dispatch: function(n) {
                        n = v.event.fix(n || e.event);
                        var r, i, s, o, u, a, f, c, h, p, d = (v._data(this, "events") || {})[n.type] || [],
                        m = d.delegateCount,
                        g = l.call(arguments),
                        y = !n.exclusive && !n.namespace,
                        b = v.event.special[n.type] || {},
                        w = [];
                        g[0] = n,
                        n.delegateTarget = this;
                        if (b.preDispatch && b.preDispatch.call(this, n) === !1) {
                                return
                        }
                        if (m && (!n.button || n.type !== "click")) {
                                for (s = n.target; s != this; s = s.parentNode || this) {
                                        if (s.disabled !== !0 || n.type !== "click") {
                                                u = {},
                                                f = [];
                                                for (r = 0; r < m; r++) {
                                                        c = d[r],
                                                        h = c.selector,
                                                        u[h] === t && (u[h] = c.needsContext ? v(h, this).index(s) >= 0 : v.find(h, this, null, [s]).length),
                                                        u[h] && f.push(c)
                                                }
                                                f.length && w.push({
                                                        elem: s,
                                                        matches: f
                                                })
                                        }
                                }
                        }
                        d.length > m && w.push({
                                elem: this,
                                matches: d.slice(m)
                        });
                        for (r = 0; r < w.length && !n.isPropagationStopped(); r++) {
                                a = w[r],
                                n.currentTarget = a.elem;
                                for (i = 0; i < a.matches.length && !n.isImmediatePropagationStopped(); i++) {
                                        c = a.matches[i];
                                        if (y || !n.namespace && !c.namespace || n.namespace_re && n.namespace_re.test(c.namespace)) {
                                                n.data = c.data,
                                                n.handleObj = c,
                                                o = ((v.event.special[c.origType] || {}).handle || c.handler).apply(a.elem, g),
                                                o !== t && (n.result = o, o === !1 && (n.preventDefault(), n.stopPropagation()))
                                        }
                                }
                        }
                        return b.postDispatch && b.postDispatch.call(this, n),
                        n.result
                },
                props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
                fixHooks: {},
                keyHooks: {
                        props: "char charCode key keyCode".split(" "),
                        filter: function(e, t) {
                                return e.which == null && (e.which = t.charCode != null ? t.charCode: t.keyCode),
                                e
                        }
                },
                mouseHooks: {
                        props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
                        filter: function(e, n) {
                                var r, s, o, u = n.button,
                                a = n.fromElement;
                                return e.pageX == null && n.clientX != null && (r = e.target.ownerDocument || i, s = r.documentElement, o = r.body, e.pageX = n.clientX + (s && s.scrollLeft || o && o.scrollLeft || 0) - (s && s.clientLeft || o && o.clientLeft || 0), e.pageY = n.clientY + (s && s.scrollTop || o && o.scrollTop || 0) - (s && s.clientTop || o && o.clientTop || 0)),
                                !e.relatedTarget && a && (e.relatedTarget = a === e.target ? n.toElement: a),
                                !e.which && u !== t && (e.which = u & 1 ? 1 : u & 2 ? 3 : u & 4 ? 2 : 0),
                                e
                        }
                },
                fix: function(e) {
                        if (e[v.expando]) {
                                return e
                        }
                        var t, n, r = e,
                        s = v.event.fixHooks[e.type] || {},
                        o = s.props ? this.props.concat(s.props) : this.props;
                        e = v.Event(r);
                        for (t = o.length; t;) {
                                n = o[--t],
                                e[n] = r[n]
                        }
                        return e.target || (e.target = r.srcElement || i),
                        e.target.nodeType === 3 && (e.target = e.target.parentNode),
                        e.metaKey = !!e.metaKey,
                        s.filter ? s.filter(e, r) : e
                },
                special: {
                        load: {
                                noBubble: !0
                        },
                        focus: {
                                delegateType: "focusin"
                        },
                        blur: {
                                delegateType: "focusout"
                        },
                        beforeunload: {
                                setup: function(e, t, n) {
                                        v.isWindow(this) && (this.onbeforeunload = n)
                                },
                                teardown: function(e, t) {
                                        this.onbeforeunload === t && (this.onbeforeunload = null)
                                }
                        }
                },
                simulate: function(e, t, n, r) {
                        var i = v.extend(new v.Event, n, {
                                type: e,
                                isSimulated: !0,
                                originalEvent: {}
                        });
                        r ? v.event.trigger(i, null, t) : v.event.dispatch.call(t, i),
                        i.isDefaultPrevented() && n.preventDefault()
                }
        },
        v.event.handle = v.event.dispatch,
        v.removeEvent = i.removeEventListener ?
        function(e, t, n) {
                e.removeEventListener && e.removeEventListener(t, n, !1)
        }: function(e, t, n) {
                var r = "on" + t;
                e.detachEvent && (typeof e[r] == "undefined" && (e[r] = null), e.detachEvent(r, n))
        },
        v.Event = function(e, t) {
                if (! (this instanceof v.Event)) {
                        return new v.Event(e, t)
                }
                e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? tt: et) : this.type = e,
                t && v.extend(this, t),
                this.timeStamp = e && e.timeStamp || v.now(),
                this[v.expando] = !0
        },
        v.Event.prototype = {
                preventDefault: function() {
                        this.isDefaultPrevented = tt;
                        var e = this.originalEvent;
                        if (!e) {
                                return
                        }
                        e.preventDefault ? e.preventDefault() : e.returnValue = !1
                },
                stopPropagation: function() {
                        this.isPropagationStopped = tt;
                        var e = this.originalEvent;
                        if (!e) {
                                return
                        }
                        e.stopPropagation && e.stopPropagation(),
                        e.cancelBubble = !0
                },
                stopImmediatePropagation: function() {
                        this.isImmediatePropagationStopped = tt,
                        this.stopPropagation()
                },
                isDefaultPrevented: et,
                isPropagationStopped: et,
                isImmediatePropagationStopped: et
        },
        v.each({
                mouseenter: "mouseover",
                mouseleave: "mouseout"
        },
        function(e, t) {
                v.event.special[e] = {
                        delegateType: t,
                        bindType: t,
                        handle: function(e) {
                                var n, r = this,
                                i = e.relatedTarget,
                                s = e.handleObj,
                                o = s.selector;
                                if (!i || i !== r && !v.contains(r, i)) {
                                        e.type = s.origType,
                                        n = s.handler.apply(this, arguments),
                                        e.type = t
                                }
                                return n
                        }
                }
        }),
        v.support.submitBubbles || (v.event.special.submit = {
                setup: function() {
                        if (v.nodeName(this, "form")) {
                                return ! 1
                        }
                        v.event.add(this, "click._submit keypress._submit",
                        function(e) {
                                var n = e.target,
                                r = v.nodeName(n, "input") || v.nodeName(n, "button") ? n.form: t;
                                r && !v._data(r, "_submit_attached") && (v.event.add(r, "submit._submit",
                                function(e) {
                                        e._submit_bubble = !0
                                }), v._data(r, "_submit_attached", !0))
                        })
                },
                postDispatch: function(e) {
                        e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && v.event.simulate("submit", this.parentNode, e, !0))
                },
                teardown: function() {
                        if (v.nodeName(this, "form")) {
                                return ! 1
                        }
                        v.event.remove(this, "._submit")
                }
        }),
        v.support.changeBubbles || (v.event.special.change = {
                setup: function() {
                        if ($.test(this.nodeName)) {
                                if (this.type === "checkbox" || this.type === "radio") {
                                        v.event.add(this, "propertychange._change",
                                        function(e) {
                                                e.originalEvent.propertyName === "checked" && (this._just_changed = !0)
                                        }),
                                        v.event.add(this, "click._change",
                                        function(e) {
                                                this._just_changed && !e.isTrigger && (this._just_changed = !1),
                                                v.event.simulate("change", this, e, !0)
                                        })
                                }
                                return ! 1
                        }
                        v.event.add(this, "beforeactivate._change",
                        function(e) {
                                var t = e.target;
                                $.test(t.nodeName) && !v._data(t, "_change_attached") && (v.event.add(t, "change._change",
                                function(e) {
                                        this.parentNode && !e.isSimulated && !e.isTrigger && v.event.simulate("change", this.parentNode, e, !0)
                                }), v._data(t, "_change_attached", !0))
                        })
                },
                handle: function(e) {
                        var t = e.target;
                        if (this !== t || e.isSimulated || e.isTrigger || t.type !== "radio" && t.type !== "checkbox") {
                                return e.handleObj.handler.apply(this, arguments)
                        }
                },
                teardown: function() {
                        return v.event.remove(this, "._change"),
                        !$.test(this.nodeName)
                }
        }),
        v.support.focusinBubbles || v.each({
                focus: "focusin",
                blur: "focusout"
        },
        function(e, t) {
                var n = 0,
                r = function(e) {
                        v.event.simulate(t, e.target, v.event.fix(e), !0)
                };
                v.event.special[t] = {
                        setup: function() {
                                n++===0 && i.addEventListener(e, r, !0)
                        },
                        teardown: function() {--n === 0 && i.removeEventListener(e, r, !0)
                        }
                }
        }),
        v.fn.extend({
                on: function(e, n, r, i, s) {
                        var o, u;
                        if (typeof e == "object") {
                                typeof n != "string" && (r = r || n, n = t);
                                for (u in e) {
                                        this.on(u, n, r, e[u], s)
                                }
                                return this
                        }
                        r == null && i == null ? (i = n, r = n = t) : i == null && (typeof n == "string" ? (i = r, r = t) : (i = r, r = n, n = t));
                        if (i === !1) {
                                i = et
                        } else {
                                if (!i) {
                                        return this
                                }
                        }
                        return s === 1 && (o = i, i = function(e) {
                                return v().off(e),
                                o.apply(this, arguments)
                        },
                        i.guid = o.guid || (o.guid = v.guid++)),
                        this.each(function() {
                                v.event.add(this, e, i, r, n)
                        })
                },
                one: function(e, t, n, r) {
                        return this.on(e, t, n, r, 1)
              
                },
                bind: function(e, t, n) {
                        return this.on(e, null, t, n)
                },
                unbind: function(e, t) {
                        return this.off(e, null, t)
                },
                live: function(e, t, n) {
                        return v(this.context).on(e, this.selector, t, n),
                        this
                },
                die: function(e, t) {
                        return v(this.context).off(e, this.selector || "**", t),
                        this
                },
                delegate: function(e, t, n, r) {
                        return this.on(t, e, n, r)
                },
                undelegate: function(e, t, n) {
                        return arguments.length === 1 ? this.off(e, "**") : this.off(t, e || "**", n)
                },
                trigger: function(e, t) {
                        return this.each(function() {
                                v.event.trigger(e, t, this)
                        })
                },
                triggerHandler: function(e, t) {
                        if (this[0]) {
                                return v.event.trigger(e, t, this[0], !0)
                        }
                },
                toggle: function(e) {
                        var t = arguments,
                        n = e.guid || v.guid++,
                        r = 0,
                        i = function(n) {
                                var i = (v._data(this, "lastToggle" + e.guid) || 0) % r;
                                return v._data(this, "lastToggle" + e.guid, i + 1),
                                n.preventDefault(),
                                t[i].apply(this, arguments) || !1
                        };
                        i.guid = n;
                        while (r < t.length) {
                                t[r++].guid = n
                        }
                        return this.click(i)
                },
                hover: function(e, t) {
                        return this.mouseenter(e).mouseleave(t || e)
                }
        }),
        v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),
        function(e, t) {
                v.fn[t] = function(e, n) {
                        return n == null && (n = e, e = null),
                        arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
                },
                Q.test(t) && (v.event.fixHooks[t] = v.event.keyHooks),
                G.test(t) && (v.event.fixHooks[t] = v.event.mouseHooks)
        }),
        function(e, t) {
                function nt(e, t, n, r) {
                        n = n || [],
                        t = t || g;
                        var i, s, a, f, l = t.nodeType;
                        if (!e || typeof e != "string") {
                                return n
                        }
                        if (l !== 1 && l !== 9) {
                                return []
                        }
                        a = o(t);
                        if (!a && !r) {
                                if (i = R.exec(e)) {
                                        if (f = i[1]) {
                                                if (l === 9) {
                                                        s = t.getElementById(f);
                                                        if (!s || !s.parentNode) {
                                                                return n
                                                        }
                                                        if (s.id === f) {
                                                                return n.push(s),
                                                                n
                                                        }
                                                } else {
                                                        if (t.ownerDocument && (s = t.ownerDocument.getElementById(f)) && u(t, s) && s.id === f) {
                                                                return n.push(s),
                                                                n
                                                        }
                                                }
                                        } else {
                                                if (i[2]) {
                                                        return S.apply(n, x.call(t.getElementsByTagName(e), 0)),
                                                        n
                                                }
                                                if ((f = i[3]) && Z && t.getElementsByClassName) {
                                                        return S.apply(n, x.call(t.getElementsByClassName(f), 0)),
                                                        n
                                                }
                                        }
                                }
                        }
                        return vt(e.replace(j, "$1"), t, n, r, a)
                }

                function rt(e) {
                        return function(t) {
                                var n = t.nodeName.toLowerCase();
                                return n === "input" && t.type === e
                        }
                }

                function it(e) {
                        return function(t) {
                                var n = t.nodeName.toLowerCase();
                                return (n === "input" || n === "button") && t.type === e
                        }
                }

                function st(e) {
                        return N(function(t) {
                                return t = +t,
                                N(function(n, r) {
                                        var i, s = e([], n.length, t),
                                        o = s.length;
                                        while (o--) {
                                                n[i = s[o]] && (n[i] = !(r[i] = n[i]))
                                        }
                                })
                        })
                }

                function ot(e, t, n) {
                        if (e === t) {
                                return n
                        }
                        var r = e.nextSibling;
                        while (r) {
                                if (r === t) {
                                        return - 1
                                }
                                r = r.nextSibling
                        }
                        return 1
                }

                function ut(e, t) {
                        var n, r, s, o, u, a, f, l = L[d][e + " "];
                        if (l) {
                                return t ? 0 : l.slice(0)
                        }
                        u = e,
                        a = [],
                        f = i.preFilter;
                        while (u) {
                                if (!n || (r = F.exec(u))) {
                                        r && (u = u.slice(r[0].length) || u),
                                        a.push(s = [])
                                }
                                n = !1;
                                if (r = I.exec(u)) {
                                        s.push(n = new m(r.shift())),
                                        u = u.slice(n.length),
                                        n.type = r[0].replace(j, " ")
                                }
                                for (o in i.filter) { (r = J[o].exec(u)) && (!f[o] || (r = f[o](r))) && (s.push(n = new m(r.shift())), u = u.slice(n.length), n.type = o, n.matches = r)
                                }
                                if (!n) {
                                        break
                                }
                        }
                        return t ? u.length: u ? nt.error(e) : L(e, a).slice(0)
                }

                function at(e, t, r) {
                        var i = t.dir,
                        s = r && t.dir === "parentNode",
                        o = w++;
                        return t.first ?
                        function(t, n, r) {
                                while (t = t[i]) {
                                        if (s || t.nodeType === 1) {
                                                return e(t, n, r)
                                        }
                                }
                        }: function(t, r, u) {
                                if (!u) {
                                        var a, f = b + " " + o + " ",
                                        l = f + n;
                                        while (t = t[i]) {
                                                if (s || t.nodeType === 1) {
                                                        if ((a = t[d]) === l) {
                                                                return t.sizset
                                                        }
                                                        if (typeof a == "string" && a.indexOf(f) === 0) {
                                                                if (t.sizset) {
                                                                        return t
                                                                }
                                                        } else {
                                                                t[d] = l;
                                                                if (e(t, r, u)) {
                                                                        return t.sizset = !0,
                                                                        t
                                                                }
                                                                t.sizset = !1
                                                        }
                                                }
                                        }
                                } else {
                                        while (t = t[i]) {
                                                if (s || t.nodeType === 1) {
                                                        if (e(t, r, u)) {
                                                                return t
                                                        }
                                                }
                                        }
                                }
                        }
                }

                function ft(e) {
                        return e.length > 1 ?
                        function(t, n, r) {
                                var i = e.length;
                                while (i--) {
                                        if (!e[i](t, n, r)) {
                                                return ! 1
                                        }
                                }
                                return ! 0
                        }: e[0]
                }

                function lt(e, t, n, r, i) {
                        var s, o = [],
                        u = 0,
                        a = e.length,
                        f = t != null;
                        for (; u < a; u++) {
                                if (s = e[u]) {
                                        if (!n || n(s, r, i)) {
                                                o.push(s),
                                                f && t.push(u)
                                        }
                                }
                        }
                        return o
                }

                function ct(e, t, n, r, i, s) {
                        return r && !r[d] && (r = ct(r)),
                        i && !i[d] && (i = ct(i, s)),
                        N(function(s, o, u, a) {
                                var f, l, c, h = [],
                                p = [],
                                d = o.length,
                                v = s || dt(t || "*", u.nodeType ? [u] : u, []),
                                m = e && (s || !t) ? lt(v, h, e, u, a) : v,
                                g = n ? i || (s ? e: d || r) ? [] : o: m;
                                n && n(m, g, u, a);
                                if (r) {
                                        f = lt(g, p),
                                        r(f, [], u, a),
                                        l = f.length;
                                        while (l--) {
                                                if (c = f[l]) {
                                                        g[p[l]] = !(m[p[l]] = c)
                                                }
                                        }
                                }
                                if (s) {
                                        if (i || e) {
                                                if (i) {
                                                        f = [],
                                                        l = g.length;
                                                        while (l--) { (c = g[l]) && f.push(m[l] = c)
                                                        }
                                                        i(null, g = [], f, a)
                                                }
                                                l = g.length;
                                                while (l--) { (c = g[l]) && (f = i ? T.call(s, c) : h[l]) > -1 && (s[f] = !(o[f] = c))
                                                }
                                        }
                                } else {
                                        g = lt(g === o ? g.splice(d, g.length) : g),
                                        i ? i(null, o, g, a) : S.apply(o, g)
                                }
                        })
                }

                function ht(e) {
                        var t, n, r, s = e.length,
                        o = i.relative[e[0].type],
                        u = o || i.relative[" "],
                        a = o ? 1 : 0,
                        f = at(function(e) {
                                return e === t
                        },
                        u, !0),
                        l = at(function(e) {
                                return T.call(t, e) > -1
                        },
                        u, !0),
                        h = [function(e, n, r) {
                                return ! o && (r || n !== c) || ((t = n).nodeType ? f(e, n, r) : l(e, n, r))
                        }];
                        for (; a < s; a++) {
                                if (n = i.relative[e[a].type]) {
                                        h = [at(ft(h), n)]
                                } else {
                                        n = i.filter[e[a].type].apply(null, e[a].matches);
                                        if (n[d]) {
                                                r = ++a;
                                                for (; r < s; r++) {
                                                        if (i.relative[e[r].type]) {
                                                                break
                                                        }
                                                }
                                                return ct(a > 1 && ft(h), a > 1 && e.slice(0, a - 1).join("").replace(j, "$1"), n, a < r && ht(e.slice(a, r)), r < s && ht(e = e.slice(r)), r < s && e.join(""))
                                        }
                                        h.push(n)
                                }
                        }
                        return ft(h)
                }

                function pt(e, t) {
                        var r = t.length > 0,
                        s = e.length > 0,
                        o = function(u, a, f, l, h) {
                                var p, d, v, m = [],
                                y = 0,
                                w = "0",
                                x = u && [],
                                T = h != null,
                                N = c,
                                C = u || s && i.find.TAG("*", h && a.parentNode || a),
                                k = b += N == null ? 1 : Math.E;
                                T && (c = a !== g && a, n = o.el);
                                for (; (p = C[w]) != null; w++) {
                                        if (s && p) {
                                                for (d = 0; v = e[d]; d++) {
                                                        if (v(p, a, f)) {
                                                                l.push(p);
                                                                break
                                                        }
                                                }
                                                T && (b = k, n = ++o.el)
                                        }
                                        r && ((p = !v && p) && y--, u && x.push(p))
                                }
                                y += w;
                                if (r && w !== y) {
                                        for (d = 0; v = t[d]; d++) {
                                                v(x, m, a, f)
                                        }
                                        if (u) {
                                                if (y > 0) {
                                                        while (w--) { ! x[w] && !m[w] && (m[w] = E.call(l))
                                                        }
                                                }
                                                m = lt(m)
                                        }
                                        S.apply(l, m),
                                        T && !u && m.length > 0 && y + t.length > 1 && nt.uniqueSort(l)
                                }
                                return T && (b = k, c = N),
                                x
                        };
                        return o.el = 0,
                        r ? N(o) : o
                }

                function dt(e, t, n) {
                        var r = 0,
                        i = t.length;
                        for (; r < i; r++) {
                                nt(e, t[r], n)
                        }
                        return n
                }

                function vt(e, t, n, r, s) {
                        var o, u, f, l, c, h = ut(e),
                        p = h.length;
                        if (!r && h.length === 1) {
                                u = h[0] = h[0].slice(0);
                                if (u.length > 2 && (f = u[0]).type === "ID" && t.nodeType === 9 && !s && i.relative[u[1].type]) {
                                        t = i.find.ID(f.matches[0].replace($, ""), t, s)[0];
                                        if (!t) {
                                                return n
                                        }
                                        e = e.slice(u.shift().length)
                                }
                                for (o = J.POS.test(e) ? -1 : u.length - 1; o >= 0; o--) {
                                        f = u[o];
                                        if (i.relative[l = f.type]) {
                                                break
                                        }
                                        if (c = i.find[l]) {
                                                if (r = c(f.matches[0].replace($, ""), z.test(u[0].type) && t.parentNode || t, s)) {
                                                        u.splice(o, 1),
                                                        e = r.length && u.join("");
                                                        if (!e) {
                                                                return S.apply(n, x.call(r, 0)),
                                                                n
                                                        }
                                                        break
                                                }
                                        }
                                }
                        }
                        return a(e, h)(r, t, s, n, z.test(e)),
                        n
                }

                function mt() {}
                var n, r, i, s, o, u, a, f, l, c, h = !0,
                p = "undefined",
                d = ("sizcache" + Math.random()).replace(".", ""),
                m = String,
                g = e.document,
                y = g.documentElement,
                b = 0,
                w = 0,
                E = [].pop,
                S = [].push,
                x = [].slice,
                T = [].indexOf ||
                function(e) {
                        var t = 0,
                        n = this.length;
                        for (; t < n; t++) {
                                if (this[t] === e) {
                                        return t
                                }
                        }
                        return - 1
                },
                N = function(e, t) {
                        return e[d] = t == null || t,
                        e
                },
                C = function() {
                        var e = {},
                        t = [];
                        return N(function(n, r) {
                                return t.push(n) > i.cacheLength && delete e[t.shift()],
                                e[n + " "] = r
                        },
                        e)
                },
                k = C(),
                L = C(),
                A = C(),
                O = "[\\x20\\t\\r\\n\\f]",
                M = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",
                _ = M.replace("w", "w#"),
                D = "([*^$|!~]?=)",
                P = "\\[" + O + "*(" + M + ")" + O + "*(?:" + D + O + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + _ + ")|)|)" + O + "*\\]",
                H = ":(" + M + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + P + ")|[^:]|\\\\.)*|.*))\\)|)",
                B = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + O + "*((?:-\\d)?\\d*)" + O + "*\\)|)(?=[^-]|$)",
                j = new RegExp("^" + O + "+|((?:^|[^\\\\])(?:\\\\.)*)" + O + "+$", "g"),
                F = new RegExp("^" + O + "*," + O + "*"),
                I = new RegExp("^" + O + "*([\\x20\\t\\r\\n\\f>+~])" + O + "*"),
                q = new RegExp(H),
                R = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,
                U = /^:not/,
                z = /[\x20\t\r\n\f]*[+~]/,
                W = /:not\($/,
                X = /h\d/i,
                V = /input|select|textarea|button/i,
                $ = /\\(?!\\)/g,
                J = {
                        ID: new RegExp("^#(" + M + ")"),
                        CLASS: new RegExp("^\\.(" + M + ")"),
                        NAME: new RegExp("^\\[name=['\"]?(" + M + ")['\"]?\\]"),
                        TAG: new RegExp("^(" + M.replace("w", "w*") + ")"),
                        ATTR: new RegExp("^" + P),
                        PSEUDO: new RegExp("^" + H),
                        POS: new RegExp(B, "i"),
                        CHILD: new RegExp("^:(only|nth|first|last)-child(?:\\(" + O + "*(even|odd|(([+-]|)(\\d*)n|)" + O + "*(?:([+-]|)" + O + "*(\\d+)|))" + O + "*\\)|)", "i"),
                        needsContext: new RegExp("^" + O + "*[>+~]|" + B, "i")
                },
                K = function(e) {
                        var t = g.createElement("div");
                        try {
                                return e(t)
                        } catch(n) {
                                return ! 1
                        } finally {
                                t = null
                        }
                },
                Q = K(function(e) {
                        return e.appendChild(g.createComment("")),
                        !e.getElementsByTagName("*").length
                }),
                G = K(function(e) {
                        return e.innerHTML = "<a href='#'></a>",
                        e.firstChild && typeof e.firstChild.getAttribute !== p && e.firstChild.getAttribute("href") === "#"
                }),
                Y = K(function(e) {
                        e.innerHTML = "<select></select>";
                        var t = typeof e.lastChild.getAttribute("multiple");
                        return t !== "boolean" && t !== "string"
                }),
                Z = K(function(e) {
                        return e.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>",
                        !e.getElementsByClassName || !e.getElementsByClassName("e").length ? !1 : (e.lastChild.className = "e", e.getElementsByClassName("e").length === 2)
                }),
                et = K(function(e) {
                        e.id = d + 0,
                        e.innerHTML = "<a name='" + d + "'></a><div name='" + d + "'></div>",
                        y.insertBefore(e, y.firstChild);
                        var t = g.getElementsByName && g.getElementsByName(d).length === 2 + g.getElementsByName(d + 0).length;
                        return r = !g.getElementById(d),
                        y.removeChild(e),
                        t
                });
                try {
                        x.call(y.childNodes, 0)[0].nodeType
                } catch(tt) {
                        x = function(e) {
                                var t, n = [];
                                for (; t = this[e]; e++) {
                                        n.push(t)
                                }
                                return n
                        }
                }
                nt.matches = function(e, t) {
                        return nt(e, null, null, t)
                },
                nt.matchesSelector = function(e, t) {
                        return nt(t, null, null, [e]).length > 0
                },
                s = nt.getText = function(e) {
                        var t, n = "",
                        r = 0,
                        i = e.nodeType;
                        if (i) {
                                if (i === 1 || i === 9 || i === 11) {
                                        if (typeof e.textContent == "string") {
                                                return e.textContent
                                        }
                                        for (e = e.firstChild; e; e = e.nextSibling) {
                                                n += s(e)
                                        }
                                } else {
                                        if (i === 3 || i === 4) {
                                                return e.nodeValue
                                        }
                                }
                        } else {
                                for (; t = e[r]; r++) {
                                        n += s(t)
                                }
                        }
                        return n
                },
                o = nt.isXML = function(e) {
                        var t = e && (e.ownerDocument || e).documentElement;
                        return t ? t.nodeName !== "HTML": !1
                },
                u = nt.contains = y.contains ?
                function(e, t) {
                        var n = e.nodeType === 9 ? e.documentElement: e,
                        r = t && t.parentNode;
                        return e === r || !!(r && r.nodeType === 1 && n.contains && n.contains(r))
                }: y.compareDocumentPosition ?
                function(e, t) {
                        return t && !!(e.compareDocumentPosition(t) & 16)
                }: function(e, t) {
                        while (t = t.parentNode) {
                                if (t === e) {
                                        return ! 0
                                }
                        }
                        return ! 1
                },
                nt.attr = function(e, t) {
                        var n, r = o(e);
                        return r || (t = t.toLowerCase()),
                        (n = i.attrHandle[t]) ? n(e) : r || Y ? e.getAttribute(t) : (n = e.getAttributeNode(t), n ? typeof e[t] == "boolean" ? e[t] ? t: null: n.specified ? n.value: null: null)
                },
                i = nt.selectors = {
                        cacheLength: 50,
                        createPseudo: N,
                        match: J,
                        attrHandle: G ? {}: {
                                href: function(e) {
                                        return e.getAttribute("href", 2)
                                },
                                type: function(e) {
                                        return e.getAttribute("type")
                                }
                        },
                        find: {
                                ID: r ?
                                function(e, t, n) {
                                        if (typeof t.getElementById !== p && !n) {
                                                var r = t.getElementById(e);
                                                return r && r.parentNode ? [r] : []
                                        }
                                }: function(e, n, r) {
                                        if (typeof n.getElementById !== p && !r) {
                                                var i = n.getElementById(e);
                                                return i ? i.id === e || typeof i.getAttributeNode !== p && i.getAttributeNode("id").value === e ? [i] : t: []
                                        }
                                },
                                TAG: Q ?
                                function(e, t) {
                                        if (typeof t.getElementsByTagName !== p) {
                                                return t.getElementsByTagName(e)
                                        }
                                }: function(e, t) {
                                        var n = t.getElementsByTagName(e);
                                        if (e === "*") {
                                                var r, i = [],
                                                s = 0;
                                                for (; r = n[s]; s++) {
                                                        r.nodeType === 1 && i.push(r)
                                                }
                                                return i
                                        }
                                        return n
                                },
                                NAME: et &&
                                function(e, t) {
                                        if (typeof t.getElementsByName !== p) {
                                                return t.getElementsByName(name)
                                        }
                                },
                                CLASS: Z &&
                                function(e, t, n) {
                                        if (typeof t.getElementsByClassName !== p && !n) {
                                                return t.getElementsByClassName(e)
                                        }
                                }
                        },
                        relative: {
                                ">": {
                                        dir: "parentNode",
                                        first: !0
                                },
                                " ": {
                                        dir: "parentNode"
                                },
                                "+": {
                                        dir: "previousSibling",
                                        first: !0
                                },
                                "~": {
                                        dir: "previousSibling"
                                }
                        },
                        preFilter: {
                                ATTR: function(e) {
                                        return e[1] = e[1].replace($, ""),
                                        e[3] = (e[4] || e[5] || "").replace($, ""),
                                        e[2] === "~=" && (e[3] = " " + e[3] + " "),
                                        e.slice(0, 4)
                                },
                                CHILD: function(e) {
                                        return e[1] = e[1].toLowerCase(),
                                        e[1] === "nth" ? (e[2] || nt.error(e[0]), e[3] = +(e[3] ? e[4] + (e[5] || 1) : 2 * (e[2] === "even" || e[2] === "odd")), e[4] = +(e[6] + e[7] || e[2] === "odd")) : e[2] && nt.error(e[0]),
                                        e
                                },
                                PSEUDO: function(e) {
                                        var t, n;
                                        if (J.CHILD.test(e[0])) {
                                                return null
                                        }
                                        if (e[3]) {
                                                e[2] = e[3]
                                        } else {
                                                if (t = e[4]) {
                                                        q.test(t) && (n = ut(t, !0)) && (n = t.indexOf(")", t.length - n) - t.length) && (t = t.slice(0, n), e[0] = e[0].slice(0, n)),
                                                        e[2] = t
                                                }
                                        }
                                        return e.slice(0, 3)
                                }
                        },
                        filter: {
                                ID: r ?
                                function(e) {
                                        return e = e.replace($, ""),
                                        function(t) {
                                                return t.getAttribute("id") === e
                                        }
                                }: function(e) {
                                        return e = e.replace($, ""),
                                        function(t) {
                                                var n = typeof t.getAttributeNode !== p && t.getAttributeNode("id");
                                                return n && n.value === e
                                        }
                                },
                                TAG: function(e) {
                                        return e === "*" ?
                                        function() {
                                                return ! 0
                                        }: (e = e.replace($, "").toLowerCase(),
                                        function(t) {
                                                return t.nodeName && t.nodeName.toLowerCase() === e
                                        })
                                },
                                CLASS: function(e) {
                                        var t = k[d][e + " "];
                                        return t || (t = new RegExp("(^|" + O + ")" + e + "(" + O + "|$)")) && k(e,
                                        function(e) {
                                                return t.test(e.className || typeof e.getAttribute !== p && e.getAttribute("class") || "")
                                        })
                                },
                                ATTR: function(e, t, n) {
                                        return function(r, i) {
                                                var s = nt.attr(r, e);
                                                return s == null ? t === "!=": t ? (s += "", t === "=" ? s === n: t === "!=" ? s !== n: t === "^=" ? n && s.indexOf(n) === 0 : t === "*=" ? n && s.indexOf(n) > -1 : t === "$=" ? n && s.substr(s.length - n.length) === n: t === "~=" ? (" " + s + " ").indexOf(n) > -1 : t === "|=" ? s === n || s.substr(0, n.length + 1) === n + "-": !1) : !0
                                        }
                                },
                                CHILD: function(e, t, n, r) {
                                        return e === "nth" ?
                                        function(e) {
                                                var t, i, s = e.parentNode;
                                                if (n === 1 && r === 0) {
                                                        return ! 0
                                                }
                                                if (s) {
                                                        i = 0;
                                                        for (t = s.firstChild; t; t = t.nextSibling) {
                                                                if (t.nodeType === 1) {
                                                                        i++;
                                                                        if (e === t) {
                                                                                break
                                                                        }
                                                                }
                                                        }
                                                }
                                                return i -= r,
                                                i === n || i % n === 0 && i / n >= 0
                                        }: function(t) {
                                                var n = t;
                                                switch (e) {
                                                case "only":
                                                case "first":
                                                        while (n = n.previousSibling) {
                                                                if (n.nodeType === 1) {
                                                                        return ! 1
                                                                }
                                                        }
                                                        if (e === "first") {
                                                                return ! 0
                                                        }
                                                        n = t;
                                                case "last":
                                                        while (n = n.nextSibling) {
                                                                if (n.nodeType === 1) {
                                                                        return ! 1
                                                                }
                                                        }
                                                        return ! 0
                                                }
                                        }
                                },
                                PSEUDO: function(e, t) {
                                        var n, r = i.pseudos[e] || i.setFilters[e.toLowerCase()] || nt.error("unsupported pseudo: " + e);
                                        return r[d] ? r(t) : r.length > 1 ? (n = [e, e, "", t], i.setFilters.hasOwnProperty(e.toLowerCase()) ? N(function(e, n) {
                                                var i, s = r(e, t),
                                                o = s.length;
                                                while (o--) {
                                                        i = T.call(e, s[o]),
                                                        e[i] = !(n[i] = s[o])
                                                }
                                        }) : function(e) {
                                                return r(e, 0, n)
                                        }) : r
                                }
                        },
                        pseudos: {
                                not: N(function(e) {
                                        var t = [],
                                        n = [],
                                        r = a(e.replace(j, "$1"));
                                        return r[d] ? N(function(e, t, n, i) {
                                                var s, o = r(e, null, i, []),
                                                u = e.length;
                                                while (u--) {
                                                        if (s = o[u]) {
                                                                e[u] = !(t[u] = s)
                                                        }
                                                }
                                        }) : function(e, i, s) {
                                                return t[0] = e,
                                                r(t, null, s, n),
                                                !n.pop()
                                        }
                                }),
                                has: N(function(e) {
                                        return function(t) {
                                                return nt(e, t).length > 0
                                        }
                                }),
                                contains: N(function(e) {
                                        return function(t) {
                                                return (t.textContent || t.innerText || s(t)).indexOf(e) > -1
                                        }
                                }),
                                enabled: function(e) {
                                        return e.disabled === !1
                                },
                                disabled: function(e) {
                                        return e.disabled === !0
                                },
                                checked: function(e) {
                                        var t = e.nodeName.toLowerCase();
                                        return t === "input" && !!e.checked || t === "option" && !!e.selected
                                },
                                selected: function(e) {
                                        return e.parentNode && e.parentNode.selectedIndex,
                                        e.selected === !0
                                },
                                parent: function(e) {
                                        return ! i.pseudos.empty(e)
                                },
                                empty: function(e) {
                                        var t;
                                        e = e.firstChild;
                                        while (e) {
                                                if (e.nodeName > "@" || (t = e.nodeType) === 3 || t === 4) {
                                                        return ! 1
                                                }
                                                e = e.nextSibling
                                        }
                                        return ! 0
                                },
                                header: function(e) {
                                        return X.test(e.nodeName)
                                },
                                text: function(e) {
                                        var t, n;
                                        return e.nodeName.toLowerCase() === "input" && (t = e.type) === "text" && ((n = e.getAttribute("type")) == null || n.toLowerCase() === t)
                                },
                                radio: rt("radio"),
                                checkbox: rt("checkbox"),
                                file: rt("file"),
                                password: rt("password"),
                                image: rt("image"),
                                submit: it("submit"),
                                reset: it("reset"),
                                button: function(e) {
                                        var t = e.nodeName.toLowerCase();
                                        return t === "input" && e.type === "button" || t === "button"
                                },
                                input: function(e) {
                                        return V.test(e.nodeName)
                                },
                                focus: function(e) {
                                        var t = e.ownerDocument;
                                        return e === t.activeElement && (!t.hasFocus || t.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
                                },
                                active: function(e) {
                                        return e === e.ownerDocument.activeElement
                                },
                                first: st(function() {
                                        return [0]
                                }),
                                last: st(function(e, t) {
                                        return [t - 1]
                                }),
                                eq: st(function(e, t, n) {
                                        return [n < 0 ? n + t: n]
                                }),
                                even: st(function(e, t) {
                                        for (var n = 0; n < t; n += 2) {
                                                e.push(n)
                                        }
                                        return e
                                }),
                                odd: st(function(e, t) {
                                        for (var n = 1; n < t; n += 2) {
                                                e.push(n)
                                        }
                                        return e
                                }),
                                lt: st(function(e, t, n) {
                                        for (var r = n < 0 ? n + t: n; --r >= 0;) {
                                                e.push(r)
                                        }
                                        return e
                                }),
                                gt: st(function(e, t, n) {
                                        for (var r = n < 0 ? n + t: n; ++r < t;) {
                                                e.push(r)
                                        }
                                        return e
                                })
                        }
                },
                f = y.compareDocumentPosition ?
                function(e, t) {
                        return e === t ? (l = !0, 0) : (!e.compareDocumentPosition || !t.compareDocumentPosition ? e.compareDocumentPosition: e.compareDocumentPosition(t) & 4) ? -1 : 1
                }: function(e, t) {
                        if (e === t) {
                                return l = !0,
                                0
                        }
                        if (e.sourceIndex && t.sourceIndex) {
                                return e.sourceIndex - t.sourceIndex
                        }
                        var n, r, i = [],
                        s = [],
                        o = e.parentNode,
                        u = t.parentNode,
                        a = o;
                        if (o === u) {
                                return ot(e, t)
                        }
                        if (!o) {
                                return - 1
                        }
                        if (!u) {
                                return 1
                        }
                        while (a) {
                                i.unshift(a),
                                a = a.parentNode
                        }
                        a = u;
                        while (a) {
                                s.unshift(a),
                                a = a.parentNode
                        }
                        n = i.length,
                        r = s.length;
                        for (var f = 0; f < n && f < r; f++) {
                                if (i[f] !== s[f]) {
                                        return ot(i[f], s[f])
                                }
                        }
                        return f === n ? ot(e, s[f], -1) : ot(i[f], t, 1)
                },
                [0, 0].sort(f),
                h = !l,
                nt.uniqueSort = function(e) {
                        var t, n = [],
                        r = 1,
                        i = 0;
                        l = h,
                        e.sort(f);
                        if (l) {
                                for (; t = e[r]; r++) {
                                        t === e[r - 1] && (i = n.push(r))
                                }
                                while (i--) {
                                        e.splice(n[i], 1)
                                }
                        }
                        return e
                },
                nt.error = function(e) {
                        throw new Error("Syntax error, unrecognized expression: " + e)
                },
                a = nt.compile = function(e, t) {
                        var n, r = [],
                        i = [],
                        s = A[d][e + " "];
                        if (!s) {
                                t || (t = ut(e)),
                                n = t.length;
                                while (n--) {
                                        s = ht(t[n]),
                                        s[d] ? r.push(s) : i.push(s)
                                }
                                s = A(e, pt(i, r))
                        }
                        return s
                },
                g.querySelectorAll &&
                function() {
                        var e, t = vt,
                        n = /'|\\/g,
                        r = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
                        i = [":focus"],
                        s = [":active"],
                        u = y.matchesSelector || y.mozMatchesSelector || y.webkitMatchesSelector || y.oMatchesSelector || y.msMatchesSelector;
                        K(function(e) {
                                e.innerHTML = "<select><option selected=''></option></select>",
                                e.querySelectorAll("[selected]").length || i.push("\\[" + O + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),
                                e.querySelectorAll(":checked").length || i.push(":checked")
                        }),
                        K(function(e) {
                                e.innerHTML = "<p test=''></p>",
                                e.querySelectorAll("[test^='']").length && i.push("[*^$]=" + O + "*(?:\"\"|'')"),
                                e.innerHTML = "<input type='hidden'/>",
                                e.querySelectorAll(":enabled").length || i.push(":enabled", ":disabled")
                        }),
                        i = new RegExp(i.join("|")),
                        vt = function(e, r, s, o, u) {
                                if (!o && !u && !i.test(e)) {
                                        var a, f, l = !0,
                                        c = d,
                                        h = r,
                                        p = r.nodeType === 9 && e;
                                        if (r.nodeType === 1 && r.nodeName.toLowerCase() !== "object") {
                                                a = ut(e),
                                                (l = r.getAttribute("id")) ? c = l.replace(n, "\\$&") : r.setAttribute("id", c),
                                                c = "[id='" + c + "'] ",
                                                f = a.length;
                                                while (f--) {
                                                        a[f] = c + a[f].join("")
                                                }
                                                h = z.test(e) && r.parentNode || r,
                                                p = a.join(",")
                                        }
                                        if (p) {
                                                try {
                                                        return S.apply(s, x.call(h.querySelectorAll(p), 0)),
                                                        s
                                                } catch(v) {} finally {
                                                        l || r.removeAttribute("id")
                                                }
                                        }
                                }
                                return t(e, r, s, o, u)
                        },
                        u && (K(function(t) {
                                e = u.call(t, "div");
                                try {
                                        u.call(t, "[test!='']:sizzle"),
                                        s.push("!=", H)
                                } catch(n) {}
                        }), s = new RegExp(s.join("|")), nt.matchesSelector = function(t, n) {
                                n = n.replace(r, "='$1']");
                                if (!o(t) && !s.test(n) && !i.test(n)) {
                                        try {
                                                var a = u.call(t, n);
                                                if (a || e || t.document && t.document.nodeType !== 11) {
                                                        return a
                                                }
                                        } catch(f) {}
                                }
                                return nt(n, null, null, [t]).length > 0
                        })
                } (),
                i.pseudos.nth = i.pseudos.eq,
                i.filters = mt.prototype = i.pseudos,
                i.setFilters = new mt,
                nt.attr = v.attr,
                v.find = nt,
                v.expr = nt.selectors,
                v.expr[":"] = v.expr.pseudos,
                v.unique = nt.uniqueSort,
                v.text = nt.getText,
                v.isXMLDoc = nt.isXML,
                v.contains = nt.contains
        } (e);
        var nt = /Until$/,
        rt = /^(?:parents|prev(?:Until|All))/,
        it = /^.[^:#\[\.,]*$/,
        st = v.expr.match.needsContext,
        ot = {
                children: !0,
                contents: !0,
                next: !0,
                prev: !0
        };
        v.fn.extend({
                find: function(e) {
                        var t, n, r, i, s, o, u = this;
                        if (typeof e != "string") {
                                return v(e).filter(function() {
                                        for (t = 0, n = u.length; t < n; t++) {
                                                if (v.contains(u[t], this)) {
                                                        return ! 0
                                                }
                                        }
                                })
                        }
                        o = this.pushStack("", "find", e);
                        for (t = 0, n = this.length; t < n; t++) {
                                r = o.length,
                                v.find(e, this[t], o);
                                if (t > 0) {
                                        for (i = r; i < o.length; i++) {
                                                for (s = 0; s < r; s++) {
                                                        if (o[s] === o[i]) {
                                                                o.splice(i--, 1);
                                                                break
                                                        }
                                                }
                                        }
                                }
                        }
                        return o
                },
                has: function(e) {
                        var t, n = v(e, this),
                        r = n.length;
                        return this.filter(function() {
                                for (t = 0; t < r; t++) {
                                        if (v.contains(this, n[t])) {
                                                return ! 0
                                        }
                                }
                        })
                },
                not: function(e) {
                        return this.pushStack(ft(this, e, !1), "not", e)
                },
                filter: function(e) {
                        return this.pushStack(ft(this, e, !0), "filter", e)
                },
                is: function(e) {
                        return !! e && (typeof e == "string" ? st.test(e) ? v(e, this.context).index(this[0]) >= 0 : v.filter(e, this).length > 0 : this.filter(e).length > 0)
                },
                closest: function(e, t) {
                        var n, r = 0,
                        i = this.length,
                        s = [],
                        o = st.test(e) || typeof e != "string" ? v(e, t || this.context) : 0;
                        for (; r < i; r++) {
                                n = this[r];
                                while (n && n.ownerDocument && n !== t && n.nodeType !== 11) {
                                        if (o ? o.index(n) > -1 : v.find.matchesSelector(n, e)) {
                                                s.push(n);
                                                break
                                        }
                                        n = n.parentNode
                                }
                        }
                        return s = s.length > 1 ? v.unique(s) : s,
                        this.pushStack(s, "closest", e)
                },
                index: function(e) {
                        return e ? typeof e == "string" ? v.inArray(this[0], v(e)) : v.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.prevAll().length: -1
                },
                add: function(e, t) {
                        var n = typeof e == "string" ? v(e, t) : v.makeArray(e && e.nodeType ? [e] : e),
                        r = v.merge(this.get(), n);
                        return this.pushStack(ut(n[0]) || ut(r[0]) ? r: v.unique(r))
                },
                addBack: function(e) {
                        return this.add(e == null ? this.prevObject: this.prevObject.filter(e))
                }
        }),
        v.fn.andSelf = v.fn.addBack,
        v.each({
                parent: function(e) {
                        var t = e.parentNode;
                        return t && t.nodeType !== 11 ? t: null
                },
                parents: function(e) {
                        return v.dir(e, "parentNode")
                },
                parentsUntil: function(e, t, n) {
                        return v.dir(e, "parentNode", n)
                },
                next: function(e) {
                        return at(e, "nextSibling")
                },
                prev: function(e) {
                        return at(e, "previousSibling")
                },
                nextAll: function(e) {
                        return v.dir(e, "nextSibling")
                },
                prevAll: function(e) {
                        return v.dir(e, "previousSibling")
                },
                nextUntil: function(e, t, n) {
                        return v.dir(e, "nextSibling", n)
                },
                prevUntil: function(e, t, n) {
                        return v.dir(e, "previousSibling", n)
                },
                siblings: function(e) {
                        return v.sibling((e.parentNode || {}).firstChild, e)
                },
                children: function(e) {
                        return v.sibling(e.firstChild)
                },
                contents: function(e) {
                        return v.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document: v.merge([], e.childNodes)
                }
        },
        function(e, t) {
                v.fn[e] = function(n, r) {
                        var i = v.map(this, t, n);
                        return nt.test(e) || (r = n),
                        r && typeof r == "string" && (i = v.filter(r, i)),
                        i = this.length > 1 && !ot[e] ? v.unique(i) : i,
                        this.length > 1 && rt.test(e) && (i = i.reverse()),
                        this.pushStack(i, e, l.call(arguments).join(","))
                }
        }),
        v.extend({
                filter: function(e, t, n) {
                        return n && (e = ":not(" + e + ")"),
                        t.length === 1 ? v.find.matchesSelector(t[0], e) ? [t[0]] : [] : v.find.matches(e, t)
                },
                dir: function(e, n, r) {
                        var i = [],
                        s = e[n];
                        while (s && s.nodeType !== 9 && (r === t || s.nodeType !== 1 || !v(s).is(r))) {
                                s.nodeType === 1 && i.push(s),
                                s = s[n]
                        }
                        return i
                },
                sibling: function(e, t) {
                        var n = [];
                        for (; e; e = e.nextSibling) {
                                e.nodeType === 1 && e !== t && n.push(e)
                        }
                        return n
                }
        });
        var ct = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
        ht = / jQuery\d+="(?:null|\d+)"/g,
        pt = /^\s+/,
        dt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
        vt = /<([\w:]+)/,
        mt = /<tbody/i,
        gt = /<|&#?\w+;/,
        yt = /<(?:script|style|link)/i,
        bt = /<(?:script|object|embed|option|style)/i,
        wt = new RegExp("<(?:" + ct + ")[\\s/>]", "i"),
        Et = /^(?:checkbox|radio)$/,
        St = /checked\s*(?:[^=]|=\s*.checked.)/i,
        xt = /\/(java|ecma)script/i,
        Tt = /^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,
        Nt = {
                option: [1, "<select multiple='multiple'>", "</select>"],
                legend: [1, "<fieldset>", "</fieldset>"],
                thead: [1, "<table>", "</table>"],
                tr: [2, "<table><tbody>", "</tbody></table>"],
                td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
                col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
                area: [1, "<map>", "</map>"],
                _default: [0, "", ""]
        },
        Ct = lt(i),
        kt = Ct.appendChild(i.createElement("div"));
        Nt.optgroup = Nt.option,
        Nt.tbody = Nt.tfoot = Nt.colgroup = Nt.caption = Nt.thead,
        Nt.th = Nt.td,
        v.support.htmlSerialize || (Nt._default = [1, "X<div>", "</div>"]),
        v.fn.extend({
                text: function(e) {
                        return v.access(this,
                        function(e) {
                                return e === t ? v.text(this) : this.empty().append((this[0] && this[0].ownerDocument || i).createTextNode(e))
                        },
                        null, e, arguments.length)
                },
                wrapAll: function(e) {
                        if (v.isFunction(e)) {
                                return this.each(function(t) {
                                        v(this).wrapAll(e.call(this, t))
                                })
                        }
                        if (this[0]) {
                                var t = v(e, this[0].ownerDocument).eq(0).clone(!0);
                                this[0].parentNode && t.insertBefore(this[0]),
                                t.map(function() {
                                        var e = this;
                                        while (e.firstChild && e.firstChild.nodeType === 1) {
                                                e = e.firstChild
                                        }
                                        return e
                                }).append(this)
                        }
                        return this
                },
                wrapInner: function(e) {
                        return v.isFunction(e) ? this.each(function(t) {
                                v(this).wrapInner(e.call(this, t))
                        }) : this.each(function() {
                                var t = v(this),
                                n = t.contents();
                                n.length ? n.wrapAll(e) : t.append(e)
                        })
                },
                wrap: function(e) {
                        var t = v.isFunction(e);
                        return this.each(function(n) {
                                v(this).wrapAll(t ? e.call(this, n) : e)
                        })
                },
                unwrap: function() {
                        return this.parent().each(function() {
                                v.nodeName(this, "body") || v(this).replaceWith(this.childNodes)
                        }).end()
                },
                append: function() {
                        return this.domManip(arguments, !0,
                        function(e) { (this.nodeType === 1 || this.nodeType === 11) && this.appendChild(e)
                        })
                },
                prepend: function() {
                        return this.domManip(arguments, !0,
                        function(e) { (this.nodeType === 1 || this.nodeType === 11) && this.insertBefore(e, this.firstChild)
                        })
                },
                before: function() {
                        if (!ut(this[0])) {
                                return this.domManip(arguments, !1,
                                function(e) {
                                        this.parentNode.insertBefore(e, this)
                                })
                        }
                        if (arguments.length) {
                                var e = v.clean(arguments);
                                return this.pushStack(v.merge(e, this), "before", this.selector)
                        }
                },
                after: function() {
                        if (!ut(this[0])) {
                                return this.domManip(arguments, !1,
                                function(e) {
                                        this.parentNode.insertBefore(e, this.nextSibling)
                                })
                        }
                        if (arguments.length) {
                                var e = v.clean(arguments);
                                return this.pushStack(v.merge(this, e), "after", this.selector)
                        }
                },
                remove: function(e, t) {
                        var n, r = 0;
                        for (; (n = this[r]) != null; r++) {
                                if (!e || v.filter(e, [n]).length) { ! t && n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), v.cleanData([n])),
                                        n.parentNode && n.parentNode.removeChild(n)
                                }
                        }
                        return this
                },
                empty: function() {
                        var e, t = 0;
                        for (; (e = this[t]) != null; t++) {
                                e.nodeType === 1 && v.cleanData(e.getElementsByTagName("*"));
                                while (e.firstChild) {
                                        e.removeChild(e.firstChild)
                                }
                        }
                        return this
                },
                clone: function(e, t) {
                        return e = e == null ? !1 : e,
                        t = t == null ? e: t,
                        this.map(function() {
                                return v.clone(this, e, t)
                        })
                },
                html: function(e) {
                        return v.access(this,
                        function(e) {
                                var n = this[0] || {},
                                r = 0,
                                i = this.length;
                                if (e === t) {
                                        return n.nodeType === 1 ? n.innerHTML.replace(ht, "") : t
                                }
                                if (typeof e == "string" && !yt.test(e) && (v.support.htmlSerialize || !wt.test(e)) && (v.support.leadingWhitespace || !pt.test(e)) && !Nt[(vt.exec(e) || ["", ""])[1].toLowerCase()]) {
                                        e = e.replace(dt, "<$1></$2>");
                                        try {
                                                for (; r < i; r++) {
                                                        n = this[r] || {},
                                                        n.nodeType === 1 && (v.cleanData(n.getElementsByTagName("*")), n.innerHTML = e)
                                                }
                                                n = 0
                                        } catch(s) {}
                                }
                                n && this.empty().append(e)
                        },
                        null, e, arguments.length)
                },
                replaceWith: function(e) {
                        return ut(this[0]) ? this.length ? this.pushStack(v(v.isFunction(e) ? e() : e), "replaceWith", e) : this: v.isFunction(e) ? this.each(function(t) {
                                var n = v(this),
                                r = n.html();
                                n.replaceWith(e.call(this, t, r))
                        }) : (typeof e != "string" && (e = v(e).detach()), this.each(function() {
                                var t = this.nextSibling,
                                n = this.parentNode;
                                v(this).remove(),
                                t ? v(t).before(e) : v(n).append(e)
                        }))
                },
                detach: function(e) {
                        return this.remove(e, !0)
                },
                domManip: function(e, n, r) {
                        e = [].concat.apply([], e);
                        var i, s, o, u, a = 0,
                        f = e[0],
                        l = [],
                        c = this.length;
                        if (!v.support.checkClone && c > 1 && typeof f == "string" && St.test(f)) {
                                return this.each(function() {
                                        v(this).domManip(e, n, r)
                                })
                        }
                        if (v.isFunction(f)) {
                                return this.each(function(i) {
                                        var s = v(this);
                                        e[0] = f.call(this, i, n ? s.html() : t),
                                        s.domManip(e, n, r)
                                })
                        }
                        if (this[0]) {
                                i = v.buildFragment(e, this, l),
                                o = i.fragment,
                                s = o.firstChild,
                                o.childNodes.length === 1 && (o = s);
                                if (s) {
                                        n = n && v.nodeName(s, "tr");
                                        for (u = i.cacheable || c - 1; a < c; a++) {
                                                r.call(n && v.nodeName(this[a], "table") ? Lt(this[a], "tbody") : this[a], a === u ? o: v.clone(o, !0, !0))
                                        }
                                }
                                o = s = null,
                                l.length && v.each(l,
                                function(e, t) {
                                        t.src ? v.ajax ? v.ajax({
                                                url: t.src,
                                                type: "GET",
                                                dataType: "script",
                                                async: !1,
                                                global: !1,
                                                "throws": !0
                                        }) : v.error("no ajax") : v.globalEval((t.text || t.textContent || t.innerHTML || "").replace(Tt, "")),
                                        t.parentNode && t.parentNode.removeChild(t)
                                })
                        }
                        return this
                }
        }),
        v.buildFragment = function(e, n, r) {
                var s, o, u, a = e[0];
                return n = n || i,
                n = !n.nodeType && n[0] || n,
                n = n.ownerDocument || n,
                e.length === 1 && typeof a == "string" && a.length < 512 && n === i && a.charAt(0) === "<" && !bt.test(a) && (v.support.checkClone || !St.test(a)) && (v.support.html5Clone || !wt.test(a)) && (o = !0, s = v.fragments[a], u = s !== t),
                s || (s = n.createDocumentFragment(), v.clean(e, n, s, r), o && (v.fragments[a] = u && s)),
                {
                        fragment: s,
                        cacheable: o
                }
        },
        v.fragments = {},
        v.each({
                appendTo: "append",
                prependTo: "prepend",
                insertBefore: "before",
                insertAfter: "after",
                replaceAll: "replaceWith"
        },
        function(e, t) {
                v.fn[e] = function(n) {
                        var r, i = 0,
                        s = [],
                        o = v(n),
                        u = o.length,
                        a = this.length === 1 && this[0].parentNode;
                        if ((a == null || a && a.nodeType === 11 && a.childNodes.length === 1) && u === 1) {
                                return o[t](this[0]),
                                this
                        }
                        for (; i < u; i++) {
                                r = (i > 0 ? this.clone(!0) : this).get(),
                                v(o[i])[t](r),
                                s = s.concat(r)
                        }
                        return this.pushStack(s, e, o.selector)
                }
        }),
        v.extend({
                clone: function(e, t, n) {
                        var r, i, s, o;
                        v.support.html5Clone || v.isXMLDoc(e) || !wt.test("<" + e.nodeName + ">") ? o = e.cloneNode(!0) : (kt.innerHTML = e.outerHTML, kt.removeChild(o = kt.firstChild));
                        if ((!v.support.noCloneEvent || !v.support.noCloneChecked) && (e.nodeType === 1 || e.nodeType === 11) && !v.isXMLDoc(e)) {
                                Ot(e, o),
                                r = Mt(e),
                                i = Mt(o);
                                for (s = 0; r[s]; ++s) {
                                        i[s] && Ot(r[s], i[s])
                                }
                        }
                        if (t) {
                                At(e, o);
                                if (n) {
                                        r = Mt(e),
                                        i = Mt(o);
                                        for (s = 0; r[s]; ++s) {
                                                At(r[s], i[s])
                                        }
                                }
                        }
                        return r = i = null,
                        o
                },
                clean: function(e, t, n, r) {
                        var s, o, u, a, f, l, c, h, p, d, m, g, y = t === i && Ct,
                        b = [];
                        if (!t || typeof t.createDocumentFragment == "undefined") {
                                t = i
                        }
                        for (s = 0; (u = e[s]) != null; s++) {
                                typeof u == "number" && (u += "");
                                if (!u) {
                                        continue
                                }
                                if (typeof u == "string") {
                                        if (!gt.test(u)) {
                                                u = t.createTextNode(u)
                                        } else {
                                                y = y || lt(t),
                                                c = t.createElement("div"),
                                                y.appendChild(c),
                                                u = u.replace(dt, "<$1></$2>"),
                                                a = (vt.exec(u) || ["", ""])[1].toLowerCase(),
                                                f = Nt[a] || Nt._default,
                                                l = f[0],
                                                c.innerHTML = f[1] + u + f[2];
                                                while (l--) {
                                                        c = c.lastChild
                                                }
                                                if (!v.support.tbody) {
                                                        h = mt.test(u),
                                                        p = a === "table" && !h ? c.firstChild && c.firstChild.childNodes: f[1] === "<table>" && !h ? c.childNodes: [];
                                                        for (o = p.length - 1; o >= 0; --o) {
                                                                v.nodeName(p[o], "tbody") && !p[o].childNodes.length && p[o].parentNode.removeChild(p[o])
                                                        }
                                                } ! v.support.leadingWhitespace && pt.test(u) && c.insertBefore(t.createTextNode(pt.exec(u)[0]), c.firstChild),
                                                u = c.childNodes,
                                                c.parentNode.removeChild(c)
                                        }
                                }
                                u.nodeType ? b.push(u) : v.merge(b, u)
                        }
                        c && (u = c = y = null);
                        if (!v.support.appendChecked) {
                                for (s = 0; (u = b[s]) != null; s++) {
                                        v.nodeName(u, "input") ? _t(u) : typeof u.getElementsByTagName != "undefined" && v.grep(u.getElementsByTagName("input"), _t)
                                }
                        }
                        if (n) {
                                m = function(e) {
                                        if (!e.type || xt.test(e.type)) {
                                                return r ? r.push(e.parentNode ? e.parentNode.removeChild(e) : e) : n.appendChild(e)
                                        }
                                };
                                for (s = 0; (u = b[s]) != null; s++) {
                                        if (!v.nodeName(u, "script") || !m(u)) {
                                                n.appendChild(u),
                                                typeof u.getElementsByTagName != "undefined" && (g = v.grep(v.merge([], u.getElementsByTagName("script")), m), b.splice.apply(b, [s + 1, 0].concat(g)), s += g.length)
                                        }
                                }
                        }
                        return b
                },
                cleanData: function(e, t) {
                        var n, r, i, s, o = 0,
                        u = v.expando,
                        a = v.cache,
                        f = v.support.deleteExpando,
                        l = v.event.special;
                        for (; (i = e[o]) != null; o++) {
                                if (t || v.acceptData(i)) {
                                        r = i[u],
                                        n = r && a[r];
                                        if (n) {
                                                if (n.events) {
                                                        for (s in n.events) {
                                                                l[s] ? v.event.remove(i, s) : v.removeEvent(i, s, n.handle)
                                                        }
                                                }
                                                a[r] && (delete a[r], f ? delete i[u] : i.removeAttribute ? i.removeAttribute(u) : i[u] = null, v.deletedIds.push(r))
                                        }
                                }
                        }
                }
        }),
        function() {
                var e, t;
                v.uaMatch = function(e) {
                        e = e.toLowerCase();
                        var t = /(chrome)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || e.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e) || [];
                        return {
                                browser: t[1] || "",
                                version: t[2] || "0"
                        }
                },
                e = v.uaMatch(o.userAgent),
                t = {},
                e.browser && (t[e.browser] = !0, t.version = e.version),
                t.chrome ? t.webkit = !0 : t.webkit && (t.safari = !0),
                v.browser = t,
                v.sub = function() {
                        function e(t, n) {
                                return new e.fn.init(t, n)
                        }
                        v.extend(!0, e, this),
                        e.superclass = this,
                        e.fn = e.prototype = this(),
                        e.fn.constructor = e,
                        e.sub = this.sub,
                        e.fn.init = function(r, i) {
                                return i && i instanceof v && !(i instanceof e) && (i = e(i)),
                                v.fn.init.call(this, r, i, t)
                        },
                        e.fn.init.prototype = e.fn;
                        var t = e(i);
                        return e
                }
        } ();
        var Dt, Pt, Ht, Bt = /alpha\([^)]*\)/i,
        jt = /opacity=([^)]*)/,
        Ft = /^(top|right|bottom|left)$/,
        It = /^(none|table(?!-c[ea]).+)/,
        qt = /^margin/,
        Rt = new RegExp("^(" + m + ")(.*)$", "i"),
        Ut = new RegExp("^(" + m + ")(?!px)[a-z%]+$", "i"),
        zt = new RegExp("^([-+])=(" + m + ")", "i"),
        Wt = {
                BODY: "block"
        },
        Xt = {
                position: "absolute",
                visibility: "hidden",
                display: "block"
        },
        Vt = {
                letterSpacing: 0,
                fontWeight: 400
        },
        $t = ["Top", "Right", "Bottom", "Left"],
        Jt = ["Webkit", "O", "Moz", "ms"],
        Kt = v.fn.toggle;
        v.fn.extend({
                css: function(e, n) {
                        return v.access(this,
                        function(e, n, r) {
                                return r !== t ? v.style(e, n, r) : v.css(e, n)
                        },
                        e, n, arguments.length > 1)
                },
                show: function() {
                        return Yt(this, !0)
                },
                hide: function() {
                        return Yt(this)
                },
                toggle: function(e, t) {
                        var n = typeof e == "boolean";
                        return v.isFunction(e) && v.isFunction(t) ? Kt.apply(this, arguments) : this.each(function() { (n ? e: Gt(this)) ? v(this).show() : v(this).hide()
                        })
                }
        }),
        v.extend({
                cssHooks: {
                        opacity: {
                                get: function(e, t) {
                                        if (t) {
                                                var n = Dt(e, "opacity");
                                                return n === "" ? "1": n
                                        }
                                }
                        }
                },
                cssNumber: {
                        fillOpacity: !0,
                        fontWeight: !0,
                        lineHeight: !0,
                        opacity: !0,
                        orphans: !0,
                        widows: !0,
                        zIndex: !0,
                        zoom: !0
                },
                cssProps: {
                        "float": v.support.cssFloat ? "cssFloat": "styleFloat"
                },
                style: function(e, n, r, i) {
                        if (!e || e.nodeType === 3 || e.nodeType === 8 || !e.style) {
                                return
                        }
                        var s, o, u, a = v.camelCase(n),
                        f = e.style;
                        n = v.cssProps[a] || (v.cssProps[a] = Qt(f, a)),
                        u = v.cssHooks[n] || v.cssHooks[a];
                        if (r === t) {
                                return u && "get" in u && (s = u.get(e, !1, i)) !== t ? s: f[n]
                        }
                        o = typeof r,
                        o === "string" && (s = zt.exec(r)) && (r = (s[1] + 1) * s[2] + parseFloat(v.css(e, n)), o = "number");
                        if (r == null || o === "number" && isNaN(r)) {
                                return
                        }
                        o === "number" && !v.cssNumber[a] && (r += "px");
                        if (!u || !("set" in u) || (r = u.set(e, r, i)) !== t) {
                                try {
                                        f[n] = r
                                } catch(l) {}
                        }
                },
                css: function(e, n, r, i) {
                        var s, o, u, a = v.camelCase(n);
                        return n = v.cssProps[a] || (v.cssProps[a] = Qt(e.style, a)),
                        u = v.cssHooks[n] || v.cssHooks[a],
                        u && "get" in u && (s = u.get(e, !0, i)),
                        s === t && (s = Dt(e, n)),
                        s === "normal" && n in Vt && (s = Vt[n]),
                        r || i !== t ? (o = parseFloat(s), r || v.isNumeric(o) ? o || 0 : s) : s
                },
                swap: function(e, t, n) {
                        var r, i, s = {};
                        for (i in t) {
                                s[i] = e.style[i],
                                e.style[i] = t[i]
                        }
                        r = n.call(e);
                        for (i in t) {
                                e.style[i] = s[i]
                        }
                        return r
                }
        }),
        e.getComputedStyle ? Dt = function(t, n) {
                var r, i, s, o, u = e.getComputedStyle(t, null),
                a = t.style;
                return u && (r = u.getPropertyValue(n) || u[n], r === "" && !v.contains(t.ownerDocument, t) && (r = v.style(t, n)), Ut.test(r) && qt.test(n) && (i = a.width, s = a.minWidth, o = a.maxWidth, a.minWidth = a.maxWidth = a.width = r, r = u.width, a.width = i, a.minWidth = s, a.maxWidth = o)),
                r
        }: i.documentElement.currentStyle && (Dt = function(e, t) {
                var n, r, i = e.currentStyle && e.currentStyle[t],
                s = e.style;
                return i == null && s && s[t] && (i = s[t]),
                Ut.test(i) && !Ft.test(t) && (n = s.left, r = e.runtimeStyle && e.runtimeStyle.left, r && (e.runtimeStyle.left = e.currentStyle.left), s.left = t === "fontSize" ? "1em": i, i = s.pixelLeft + "px", s.left = n, r && (e.runtimeStyle.left = r)),
                i === "" ? "auto": i
        }),
        v.each(["height", "width"],
        function(e, t) {
                v.cssHooks[t] = {
                        get: function(e, n, r) {
                                if (n) {
                                        return e.offsetWidth === 0 && It.test(Dt(e, "display")) ? v.swap(e, Xt,
                                        function() {
                                                return tn(e, t, r)
                                        }) : tn(e, t, r)
                                }
                        },
                        set: function(e, n, r) {
                                return Zt(e, n, r ? en(e, t, r, v.support.boxSizing && v.css(e, "boxSizing") === "border-box") : 0)
                        }
                }
        }),
        v.support.opacity || (v.cssHooks.opacity = {
                get: function(e, t) {
                        return jt.test((t && e.currentStyle ? e.currentStyle.filter: e.style.filter) || "") ? 0.01 * parseFloat(RegExp.$1) + "": t ? "1": ""
                },
                set: function(e, t) {
                        var n = e.style,
                        r = e.currentStyle,
                        i = v.isNumeric(t) ? "alpha(opacity=" + t * 100 + ")": "",
                        s = r && r.filter || n.filter || "";
                        n.zoom = 1;
                        if (t >= 1 && v.trim(s.replace(Bt, "")) === "" && n.removeAttribute) {
                                n.removeAttribute("filter");
                                if (r && !r.filter) {
                                        return
                                }
                        }
                        n.filter = Bt.test(s) ? s.replace(Bt, i) : s + " " + i
                }
        }),
        v(function() {
                v.support.reliableMarginRight || (v.cssHooks.marginRight = {
                        get: function(e, t) {
                                return v.swap(e, {
                                        display: "inline-block"
                                },
                                function() {
                                        if (t) {
                                                return Dt(e, "marginRight")
                                        }
                                })
                        }
                }),
                !v.support.pixelPosition && v.fn.position && v.each(["top", "left"],
                function(e, t) {
                        v.cssHooks[t] = {
                                get: function(e, n) {
                                        if (n) {
                                                var r = Dt(e, t);
                                                return Ut.test(r) ? v(e).position()[t] + "px": r
                                        }
                                }
                        }
                })
        }),
        v.expr && v.expr.filters && (v.expr.filters.hidden = function(e) {
                return e.offsetWidth === 0 && e.offsetHeight === 0 || !v.support.reliableHiddenOffsets && (e.style && e.style.display || Dt(e, "display")) === "none"
        },
        v.expr.filters.visible = function(e) {
                return ! v.expr.filters.hidden(e)
        }),
        v.param = function(e, n) {
                var r, i = [],
                s = function(e, t) {
                        t = v.isFunction(t) ? t() : t == null ? "": t,
                        i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
                };
                n === t && (n = v.ajaxSettings && v.ajaxSettings.traditional);
                if (v.isArray(e) || e.jquery && !v.isPlainObject(e)) {
                        v.each(e,
                        function() {
                                s(this.name, this.value)
                        })
                } else {
                        for (r in e) {
                                fn(r, e[r], n, s)
                        }
                }
                return i.join("&").replace(rn, "+")
        };
        var ln, cn, hn = /#.*$/,
        pn = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg,
        dn = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
        vn = /^(?:GET|HEAD)$/,
        mn = /^\/\//,
        gn = /\?/,
        yn = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
        bn = /([?&])_=[^&]*/,
        wn = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
        En = v.fn.load,
        Sn = {},
        xn = {},
        Tn = ["*/"] + ["*"];
        try {
                cn = s.href
        } catch(Nn) {
                cn = i.createElement("a"),
                cn.href = "",
                cn = cn.href
        }
        ln = wn.exec(cn.toLowerCase()) || [],
        v.fn.load = function(e, n, r) {
                if (typeof e != "string" && En) {
                        return En.apply(this, arguments)
                }
                if (!this.length) {
                        return this
                }
                var i, s, o, u = this,
                a = e.indexOf(" ");
                return a >= 0 && (i = e.slice(a, e.length), e = e.slice(0, a)),
                v.isFunction(n) ? (r = n, n = t) : n && typeof n == "object" && (s = "POST"),
                v.ajax({
                        url: e,
                        type: s,
                        dataType: "html",
                        data: n,
                        complete: function(e, t) {
                                r && u.each(r, o || [e.responseText, t, e])
                        }
                }).done(function(e) {
                        o = arguments,
                        u.html(i ? v("<div>").append(e.replace(yn, "")).find(i) : e)
                }),
                this
        },
        v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
        function(e, t) {
                v.fn[t] = function(e) {
                        return this.on(t, e)
                }
        }),
        v.extend({
                getScript: function(e, n) {
                        return v.get(e, t, n, "script")
                },
                getJSON: function(e, t, n) {
                        return v.get(e, t, n, "json")
                },
                ajaxSetup: function(e, t) {
                        return t ? Ln(e, v.ajaxSettings) : (t = e, e = v.ajaxSettings),
                        Ln(e, t),
                        e
                },
                ajaxSettings: {
                        url: cn,
                        isLocal: dn.test(ln[1]),
                        global: !0,
                        type: "GET",
                        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                        processData: !0,
                        async: !0,
                        accepts: {
                                xml: "application/xml, text/xml",
                                html: "text/html",
                                text: "text/plain",
                                json: "application/json, text/javascript",
                                "*": Tn
                        },
                        contents: {
                                xml: /xml/,
                                html: /html/,
                                json: /json/
                        },
                        responseFields: {
                                xml: "responseXML",
                                text: "responseText"
                        },
                        converters: {
                                "* text": e.String,
                                "text html": !0,
                                "text json": v.parseJSON,
                                "text xml": v.parseXML
                        },
                        flatOptions: {
                                context: !0,
                                url: !0
                        }
                },
                ajaxPrefilter: Cn(Sn),
                ajaxTransport: Cn(xn),
                ajax: function(e, n) {
                        function T(e, n, s, a) {
                                var l, y, b, w, S, T = n;
                                if (E === 2) {
                                        return
                                }
                                E = 2,
                                u && clearTimeout(u),
                                o = t,
                                i = a || "",
                                x.readyState = e > 0 ? 4 : 0,
                                s && (w = An(c, x, s));
                                if (e >= 200 && e < 300 || e === 304) {
                                        c.ifModified && (S = x.getResponseHeader("Last-Modified"), S && (v.lastModified[r] = S), S = x.getResponseHeader("Etag"), S && (v.etag[r] = S)),
                                        e === 304 ? (T = "notmodified", l = !0) : (l = On(c, w), T = l.state, y = l.data, b = l.error, l = !b)
                                } else {
                                        b = T;
                                        if (!T || e) {
                                                T = "error",
                                                e < 0 && (e = 0)
                                        }
                                }
                                x.status = e,
                                x.statusText = (n || T) + "",
                                l ? d.resolveWith(h, [y, T, x]) : d.rejectWith(h, [x, T, b]),
                                x.statusCode(g),
                                g = t,
                                f && p.trigger("ajax" + (l ? "Success": "Error"), [x, c, l ? y: b]),
                                m.fireWith(h, [x, T]),
                                f && (p.trigger("ajaxComplete", [x, c]), --v.active || v.event.trigger("ajaxStop"))
                        }
                        typeof e == "object" && (n = e, e = t),
                        n = n || {};
                        var r, i, s, o, u, a, f, l, c = v.ajaxSetup({},
                        n),
                        h = c.context || c,
                        p = h !== c && (h.nodeType || h instanceof v) ? v(h) : v.event,
                        d = v.Deferred(),
                        m = v.Callbacks("once memory"),
                        g = c.statusCode || {},
                        b = {},
                        w = {},
                        E = 0,
                        S = "canceled",
                        x = {
                                readyState: 0,
                                setRequestHeader: function(e, t) {
                                        if (!E) {
                                                var n = e.toLowerCase();
                                                e = w[n] = w[n] || e,
                                                b[e] = t
                                        }
                                        return this
                                },
                                getAllResponseHeaders: function() {
                                        return E === 2 ? i: null
                                },
                                getResponseHeader: function(e) {
                                        var n;
                                        if (E === 2) {
                                                if (!s) {
                                                        s = {};
                                                        while (n = pn.exec(i)) {
                                                                s[n[1].toLowerCase()] = n[2]
                                                        }
                                                }
                                                n = s[e.toLowerCase()]
                                        }
                                        return n === t ? null: n
                                },
                                overrideMimeType: function(e) {
                                        return E || (c.mimeType = e),
                                        this
                                },
                                abort: function(e) {
                                        return e = e || S,
                                        o && o.abort(e),
                                        T(0, e),
                                        this
                                }
                        };
                        d.promise(x),
                        x.success = x.done,
                        x.error = x.fail,
                        x.complete = m.add,
                        x.statusCode = function(e) {
                                if (e) {
                                        var t;
                                        if (E < 2) {
                                                for (t in e) {
                                                        g[t] = [g[t], e[t]]
                                                }
                                        } else {
                                                t = e[x.status],
                                                x.always(t)
                                        }
                                }
                                return this
                        },
                        c.url = ((e || c.url) + "").replace(hn, "").replace(mn, ln[1] + "//"),
                        c.dataTypes = v.trim(c.dataType || "*").toLowerCase().split(y),
                        c.crossDomain == null && (a = wn.exec(c.url.toLowerCase()), c.crossDomain = !(!a || a[1] === ln[1] && a[2] === ln[2] && (a[3] || (a[1] === "http:" ? 80 : 443)) == (ln[3] || (ln[1] === "http:" ? 80 : 443)))),
                        c.data && c.processData && typeof c.data != "string" && (c.data = v.param(c.data, c.traditional)),
                        kn(Sn, c, n, x);
                        if (E === 2) {
                                return x
                        }
                        f = c.global,
                        c.type = c.type.toUpperCase(),
                        c.hasContent = !vn.test(c.type),
                        f && v.active++===0 && v.event.trigger("ajaxStart");
                        if (!c.hasContent) {
                                c.data && (c.url += (gn.test(c.url) ? "&": "?") + c.data, delete c.data),
                                r = c.url;
                                if (c.cache === !1) {
                                        var N = v.now(),
                                        C = c.url.replace(bn, "$1_=" + N);
                                        c.url = C + (C === c.url ? (gn.test(c.url) ? "&": "?") + "_=" + N: "")
                                }
                        } (c.data && c.hasContent && c.contentType !== !1 || n.contentType) && x.setRequestHeader("Content-Type", c.contentType),
                        c.ifModified && (r = r || c.url, v.lastModified[r] && x.setRequestHeader("If-Modified-Since", v.lastModified[r]), v.etag[r] && x.setRequestHeader("If-None-Match", v.etag[r])),
                        x.setRequestHeader("Accept", c.dataTypes[0] && c.accepts[c.dataTypes[0]] ? c.accepts[c.dataTypes[0]] + (c.dataTypes[0] !== "*" ? ", " + Tn + "; q=0.01": "") : c.accepts["*"]);
                        for (l in c.headers) {
                                x.setRequestHeader(l, c.headers[l])
                        }
                        if (!c.beforeSend || c.beforeSend.call(h, x, c) !== !1 && E !== 2) {
                                S = "abort";
                                for (l in {
                                        success: 1,
                                        error: 1,
                                        complete: 1
                                }) {
                                        x[l](c[l])
                                }
                                o = kn(xn, c, n, x);
                                if (!o) {
                                        T( - 1, "No Transport")
                                } else {
                                        x.readyState = 1,
                                        f && p.trigger("ajaxSend", [x, c]),
                                        c.async && c.timeout > 0 && (u = setTimeout(function() {
                                                x.abort("timeout")
                                        },
                                        c.timeout));
                                        try {
                                                E = 1,
                                                o.send(b, T)
                                        } catch(k) {
                                                if (! (E < 2)) {
                                                        throw k
                                                }
                                                T( - 1, k)
                                        }
                                }
                                return x
                        }
                        return x.abort()
                },
                active: 0,
                lastModified: {},
                etag: {}
        });

        var Hn, Bn = e.ActiveXObject ?
        function() {
                for (var e in Hn) {
                        Hn[e](0, 1)
                }
        }: !1,
        jn = 0;
        v.ajaxSettings.xhr = e.ActiveXObject ?
        function() {
                return ! this.isLocal && Fn() || In()
        }: Fn,
        function(e) {
                v.extend(v.support, {
                        ajax: !!e,
                        cors: !!e && "withCredentials" in e
                })
        } (v.ajaxSettings.xhr()),
        v.support.ajax && v.ajaxTransport(function(n) {
                if (!n.crossDomain || v.support.cors) {
                        var r;
                        return {
                                send: function(i, s) {
                                        var o, u, a = n.xhr();
                                        n.username ? a.open(n.type, n.url, n.async, n.username, n.password) : a.open(n.type, n.url, n.async);
                                        if (n.xhrFields) {
                                                for (u in n.xhrFields) {
                                                        a[u] = n.xhrFields[u]
                                                }
                                        }
                                        n.mimeType && a.overrideMimeType && a.overrideMimeType(n.mimeType),
                                        !n.crossDomain && !i["X-Requested-With"] && (i["X-Requested-With"] = "XMLHttpRequest");
                                        try {
                                                for (u in i) {
                                                        a.setRequestHeader(u, i[u])
                                                }
                                        } catch(f) {}
                                        a.send(n.hasContent && n.data || null),
                                        r = function(e, i) {
                                                var u, f, l, c, h;
                                                try {
                                                        if (r && (i || a.readyState === 4)) {
                                                                r = t,
                                                                o && (a.onreadystatechange = v.noop, Bn && delete Hn[o]);
                                                                if (i) {
                                                                        a.readyState !== 4 && a.abort()
                                                                } else {
                                                                        u = a.status,
                                                                        l = a.getAllResponseHeaders(),
                                                                        c = {},
                                                                        h = a.responseXML,
                                                                        h && h.documentElement && (c.xml = h);
                                                                        try {
                                                                                c.text = a.responseText
                                                                        } catch(p) {}
                                                                        try {
                                                                                f = a.statusText
                                                                        } catch(p) {
                                                                                f = ""
                                                                        } ! u && n.isLocal && !n.crossDomain ? u = c.text ? 200 : 404 : u === 1223 && (u = 204)
                                                                }
                                                        }
                                                } catch(d) {
                                                        i || s( - 1, d)
                                                }
                                                c && s(u, f, c, l)
                                        },
                                        n.async ? a.readyState === 4 ? setTimeout(r, 0) : (o = ++jn, Bn && (Hn || (Hn = {},
                                        v(e).unload(Bn)), Hn[o] = r), a.onreadystatechange = r) : r()
                                },
                                abort: function() {
                                        r && r(0, 1)
                                }
                        }
                }
        });
        var qn, Rn, Un = /^(?:toggle|show|hide)$/,
        zn = new RegExp("^(?:([-+])=|)(" + m + ")([a-z%]*)$", "i"),
        Wn = /queueHooks$/,
        Xn = [Gn],
        Vn = {
                "*": [function(e, t) {
                        var n, r, i = this.createTween(e, t),
                        s = zn.exec(t),
                        o = i.cur(),
                        u = +o || 0,
                        a = 1,
                        f = 20;
                        if (s) {
                                n = +s[2],
                                r = s[3] || (v.cssNumber[e] ? "": "px");
                                if (r !== "px" && u) {
                                        u = v.css(i.elem, e, !0) || n || 1;
                                        do {
                                                a = a || ".5", u /= a, v.style(i.elem, e, u + r)
                                        } while ( a !== ( a = i . cur () / o) && a !== 1 && --f)
                                }
                                i.unit = r,
                                i.start = u,
                                i.end = s[1] ? u + (s[1] + 1) * n: n
                        }
                        return i
                }]
        };
        v.Animation = v.extend(Kn, {
                tweener: function(e, t) {
                        v.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" ");
                        var n, r = 0,
                        i = e.length;
                        for (; r < i; r++) {
                                n = e[r],
                                Vn[n] = Vn[n] || [],
                                Vn[n].unshift(t)
                        }
                },
                prefilter: function(e, t) {
                        t ? Xn.unshift(e) : Xn.push(e)
                }
        }),
        v.Tween = Yn,
        Yn.prototype = {
                constructor: Yn,
                init: function(e, t, n, r, i, s) {
                        this.elem = e,
                        this.prop = n,
                        this.easing = i || "swing",
                        this.options = t,
                        this.start = this.now = this.cur(),
                        this.end = r,
                        this.unit = s || (v.cssNumber[n] ? "": "px")
                },

                run: function(e) {
                        var t, n = Yn.propHooks[this.prop];
                        return this.options.duration ? this.pos = t = v.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e,
                        this.now = (this.end - this.start) * t + this.start,
                        this.options.step && this.options.step.call(this.elem, this.now, this),
                        n && n.set ? n.set(this) : Yn.propHooks._default.set(this),
                        this
                }
        },
        Yn.prototype.init.prototype = Yn.prototype,
        Yn.propHooks = {
                _default: {
                        get: function(e) {
                                var t;
                                return e.elem[e.prop] == null || !!e.elem.style && e.elem.style[e.prop] != null ? (t = v.css(e.elem, e.prop, !1, ""), !t || t === "auto" ? 0 : t) : e.elem[e.prop]
                        },
                        set: function(e) {
                                v.fx.step[e.prop] ? v.fx.step[e.prop](e) : e.elem.style && (e.elem.style[v.cssProps[e.prop]] != null || v.cssHooks[e.prop]) ? v.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now
                        }
                }
        },
        Yn.propHooks.scrollTop = Yn.propHooks.scrollLeft = {
                set: function(e) {
                        e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
                }
        },
        v.each(["toggle", "show", "hide"],
        function(e, t) {
                var n = v.fn[t];
                v.fn[t] = function(r, i, s) {
                        return r == null || typeof r == "boolean" || !e && v.isFunction(r) && v.isFunction(i) ? n.apply(this, arguments) : this.animate(Zn(t, !0), r, i, s)
                }
        }),
        v.fn.extend({
                fadeTo: function(e, t, n, r) {
                        return this.filter(Gt).css("opacity", 0).show().end().animate({
                                opacity: t
                        },
                        e, n, r)
                },
                animate: function(e, t, n, r) {
                        var i = v.isEmptyObject(e),
                        s = v.speed(t, n, r),
                        o = function() {
                                var t = Kn(this, v.extend({},
                                e), s);
                                i && t.stop(!0)
                        };
                        return i || s.queue === !1 ? this.each(o) : this.queue(s.queue, o)
                },
                stop: function(e, n, r) {
                        var i = function(e) {
                                var t = e.stop;
                                delete e.stop,
                                t(r)
                        };
                        return typeof e != "string" && (r = n, n = e, e = t),
                        n && e !== !1 && this.queue(e || "fx", []),
                        this.each(function() {
                                var t = !0,
                                n = e != null && e + "queueHooks",
                                s = v.timers,
                                o = v._data(this);
                                if (n) {
                                        o[n] && o[n].stop && i(o[n])
                                } else {
                                        for (n in o) {
                                                o[n] && o[n].stop && Wn.test(n) && i(o[n])
                                        }
                                }
                                for (n = s.length; n--;) {
                                        s[n].elem === this && (e == null || s[n].queue === e) && (s[n].anim.stop(r), t = !1, s.splice(n, 1))
                                } (t || !r) && v.dequeue(this, e)
                        })
                }
        }),
        v.speed = function(e, t, n) {
                var r = e && typeof e == "object" ? v.extend({},
                e) : {
                        complete: n || !n && t || v.isFunction(e) && e,
                        duration: e,
                        easing: n && t || t && !v.isFunction(t) && t
                };
                r.duration = v.fx.off ? 0 : typeof r.duration == "number" ? r.duration: r.duration in v.fx.speeds ? v.fx.speeds[r.duration] : v.fx.speeds._default;
                if (r.queue == null || r.queue === !0) {
                        r.queue = "fx"
                }
                return r.old = r.complete,
                r.complete = function() {
                        v.isFunction(r.old) && r.old.call(this),
                        r.queue && v.dequeue(this, r.queue)
                },
                r
        },
        v.easing = {
                linear: function(e) {
                        return e
                },
                swing: function(e) {
                        return 0.5 - Math.cos(e * Math.PI) / 2
                }
        },
        v.timers = [],
        v.fx = Yn.prototype.init,
        v.fx.tick = function() {
                var e, n = v.timers,
                r = 0;
                qn = v.now();
                for (; r < n.length; r++) {
                        e = n[r],
                        !e() && n[r] === e && n.splice(r--, 1)
                }
                n.length || v.fx.stop(),
                qn = t
        },
        v.fx.timer = function(e) {
                e() && v.timers.push(e) && !Rn && (Rn = setInterval(v.fx.tick, v.fx.interval))
        },
        v.fx.interval = 13,
        v.fx.stop = function() {
                clearInterval(Rn),
                Rn = null
        },
        v.fx.speeds = {
                slow: 600,
                fast: 200,
                _default: 400
        },
        v.fx.step = {},
        v.expr && v.expr.filters && (v.expr.filters.animated = function(e) {
                return v.grep(v.timers,
                function(t) {
                        return e === t.elem
                }).length
        });
        var er = /^(?:body|html)$/i;
        v.fn.offset = function(e) {
                if (arguments.length) {
                        return e === t ? this: this.each(function(t) {
                                v.offset.setOffset(this, e, t)
                        })
                }
                var n, r, i, s, o, u, a, f = {
                        top: 0,
                        left: 0
                },
                l = this[0],
                c = l && l.ownerDocument;
                if (!c) {
                        return
                }
                return (r = c.body) === l ? v.offset.bodyOffset(l) : (n = c.documentElement, v.contains(n, l) ? (typeof l.getBoundingClientRect != "undefined" && (f = l.getBoundingClientRect()), i = tr(c), s = n.clientTop || r.clientTop || 0, o = n.clientLeft || r.clientLeft || 0, u = i.pageYOffset || n.scrollTop, a = i.pageXOffset || n.scrollLeft, {
                        top: f.top + u - s,
                        left: f.left + a - o
                }) : f)
        },
        v.offset = {
                bodyOffset: function(e) {
                        var t = e.offsetTop,
                        n = e.offsetLeft;
                        return v.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(v.css(e, "marginTop")) || 0, n += parseFloat(v.css(e, "marginLeft")) || 0),
                        {
                                top: t,
                                left: n
                        }
                },
                setOffset: function(e, t, n) {
                        var r = v.css(e, "position");
                        r === "static" && (e.style.position = "relative");
                        var i = v(e),
                        s = i.offset(),
                        o = v.css(e, "top"),
                        u = v.css(e, "left"),
                        a = (r === "absolute" || r === "fixed") && v.inArray("auto", [o, u]) > -1,
                        f = {},
                        l = {},
                        c,
                        h;
                        a ? (l = i.position(), c = l.top, h = l.left) : (c = parseFloat(o) || 0, h = parseFloat(u) || 0),
                        v.isFunction(t) && (t = t.call(e, n, s)),
                        t.top != null && (f.top = t.top - s.top + c),
                        t.left != null && (f.left = t.left - s.left + h),
                        "using" in t ? t.using.call(e, f) : i.css(f)
                }
        },
        v.fn.extend({
                position: function() {
                        if (!this[0]) {
                                return
                        }
                        var e = this[0],
                        t = this.offsetParent(),
                        n = this.offset(),
                        r = er.test(t[0].nodeName) ? {
                                top: 0,
                                left: 0
                        }: t.offset();
                        return n.top -= parseFloat(v.css(e, "marginTop")) || 0,
                        n.left -= parseFloat(v.css(e, "marginLeft")) || 0,
                        r.top += parseFloat(v.css(t[0], "borderTopWidth")) || 0,
                        r.left += parseFloat(v.css(t[0], "borderLeftWidth")) || 0,
                        {
                                top: n.top - r.top,
                                left: n.left - r.left
                        }
                },
                offsetParent: function() {
                        return this.map(function() {
                                var e = this.offsetParent || i.body;
                                while (e && !er.test(e.nodeName) && v.css(e, "position") === "static") {
                                        e = e.offsetParent
                                }
                                return e || i.body
                        })
                }
        }),
        v.each({
                scrollLeft: "pageXOffset",
                scrollTop: "pageYOffset"
        },
        function(e, n) {
                var r = /Y/.test(n);
                v.fn[e] = function(i) {
                        return v.access(this,
                        function(e, i, s) {
                                var o = tr(e);
                                if (s === t) {
                                        return o ? n in o ? o[n] : o.document.documentElement[i] : e[i]
                                }
                                o ? o.scrollTo(r ? v(o).scrollLeft() : s, r ? s: v(o).scrollTop()) : e[i] = s
                        },
                        e, i, arguments.length, null)
                }
        }),
        v.each({
                Height: "height",
                Width: "width"
        },
        function(e, n) {
                v.each({
                        padding: "inner" + e,
                        content: n,
                        "": "outer" + e
                },
                function(r, i) {
                        v.fn[i] = function(i, s) {
                                var o = arguments.length && (r || typeof i != "boolean"),
                                u = r || (i === !0 || s === !0 ? "margin": "border");
                                return v.access(this,
                                function(n, r, i) {
                                        var s;
                                        return v.isWindow(n) ? n.document.documentElement["client" + e] : n.nodeType === 9 ? (s = n.documentElement, Math.max(n.body["scroll" + e], s["scroll" + e], n.body["offset" + e], s["offset" + e], s["client" + e])) : i === t ? v.css(n, r, i, u) : v.style(n, r, i, u)
                                },
                                n, o ? i: t, o, null)
                        }
                })
        }),
        e.jQuery = e.$ = v,
        typeof define == "function" && define.amd && define.amd.jQuery && define("jquery", [],
        function() {
                return v
        })
})(window); (function(global, factory) {
        if (typeof module === "object" && typeof module.exports === "object") {
                module.exports = global.document ? factory(global, true) : function(w) {
                        if (!w.document) {
                                throw new Error("Geetest requires a window with a document")
                        }
                        return factory(w)
                }
        } else {
                factory(global)
        }
})(typeof window !== "undefined" ? window: this,
function(window, noGlobal) {
        if (typeof window === "undefined") {
                throw new Error("Geetest requires browser environment")
        }
        var document = window.document;
        var Math = window.Math;
        var head = document.getElementsByTagName("head")[0];

        function _Object(obj) {
                this._obj = obj
        }
        _Object.prototype = {
                _each: function(process) {
                        var _obj = this._obj;
                        for (var k in _obj) {
                                if (_obj.hasOwnProperty(k)) {
                                        process(k, _obj[k])
                                }
                        }
                        return this
                }
        };

        function Config(config) {
                var self = this;
                new _Object(config)._each(function(key, value) {
                        self[key] = value
                })
        }
        Config.prototype = {
                api_server: "api.geetest.com",
                protocol: "http://",
                type_path: "/gettype.php",
                fallback_config: {
                        slide: {
                                static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"],
                                type: "slide",
                                slide: "/static/js/geetest.0.0.0.js"
                        },
                        fullpage: {
                                static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"],
                                type: "fullpage",
                                fullpage: "/static/js/fullpage.0.0.0.js"
                        }
                },
                _get_fallback_config: function() {
                        var self = this;
                        if (isString(self.type)) {
                                return self.fallback_config[self.type]
                        } else {
                                if (self.new_captcha) {
                                        return self.fallback_config.fullpage
                                } else {
                                        return self.fallback_config.slide
                                }
                        }
                },
                _extend: function(obj) {
                        var self = this;
                        new _Object(obj)._each(function(key, value) {
                                self[key] = value
                        })
                }
        };
        var isNumber = function(value) {
                return (typeof value === "number")
        };

        var callbacks = {};
        var status = {};
        var random = function() {
                return parseInt(Math.random() * 10000) + (new Date()).valueOf()
        };
        var loadScript = function(url, cb) {
                var script = document.createElement("script");
                script.charset = "UTF-8";
                script.async = true;
                script.onerror = function() {
                        cb(true)
                };
                var loaded = false;
                script.onload = script.onreadystatechange = function() {
                        if (!loaded && (!script.readyState || "loaded" === script.readyState || "complete" === script.readyState)) {
                                loaded = true;
                                setTimeout(function() {
                                        cb(false)
                                },
                                0)
                        }
                };
                script.src = url;
                head.appendChild(script)
        };
        var normalizeDomain = function(domain) {
                return domain.replace(/^https?:\/\/|\/$/g, "")
        };
        var normalizePath = function(path) {
                path = path.replace(/\/+/g, "/");
                if (path.indexOf("/") !== 0) {
                        path = "/" + path
                }
                return path
        };
        var normalizeQuery = function(query) {
                if (!query) {
                        return ""
                }
                var q = "?";
                new _Object(query)._each(function(key, value) {
                        if (isString(value) || isNumber(value) || isBoolean(value)) {
                                q = q + encodeURIComponent(key) + "=" + encodeURIComponent(value) + "&"
                        }
                });
                if (q === "?") {
                        q = ""
                }
                return q.replace(/&$/, "")
        };
        var makeURL = function(protocol, domain, path, query) {
                domain = normalizeDomain(domain);
                var url = normalizePath(path) + normalizeQuery(query);
                if (domain) {
                        url = protocol + domain + url
                }
                return url
        };
        var load = function(protocol, domains, path, query, cb) {
                var tryRequest = function(at) {
                        var url = makeURL(protocol, domains[at], path, query);
                        loadScript(url,
                        function(err) {
                                if (err) {
                                        if (at >= domains.length - 1) {
                                                cb(true)
                                        } else {
                                                tryRequest(at + 1)
                                        }
                                } else {
                                        cb(false)
                                }
                        })
                };
                tryRequest(0)
        };
        var jsonp = function(domains, path, config, callback) {
                if (isObject(config.getLib)) {
                        config._extend(config.getLib);
                        callback(config);
                        return
                }
                if (config.offline) {
                        callback(config._get_fallback_config());
                        return
                }
                var cb = "geetest_" + random();
                window[cb] = function(data) {
                        if (data.status === "success") {
                                callback(data.data)
                        } else {
                                if (!data.status) {
                                        callback(data)
                                } else {
                                        callback(config._get_fallback_config())
                                }
                        }
                        window[cb] = undefined;
                        try {
                                delete window[cb]
                        } catch(e) {}
                };
                load(config.protocol, domains, path, {
                        gt: config.gt,
                        callback: cb
                },
                function(err) {
                        if (err) {
                                callback(config._get_fallback_config())
                        }
                })
        };
        var throwError = function(errorType, config) {
                var errors = {
                        networkError: "网络错误"
                };
                if (typeof config.onError === "function") {
                        config.onError(errors[errorType])
                } else {
                        throw new Error(errors[errorType])
                }
        };
        var detect = function() {
                return !! window.Geetest
        };
        if (detect()) {
                status.slide = "loaded"
        }
        var initGeetest = function(userConfig, callback) {
                var config = new Config(userConfig);
                if (userConfig.https) {
                        config.protocol = "https://"
                } else {
                        if (!userConfig.protocol) {
                                config.protocol = window.location.protocol + "//"
                        }
                }
                jsonp([config.api_server || config.apiserver], config.type_path, config,
                function(newConfig) {
                        var type = newConfig.type;
                        var init = function() {
                                config._extend(newConfig);
                                callback(new window.Geetest(config))
                        };
                        callbacks[type] = callbacks[type] || [];
                        var s = status[type] || "init";
                        if (s === "init") {
                                status[type] = "loading";
                                callbacks[type].push(init);
                                load(config.protocol, newConfig.static_servers || newConfig.domains, newConfig[type] || newConfig.path, null,
                                function(err) {
                                        if (err) {
                                                status[type] = "fail";
                                                throwError("networkError", config)
                                        } else {
                                                status[type] = "loaded";
                                                var cbs = callbacks[type];
                                                for (var i = 0,
                                                len = cbs.length; i < len; i = i + 1) {
                                                        var cb = cbs[i];
                                                        if (isFunction(cb)) {
                                                                cb()
                                                        }
                                                }
                                                callbacks[type] = []
                                        }
                                })
                        } else {
                                if (s === "loaded") {
                                        init()
                                } else {
                                        if (s === "fail") {
                                                throwError("networkError", config)
                                        } else {
                                                if (s === "loading") {
                                                        callbacks[type].push(init)
                                                }
                                        }
                                }
                        }
                })
        };
        window.initGeetest = initGeetest;
        return initGeetest
});

(function(d) {
        var g, c, f;
        g = {
                speed: 700,
                pause: 4000,
                showItems: 1,
                mousePause: !0,
                height: 0,
                animate: !0,
                margin: 0,
                padding: 0,
                startPaused: !1,
                autoAppend: !0
        };
        c = {
                moveUp: function(a, b) {
                        return c.showNextItem(a, b, "up")
                },
                moveDown: function(a, b) {
                        return c.showNextItem(a, b, "down")
                },
                nextItemState: function(a, b) {
                        var e, c;
                        c = a.element.children("ul");
                        e = a.itemHeight;
                        0 < a.options.height && (e = c.children("li:first").height());
                        e += a.options.margin + 2 * a.options.padding;
                        return {
                                height: e,
                                options: a.options,
                                el: a.element,
                                obj: c,
                                selector: "up" === b ? "li:first": "li:last",
                                dir: b
                        }
                },
                bindMousePausing: function(a) {
                        return function(a, e) {
                                return a.bind("mouseenter",
                                function() {
                                        if (!e.isPaused) {
                                                return e.pausedByCode = !0,
                                                c.stopInterval.call(this),
                                                f.pause.call(this, !0)
                                        }
                                }).bind("mouseleave",
                                function() {
                                        if (!e.isPaused || e.pausedByCode) {
                                                return e.pausedByCode = !1,
                                                f.pause.call(this, !1),
                                                c.startInterval.call(this)
                                        }
                                })
                        }
                } (this),
                setItemLayout: function(a, b, c) {
                        var f;
                        a.css({
                                overflow: "hidden",
                                position: "relative"
                        }).children("ul").css({
                                position: "absolute",
                                margin: 0,
                                padding: 0

                        });
                        return isNaN(c.height) || 0 === c.height ? (a.children("ul").children("li").each(function() {
                                if (d(this).height() > b.itemHeight) {
                                        return b.itemHeight = d(this).height()
                                }
                        }), a.children("ul").children("li").each(function() {
                                return d(this).height(b.itemHeight)
                        }), f = c.margin + 2 * c.padding, a.height((b.itemHeight + f) * c.showItems + c.margin)) : a.height(c.height)
                },
                defaultStateAttribs: function(a, b) {
                        return {
                                itemCount: a.children("ul").children("li").length,
                                itemHeight: 0,
                                itemMargin: 0,
                                element: a,
                                animating: !1,
                                options: b,
                                isPaused: b.startPaused,
                                pausedByCode: !1
                        }
                }
        };
        f = {
                init: function(a) {
                        var b, e;
                        d(this).data("state") && f.stop.call(this);
                        b = jQuery.extend({},
                        g);
                        a = d.extend(b, a);
                        b = d(this);
                        e = c.defaultStateAttribs(b, a);
                        d(this).data("state", e);
                        c.setItemLayout(b, e, a);
                        a.startPaused || c.startInterval.call(this);
                        if (a.mousePause) {
                                return c.bindMousePausing(b, e)
                        }
                },

                remove: function() {
                        var a;
                        a = c.getState("remove", this);
                        c.stopInterval.call(this);
                        a = a.element;
                        a.unbind();
                        return a.remove()
                }
        };
        return d.fn.vTicker = function(a) {
                return f[a] ? f[a].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" !== typeof a && a ? d.error("Method " + a + " does not exist on jQuery.vTicker") : f.init.apply(this, arguments)
        }
})(jQuery);