!
function(t) {
    function e(i) {
        if (n[i]) return n[i].exports;
        var r = n[i] = {
            exports: {},
            id: i,
            loaded: !1
        };
        return t[i].call(r.exports, r, r.exports, e),
        r.loaded = !0,
        r.exports
    }
    var n = {};
    return e.m = t,
    e.c = n,
    e.p = "//imgcache.qq.com/qcloud/main/scripts/",
    e(0)
} ([function(t, e, n) {
    function i(t, e) {
        var n = o(t);
        n.data("hammer") || n.data("hammer", new r(n[0], e))
    }
    var r = n(1),
    o = n(2);
    o.fn.hammer = function(t) {
        return this.each(function() {
            i(this, t)
        })
    },
    r.Manager.prototype.emit = function(t) {
        return function(e, n) {
            t.call(this, e, n),
            o(this.element).trigger({
                type: e,
                gesture: n
            })
        }
    } (r.Manager.prototype.emit)
},
function(t, e) {
    /*! Hammer.JS - v2.0.8 - 2016-09-30
	 * http://hammerjs.github.io/
	 *
	 * Copyright (c)  Jorik Tangelder;
	 * Licensed under the MIT license */
    !
    function(e, n, i, r) {
        "use strict";
        function o(t, e) {
            return t === r ? e: t
        }
        function s(t, e) {
            for (var n = void 0,
            i = void 0,
            o = e[0].toUpperCase() + e.slice(1), s = 0; s < B.length;) {
                if (n = B[s], i = n ? n + o: e, i in t) return i;
                s++
            }
            return r
        }
        function a() {
            if (!nt) return ! 1;
            var t = {},
            n = e.CSS && e.CSS.supports;
            return ["auto", "manipulation", "pan-y", "pan-x", "pan-x pan-y", "none"].forEach(function(i) {
                return t[i] = !n || e.CSS.supports("touch-action", i)
            }),
            t
        }
        function u() {
            return Wt++
        }
        function c(t, e, n) {
            var i = void 0;
            if (t) if (t.forEach) t.forEach(e, n);
            else if (t.length !== r) for (i = 0; i < t.length;) e.call(n, t[i], i, t),
            i++;
            else for (i in t) t.hasOwnProperty(i) && e.call(n, t[i], i, t)
        }
        function h(t, e, n) {
            return !! Array.isArray(t) && (c(t, n[e], n), !0)
        }
        function l(t, e, n) {
            if (t.indexOf && !n) return t.indexOf(e);
            for (var i = 0; i < t.length;) {
                if (n && t[i][n] == e || !n && t[i] === e) return i;
                i++
            }
            return - 1
        }
        function p(t, e) {
            return ("undefined" == typeof t ? "undefined": Lt(t)) === $ ? t.apply(e ? e[0] || r: r, e) : t
        }
        function f(t, e) {
            var n = e.manager;
            return n ? n.get(t) : t
        }
        function v(t) {
            return t & Xt ? "cancel": t & zt ? "end": t & Rt ? "move": t & Mt ? "start": ""
        }
        function y(t) {
            return t === It ? "down": t === wt ? "up": t === Ot ? "left": t === Pt ? "right": ""
        }
        function d(t, e) {
            return function() {
                return t.apply(e, arguments)
            }
        }
        function m(t, e, n) {
            return setTimeout(d(t, n), e)
        }
        function g(t, e, n) {
            n || (n = Ct);
            var i = e[n[0]] - t[n[0]],
            r = e[n[1]] - t[n[1]];
            return Math.sqrt(i * i + r * r)
        }
        function T(t, e) {
            return t.indexOf(e) > -1
        }
        function _(t) {
            if (T(t, st)) return st;
            var e = T(t, at),
            n = T(t, ut);
            return e && n ? st: e || n ? e ? at: ut: T(t, ot) ? ot: rt
        }
        function b(t, e) {
            for (; t;) {
                if (t === e) return ! 0;
                t = t.parentNode
            }
            return ! 1
        }
        function E(t) {
            var e = t.length;
            if (1 === e) return {
                x: J(t[0].clientX),
                y: J(t[0].clientY)
            };
            for (var n = 0,
            i = 0,
            r = 0; r < e;) n += t[r].clientX,
            i += t[r].clientY,
            r++;
            return {
                x: J(n / e),
                y: J(i / e)
            }
        }
        function k(t) {
            for (var e = [], n = 0; n < t.pointers.length;) e[n] = {
                clientX: J(t.pointers[n].clientX),
                clientY: J(t.pointers[n].clientY)
            },
            n++;
            return {
                timeStamp: tt(),
                pointers: e,
                center: E(e),
                deltaX: t.deltaX,
                deltaY: t.deltaY
            }
        }
        function O(t, e, n) {
            n || (n = Ct);
            var i = e[n[0]] - t[n[0]],
            r = e[n[1]] - t[n[1]];
            return 180 * Math.atan2(r, i) / Math.PI
        }
        function P(t, e) {
            return t === e ? kt: K(t) >= K(e) ? t < 0 ? Ot: Pt: e < 0 ? wt: It
        }
        function w(t, e) {
            var n = e.center,
            i = t.offsetDelta || {},
            r = t.prevDelta || {},
            o = t.prevInput || {};
            e.eventType !== Tt && o.eventType !== bt || (r = t.prevDelta = {
                x: o.deltaX || 0,
                y: o.deltaY || 0
            },
            i = t.offsetDelta = {
                x: n.x,
                y: n.y
            }),
            e.deltaX = r.x + (n.x - i.x),
            e.deltaY = r.y + (n.y - i.y)
        }
        function I(t, e, n) {
            return {
                x: e / t || 0,
                y: n / t || 0
            }
        }
        function S(t, e) {
            return g(e[0], e[1], Dt) / g(t[0], t[1], Dt)
        }
        function A(t, e) {
            return O(e[1], e[0], Dt) + O(t[1], t[0], Dt)
        }
        function x(t, e) {
            var n = t.lastInterval || e,
            i = e.timeStamp - n.timeStamp,
            o = void 0,
            s = void 0,
            a = void 0,
            u = void 0;
            if (e.eventType !== Et && (i > gt || n.velocity === r)) {
                var c = e.deltaX - n.deltaX,
                h = e.deltaY - n.deltaY,
                l = I(i, c, h);
                s = l.x,
                a = l.y,
                o = K(l.x) > K(l.y) ? l.x: l.y,
                u = P(c, h),
                t.lastInterval = e
            } else o = n.velocity,
            s = n.velocityX,
            a = n.velocityY,
            u = n.direction;
            e.velocity = o,
            e.velocityX = s,
            e.velocityY = a,
            e.direction = u
        }
        function C(t, e) {
            var n = t.session,
            i = e.pointers,
            r = i.length;
            n.firstInput || (n.firstInput = k(e)),
            r > 1 && !n.firstMultiple ? n.firstMultiple = k(e) : 1 === r && (n.firstMultiple = !1);
            var o = n.firstInput,
            s = n.firstMultiple,
            a = s ? s.center: o.center,
            u = e.center = E(i);
            e.timeStamp = tt(),
            e.deltaTime = e.timeStamp - o.timeStamp,
            e.angle = O(a, u),
            e.distance = g(a, u),
            w(n, e),
            e.offsetDirection = P(e.deltaX, e.deltaY);
            var c = I(e.deltaTime, e.deltaX, e.deltaY);
            e.overallVelocityX = c.x,
            e.overallVelocityY = c.y,
            e.overallVelocity = K(c.x) > K(c.y) ? c.x: c.y,
            e.scale = s ? S(s.pointers, i) : 1,
            e.rotation = s ? A(s.pointers, i) : 0,
            e.maxPointers = n.prevInput ? e.pointers.length > n.prevInput.maxPointers ? e.pointers.length: n.prevInput.maxPointers: e.pointers.length,
            x(n, e);
            var h = t.element;
            b(e.srcEvent.target, h) && (h = e.srcEvent.target),
            e.target = h
        }
        function D(t, e, n) {
            var i = n.pointers.length,
            r = n.changedPointers.length,
            o = e & Tt && i - r === 0,
            s = e & (bt | Et) && i - r === 0;
            n.isFirst = !!o,
            n.isFinal = !!s,
            o && (t.session = {}),
            n.eventType = e,
            C(t, n),
            t.emit("hammer.input", n),
            t.recognize(n),
            t.session.prevInput = n
        }
        function j(t) {
            return t.trim().split(/\s+/g)
        }
        function M(t, e, n) {
            c(j(e),
            function(e) {
                t.addEventListener(e, n, !1)
            })
        }
        function R(t, e, n) {
            c(j(e),
            function(e) {
                t.removeEventListener(e, n, !1)
            })
        }
        function z(t) {
            var n = t.ownerDocument || t;
            return n.defaultView || n.parentWindow || e
        }
        function N(t) {
            return Array.prototype.slice.call(t, 0)
        }
        function X(t, e, n) {
            for (var i = [], r = [], o = 0; o < t.length;) {
                var s = e ? t[o][e] : t[o];
                l(r, s) < 0 && i.push(t[o]),
                r[o] = s,
                o++
            }
            return n && (i = e ? i.sort(function(t, n) {
                return t[e] > n[e]
            }) : i.sort()),
            i
        }
        function Y(t, e) {
            var n = N(t.touches),
            i = this.targetIds;
            if (e & (Tt | _t) && 1 === n.length) return i[n[0].identifier] = !0,
            [n, n];
            var r = void 0,
            o = void 0,
            s = N(t.changedTouches),
            a = [],
            u = this.target;
            if (o = n.filter(function(t) {
                return b(t.target, u)
            }), e === Tt) for (r = 0; r < o.length;) i[o[r].identifier] = !0,
            r++;
            for (r = 0; r < s.length;) i[s[r].identifier] && a.push(s[r]),
            e & (bt | Et) && delete i[s[r].identifier],
            r++;
            return a.length ? [X(o.concat(a), "identifier", !0), a] : void 0
        }
        function F(t, e) {
            t & Tt ? (this.primaryTouch = e.changedPointers[0].identifier, q.call(this, e)) : t & (bt | Et) && q.call(this, e)
        }
        function q(t) {
            var e = this,
            n = Bt(t.changedPointers, 1),
            i = n[0];
            i.identifier === this.primaryTouch && !
            function() {
                var t = {
                    x: i.clientX,
                    y: i.clientY
                };
                e.lastTouches.push(t);
                var n = e.lastTouches,
                r = function() {
                    var e = n.indexOf(t);
                    e > -1 && n.splice(e, 1)
                };
                setTimeout(r, ge)
            } ()
        }
        function W(t) {
            for (var e = t.srcEvent.clientX,
            n = t.srcEvent.clientY,
            i = 0; i < this.lastTouches.length; i++) {
                var r = this.lastTouches[i],
                o = Math.abs(e - r.x),
                s = Math.abs(n - r.y);
                if (o <= Te && s <= Te) return ! 0
            }
            return ! 1
        }
        function L(t) {
            var e = void 0,
            n = t.options.inputClass;
            return new(e = n ? n: pt ? he: ft ? fe: lt ? _e: me)(t, D)
        }
        function H(t, e) {
            var n = t.element;
            if (n.style) {
                var i = void 0;
                c(t.options.cssProps,
                function(r, o) {
                    i = s(n.style, o),
                    e ? (t.oldCssProps[i] = n.style[i], n.style[i] = r) : n.style[i] = t.oldCssProps[i] || ""
                }),
                e || (t.oldCssProps = {})
            }
        }
        function U(t, e) {
            var i = n.createEvent("Event");
            i.initEvent(t, !0, !0),
            i.gesture = e,
            e.target.dispatchEvent(i)
        }
        function V(t, e) {
            var n = N(t.touches),
            i = N(t.changedTouches);
            return e & (bt | Et) && (n = X(n.concat(i), "identifier", !0)),
            [n, i]
        }
        function G(t, n, i) {
            var r = "DEPRECATED METHOD: " + n + "\n" + i + " AT \n";
            return function() {
                var n = new Error("get-stack-trace"),
                i = n && n.stack ? n.stack.replace(/^[^\(]+?[\n$]/gm, "").replace(/^\s+at\s+/gm, "").replace(/^Object.<anonymous>\s*\(/gm, "{anonymous}()@") : "Unknown Stack Trace",
                o = e.console && (e.console.warn || e.console.log);
                return o && o.call(e.console, r, i),
                t.apply(this, arguments)
            }
        }
        function Z(t, e, n) {
            var i = e.prototype,
            r = void 0;
            r = t.prototype = Object.create(i),
            r.constructor = t,
            r._super = i,
            n && qt(r, n)
        }
        var B = ["", "webkit", "Moz", "MS", "ms", "o"],
        Q = n.createElement("div"),
        $ = "function",
        J = Math.round,
        K = Math.abs,
        tt = Date.now,
        et = s(Q.style, "touchAction"),
        nt = et !== r,
        it = "compute",
        rt = "auto",
        ot = "manipulation",
        st = "none",
        at = "pan-x",
        ut = "pan-y",
        ct = a(),
        ht = /mobile|tablet|ip(ad|hone|od)|android/i,
        lt = "ontouchstart" in e,
        pt = s(e, "PointerEvent") !== r,
        ft = lt && ht.test(navigator.userAgent),
        vt = "touch",
        yt = "pen",
        dt = "mouse",
        mt = "kinect",
        gt = 25,
        Tt = 1,
        _t = 2,
        bt = 4,
        Et = 8,
        kt = 1,
        Ot = 2,
        Pt = 4,
        wt = 8,
        It = 16,
        St = Ot | Pt,
        At = wt | It,
        xt = St | At,
        Ct = ["x", "y"],
        Dt = ["clientX", "clientY"],
        jt = 1,
        Mt = 2,
        Rt = 4,
        zt = 8,
        Nt = zt,
        Xt = 16,
        Yt = 32,
        Ft = void 0;
        Ft = "function" != typeof Object.assign ?
        function(t) {
            if (t === r || null === t) throw new TypeError("Cannot convert undefined or null to object");
            for (var e = Object(t), n = 1; n < arguments.length; n++) {
                var i = arguments[n];
                if (i !== r && null !== i) for (var o in i) i.hasOwnProperty(o) && (e[o] = i[o])
            }
            return e
        }: Object.assign;
        var qt = Ft,
        Wt = 1,
        Lt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ?
        function(t) {
            return typeof t
        }: function(t) {
            return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol": typeof t
        },
        Ht = (function() {
            function t(t) {
                this.value = t
            }
            function e(e) {
                function n(t, e) {
                    return new Promise(function(n, r) {
                        var o = {
                            key: t,
                            arg: e,
                            resolve: n,
                            reject: r,
                            next: null
                        };
                        a ? a = a.next = o: (s = a = o, i(t, e))
                    })
                }
                function i(n, r) {
                    try {
                        var s = e[n](r),
                        a = s.value;
                        a instanceof t ? Promise.resolve(a.value).then(function(t) {
                            i("next", t)
                        },
                        function(t) {
                            i("throw", t)
                        }) : o(s.done ? "return": "normal", s.value)
                    } catch(t) {
                        o("throw", t)
                    }
                }
                function o(t, e) {
                    switch (t) {
                    case "return":
                        s.resolve({
                            value:
                            e,
                            done: !0
                        });
                        break;
                    case "throw":
                        s.reject(e);
                        break;
                    default:
                        s.resolve({
                            value:
                            e,
                            done: !1
                        })
                    }
                    s = s.next,
                    s ? i(s.key, s.arg) : a = null
                }
                var s, a;
                this._invoke = n,
                "function" != typeof e.
                return && (this.
                return = r)
            }
            return "function" == typeof Symbol && Symbol.asyncIterator && (e.prototype[Symbol.asyncIterator] = function() {
                return this
            }),
            e.prototype.next = function(t) {
                return this._invoke("next", t)
            },
            e.prototype.
            throw = function(t) {
                return this._invoke("throw", t)
            },
            e.prototype.
            return = function(t) {
                return this._invoke("return", t)
            },
            {
                wrap: function(t) {
                    return function() {
                        return new e(t.apply(this, arguments))
                    }
                },
                await: function(e) {
                    return new t(e)
                }
            }
        } (),
        function(t, e) {
            if (! (t instanceof e)) throw new TypeError("Cannot call a class as a function")
        }),
        Ut = function() {
            function t(t, e) {
                for (var n = 0; n < e.length; n++) {
                    var i = e[n];
                    i.enumerable = i.enumerable || !1,
                    i.configurable = !0,
                    "value" in i && (i.writable = !0),
                    Object.defineProperty(t, i.key, i)
                }
            }
            return function(e, n, i) {
                return n && t(e.prototype, n),
                i && t(e, i),
                e
            }
        } (),
        Vt = function t(e, n, i) {
            null === e && (e = Function.prototype);
            var o = Object.getOwnPropertyDescriptor(e, n);
            if (o === r) {
                var s = Object.getPrototypeOf(e);
                return null === s ? r: t(s, n, i)
            }
            if ("value" in o) return o.value;
            var a = o.get;
            return a === r ? r: a.call(i)
        },
        Gt = function(t, e) {
            if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
            t.prototype = Object.create(e && e.prototype, {
                constructor: {
                    value: t,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }),
            e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
        },
        Zt = function(t, e) {
            if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return ! e || "object" != typeof e && "function" != typeof e ? t: e
        },
        Bt = function() {
            function t(t, e) {
                var n = [],
                i = !0,
                o = !1,
                s = r;
                try {
                    for (var a, u = t[Symbol.iterator](); ! (i = (a = u.next()).done) && (n.push(a.value), !e || n.length !== e); i = !0);
                } catch(t) {
                    o = !0,
                    s = t
                } finally {
                    try { ! i && u.
                        return && u.
                        return ()
                    } finally {
                        if (o) throw s
                    }
                }
                return n
            }
            return function(e, n) {
                if (Array.isArray(e)) return e;
                if (Symbol.iterator in Object(e)) return t(e, n);
                throw new TypeError("Invalid attempt to destructure non-iterable instance")
            }
        } (),
        Qt = function() {
            function t(e) {
                Ht(this, t),
                this.options = qt({},
                this.defaults, e || {}),
                this.id = u(),
                this.manager = null,
                this.options.enable = o(this.options.enable, !0),
                this.state = jt,
                this.simultaneous = {},
                this.requireFail = []
            }
            return Ut(t, [{
                key: "set",
                value: function(t) {
                    return qt(this.options, t),
                    this.manager && this.manager.touchAction.update(),
                    this
                }
            },
            {
                key: "recognizeWith",
                value: function(t) {
                    if (h(t, "recognizeWith", this)) return this;
                    var e = this.simultaneous;
                    return t = f(t, this),
                    e[t.id] || (e[t.id] = t, t.recognizeWith(this)),
                    this
                }
            },
            {
                key: "dropRecognizeWith",
                value: function(t) {
                    return h(t, "dropRecognizeWith", this) ? this: (t = f(t, this), delete this.simultaneous[t.id], this)
                }
            },
            {
                key: "requireFailure",
                value: function(t) {
                    if (h(t, "requireFailure", this)) return this;
                    var e = this.requireFail;
                    return t = f(t, this),
                    l(e, t) === -1 && (e.push(t), t.requireFailure(this)),
                    this
                }
            },
            {
                key: "dropRequireFailure",
                value: function(t) {
                    if (h(t, "dropRequireFailure", this)) return this;
                    t = f(t, this);
                    var e = l(this.requireFail, t);
                    return e > -1 && this.requireFail.splice(e, 1),
                    this
                }
            },
            {
                key: "hasRequireFailures",
                value: function() {
                    return this.requireFail.length > 0
                }
            },
            {
                key: "canRecognizeWith",
                value: function(t) {
                    return !! this.simultaneous[t.id]
                }
            },
            {
                key: "emit",
                value: function t(e) {
                    function t(t) {
                        n.manager.emit(t, e)
                    }
                    var n = this,
                    i = this.state;
                    i < zt && t(n.options.event + v(i)),
                    t(n.options.event),
                    e.additionalEvent && t(e.additionalEvent),
                    i >= zt && t(n.options.event + v(i))
                }
            },
            {
                key: "tryEmit",
                value: function(t) {
                    return this.canEmit() ? this.emit(t) : void(this.state = Yt)
                }
            },
            {
                key: "canEmit",
                value: function() {
                    for (var t = 0; t < this.requireFail.length;) {
                        if (! (this.requireFail[t].state & (Yt | jt))) return ! 1;
                        t++
                    }
                    return ! 0
                }
            },
            {
                key: "recognize",
                value: function(t) {
                    var e = qt({},
                    t);
                    return p(this.options.enable, [this, e]) ? (this.state & (Nt | Xt | Yt) && (this.state = jt), this.state = this.process(e), void(this.state & (Mt | Rt | zt | Xt) && this.tryEmit(e))) : (this.reset(), void(this.state = Yt))
                }
            },
            {
                key: "process",
                value: function(t) {}
            },
            {
                key: "getTouchAction",
                value: function() {}
            },
            {
                key: "reset",
                value: function() {}
            }]),
            t
        } ();
        Qt.prototype.defaults = {};
        var $t = function(t) {
            function e() {
                return Ht(this, e),
                Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments))
            }
            return Gt(e, t),
            Ut(e, [{
                key: "attrTest",
                value: function(t) {
                    var e = this.options.pointers;
                    return 0 === e || t.pointers.length === e
                }
            },
            {
                key: "process",
                value: function(t) {
                    var e = this.state,
                    n = t.eventType,
                    i = e & (Mt | Rt),
                    r = this.attrTest(t);
                    return i && (n & Et || !r) ? e | Xt: i || r ? n & bt ? e | zt: e & Mt ? e | Rt: Mt: Yt
                }
            }]),
            e
        } (Qt);
        $t.prototype.defaults = {
            pointers: 1
        };
        var Jt = function(t) {
            function e() {
                return Ht(this, e),
                Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments))
            }
            return Gt(e, t),
            Ut(e, [{
                key: "getTouchAction",
                value: function() {
                    return [st]
                }
            },
            {
                key: "attrTest",
                value: function(t) {
                    return Vt(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "attrTest", this).call(this, t) && (Math.abs(t.rotation) > this.options.threshold || this.state & Mt)
                }
            }]),
            e
        } ($t);
        Jt.prototype.defaults = {
            event: "rotate",
            threshold: 0,
            pointers: 2
        };
        var Kt = function(t) {
            function e() {
                return Ht(this, e),
                Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments))
            }
            return Gt(e, t),
            Ut(e, [{
                key: "getTouchAction",
                value: function() {
                    return [st]
                }
            },
            {
                key: "attrTest",
                value: function(t) {
                    return Vt(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "attrTest", this).call(this, t) && (Math.abs(t.scale - 1) > this.options.threshold || this.state & Mt)
                }
            },
            {
                key: "emit",
                value: function(t) {
                    if (1 !== t.scale) {
                        var n = t.scale < 1 ? "in": "out";
                        t.additionalEvent = this.options.event + n
                    }
                    Vt(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "emit", this).call(this, t)
                }
            }]),
            e
        } ($t);
        Kt.prototype.defaults = {
            event: "pinch",
            threshold: 0,
            pointers: 2
        };
        var te = function(t) {
            function e() {
                Ht(this, e);
                var t = Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments));
                return t.pX = null,
                t.pY = null,
                t
            }
            return Gt(e, t),
            Ut(e, [{
                key: "getTouchAction",
                value: function() {
                    var t = this.options.direction,
                    e = [];
                    return t & St && e.push(ut),
                    t & At && e.push(at),
                    e
                }
            },
            {
                key: "directionTest",
                value: function(t) {
                    var e = this.options,
                    n = !0,
                    i = t.distance,
                    r = t.direction,
                    o = t.deltaX,
                    s = t.deltaY;
                    return r & e.direction || (e.direction & St ? (r = 0 === o ? kt: o < 0 ? Ot: Pt, n = o !== this.pX, i = Math.abs(t.deltaX)) : (r = 0 === s ? kt: s < 0 ? wt: It, n = s !== this.pY, i = Math.abs(t.deltaY))),
                    t.direction = r,
                    n && i > e.threshold && r & e.direction
                }
            },
            {
                key: "attrTest",
                value: function(t) {
                    return $t.prototype.attrTest.call(this, t) && (this.state & Mt || !(this.state & Mt) && this.directionTest(t))
                }
            },
            {
                key: "emit",
                value: function(t) {
                    this.pX = t.deltaX,
                    this.pY = t.deltaY;
                    var n = y(t.direction);
                    n && (t.additionalEvent = this.options.event + n),
                    Vt(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "emit", this).call(this, t)
                }
            }]),
            e
        } ($t);
        te.prototype.defaults = {
            event: "pan",
            threshold: 10,
            pointers: 1,
            direction: xt
        };
        var ee = function(t) {
            function e() {
                return Ht(this, e),
                Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments))
            }
            return Gt(e, t),
            Ut(e, [{
                key: "getTouchAction",
                value: function() {
                    return te.prototype.getTouchAction.call(this)
                }
            },
            {
                key: "attrTest",
                value: function(t) {
                    var n = this.options.direction,
                    i = void 0;
                    return n & (St | At) ? i = t.overallVelocity: n & St ? i = t.overallVelocityX: n & At && (i = t.overallVelocityY),
                    Vt(e.prototype.__proto__ || Object.getPrototypeOf(e.prototype), "attrTest", this).call(this, t) && n & t.offsetDirection && t.distance > this.options.threshold && t.maxPointers === this.options.pointers && K(i) > this.options.velocity && t.eventType & bt
                }
            },
            {
                key: "emit",
                value: function(t) {
                    var e = y(t.offsetDirection);
                    e && this.manager.emit(this.options.event + e, t),
                    this.manager.emit(this.options.event, t)
                }
            }]),
            e
        } ($t);
        ee.prototype.defaults = {
            event: "swipe",
            threshold: 10,
            velocity: .3,
            direction: St | At,
            pointers: 1
        };
        var ne = function(t) {
            function e() {
                Ht(this, e);
                var t = Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments));
                return t.pTime = !1,
                t.pCenter = !1,
                t._timer = null,
                t._input = null,
                t.count = 0,
                t
            }
            return Gt(e, t),
            Ut(e, [{
                key: "getTouchAction",
                value: function() {
                    return [ot]
                }
            },
            {
                key: "process",
                value: function(t) {
                    var e = this,
                    n = this.options,
                    i = t.pointers.length === n.pointers,
                    r = t.distance < n.threshold,
                    o = t.deltaTime < n.time;
                    if (this.reset(), t.eventType & Tt && 0 === this.count) return this.failTimeout();
                    if (r && o && i) {
                        if (t.eventType !== bt) return this.failTimeout();
                        var s = !this.pTime || t.timeStamp - this.pTime < n.interval,
                        a = !this.pCenter || g(this.pCenter, t.center) < n.posThreshold;
                        this.pTime = t.timeStamp,
                        this.pCenter = t.center,
                        a && s ? this.count += 1 : this.count = 1,
                        this._input = t;
                        var u = this.count % n.taps;
                        if (0 === u) return this.hasRequireFailures() ? (this._timer = m(function() {
                            e.state = Nt,
                            e.tryEmit()
                        },
                        n.interval, this), Mt) : Nt
                    }
                    return Yt
                }
            },
            {
                key: "failTimeout",
                value: function() {
                    var t = this;
                    return this._timer = m(function() {
                        t.state = Yt
                    },
                    this.options.interval, this),
                    Yt
                }
            },
            {
                key: "reset",
                value: function() {
                    clearTimeout(this._timer)
                }
            },
            {
                key: "emit",
                value: function() {
                    this.state === Nt && (this._input.tapCount = this.count, this.manager.emit(this.options.event, this._input))
                }
            }]),
            e
        } (Qt);
        ne.prototype.defaults = {
            event: "tap",
            pointers: 1,
            taps: 1,
            interval: 300,
            time: 250,
            threshold: 9,
            posThreshold: 10
        };
        var ie = function(t) {
            function e() {
                Ht(this, e);
                var t = Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments));
                return t._timer = null,
                t._input = null,
                t
            }
            return Gt(e, t),
            Ut(e, [{
                key: "getTouchAction",
                value: function() {
                    return [rt]
                }
            },
            {
                key: "process",
                value: function(t) {
                    var e = this,
                    n = this.options,
                    i = t.pointers.length === n.pointers,
                    r = t.distance < n.threshold,
                    o = t.deltaTime > n.time;
                    if (this._input = t, !r || !i || t.eventType & (bt | Et) && !o) this.reset();
                    else if (t.eventType & Tt) this.reset(),
                    this._timer = m(function() {
                        e.state = Nt,
                        e.tryEmit()
                    },
                    n.time, this);
                    else if (t.eventType & bt) return Nt;
                    return Yt
                }
            },
            {
                key: "reset",
                value: function() {
                    clearTimeout(this._timer)
                }
            },
            {
                key: "emit",
                value: function(t) {
                    this.state === Nt && (t && t.eventType & bt ? this.manager.emit(this.options.event + "up", t) : (this._input.timeStamp = tt(), this.manager.emit(this.options.event, this._input)))
                }
            }]),
            e
        } (Qt);
        ie.prototype.defaults = {
            event: "press",
            pointers: 1,
            time: 251,
            threshold: 9
        };
        var re = function() {
            function t(e, n) {
                Ht(this, t),
                this.manager = e,
                this.set(n)
            }
            return Ut(t, [{
                key: "set",
                value: function(t) {
                    t === it && (t = this.compute()),
                    nt && this.manager.element.style && ct[t] && (this.manager.element.style[et] = t),
                    this.actions = t.toLowerCase().trim()
                }
            },
            {
                key: "update",
                value: function() {
                    this.set(this.manager.options.touchAction)
                }
            },
            {
                key: "compute",
                value: function() {
                    var t = [];
                    return c(this.manager.recognizers,
                    function(e) {
                        p(e.options.enable, [e]) && (t = t.concat(e.getTouchAction()))
                    }),
                    _(t.join(" "))
                }
            },
            {
                key: "preventDefaults",
                value: function(t) {
                    var e = t.srcEvent,
                    n = t.offsetDirection;
                    if (this.manager.session.prevented) return void e.preventDefault();
                    var i = this.actions,
                    r = T(i, st) && !ct[st],
                    o = T(i, ut) && !ct[ut],
                    s = T(i, at) && !ct[at];
                    if (r) {
                        var a = 1 === t.pointers.length,
                        u = t.distance < 2,
                        c = t.deltaTime < 250;
                        if (a && u && c) return
                    }
                    return s && o ? void 0 : r || o && n & St || s && n & At ? this.preventSrc(e) : void 0
                }
            },
            {
                key: "preventSrc",
                value: function(t) {
                    this.manager.session.prevented = !0,
                    t.preventDefault()
                }
            }]),
            t
        } (),
        oe = function() {
            function t(e, n) {
                Ht(this, t);
                var i = this;
                this.manager = e,
                this.callback = n,
                this.element = e.element,
                this.target = e.options.inputTarget,
                this.domHandler = function(t) {
                    p(e.options.enable, [e]) && i.handler(t)
                },
                this.init()
            }
            return Ut(t, [{
                key: "handler",
                value: function() {}
            },
            {
                key: "init",
                value: function() {
                    this.evEl && M(this.element, this.evEl, this.domHandler),
                    this.evTarget && M(this.target, this.evTarget, this.domHandler),
                    this.evWin && M(z(this.element), this.evWin, this.domHandler)
                }
            },
            {
                key: "destroy",
                value: function() {
                    this.evEl && R(this.element, this.evEl, this.domHandler),
                    this.evTarget && R(this.target, this.evTarget, this.domHandler),
                    this.evWin && R(z(this.element), this.evWin, this.domHandler)
                }
            }]),
            t
        } (),
        se = {
            pointerdown: Tt,
            pointermove: _t,
            pointerup: bt,
            pointercancel: Et,
            pointerout: Et
        },
        ae = {
            2 : vt,
            3 : yt,
            4 : dt,
            5 : mt
        },
        ue = "pointerdown",
        ce = "pointermove pointerup pointercancel";
        e.MSPointerEvent && !e.PointerEvent && (ue = "MSPointerDown", ce = "MSPointerMove MSPointerUp MSPointerCancel");
        var he = function(t) {
            function e() {
                Ht(this, e);
                var t = Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments));
                return t.evEl = ue,
                t.evWin = ce,
                t.store = t.manager.session.pointerEvents = [],
                t
            }
            return Gt(e, t),
            Ut(e, [{
                key: "handler",
                value: function(t) {
                    var e = this.store,
                    n = !1,
                    i = t.type.toLowerCase().replace("ms", ""),
                    r = se[i],
                    o = ae[t.pointerType] || t.pointerType,
                    s = o === vt,
                    a = l(e, t.pointerId, "pointerId");
                    r & Tt && (0 === t.button || s) ? a < 0 && (e.push(t), a = e.length - 1) : r & (bt | Et) && (n = !0),
                    a < 0 || (e[a] = t, this.callback(this.manager, r, {
                        pointers: e,
                        changedPointers: [t],
                        pointerType: o,
                        srcEvent: t
                    }), n && e.splice(a, 1))
                }
            }]),
            e
        } (oe),
        le = {
            touchstart: Tt,
            touchmove: _t,
            touchend: bt,
            touchcancel: Et
        },
        pe = "touchstart touchmove touchend touchcancel",
        fe = function(t) {
            function e() {
                Ht(this, e),
                e.prototype.evTarget = pe,
                e.prototype.targetIds = {};
                var t = Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments));
                return t.evTarget = pe,
                t.targetIds = {},
                t
            }
            return Gt(e, t),
            Ut(e, [{
                key: "handler",
                value: function(t) {
                    var e = le[t.type],
                    n = Y.call(this, t, e);
                    n && this.callback(this.manager, e, {
                        pointers: n[0],
                        changedPointers: n[1],
                        pointerType: vt,
                        srcEvent: t
                    })
                }
            }]),
            e
        } (oe),
        ve = {
            mousedown: Tt,
            mousemove: _t,
            mouseup: bt
        },
        ye = "mousedown",
        de = "mousemove mouseup",
        me = function(t) {
            function e() {
                Ht(this, e);
                var t = Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments));
                return t.evEl = ye,
                t.evWin = de,
                t.pressed = !1,
                t
            }
            return Gt(e, t),
            Ut(e, [{
                key: "handler",
                value: function(t) {
                    var e = ve[t.type];
                    e & Tt && 0 === t.button && (this.pressed = !0),
                    e & _t && 1 !== t.which && (e = bt),
                    this.pressed && (e & bt && (this.pressed = !1), this.callback(this.manager, e, {
                        pointers: [t],
                        changedPointers: [t],
                        pointerType: dt,
                        srcEvent: t
                    }))
                }
            }]),
            e
        } (oe),
        ge = 2500,
        Te = 25,
        _e = function(t) {
            function e() {
                Ht(this, e);
                var t = Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments)),
                n = d(t.handler, t);
                return t.touch = new fe(t.manager, n),
                t.mouse = new me(t.manager, n),
                t.primaryTouch = null,
                t.lastTouches = [],
                t
            }
            return Gt(e, t),
            Ut(e, [{
                key: "handler",
                value: function(t, e, n) {
                    var i = n.pointerType === vt,
                    r = n.pointerType === dt;
                    if (! (r && n.sourceCapabilities && n.sourceCapabilities.firesTouchEvents)) {
                        if (i) F.call(this, e, n);
                        else if (r && W.call(this, n)) return;
                        this.callback(t, e, n)
                    }
                }
            },
            {
                key: "destroy",
                value: function() {
                    this.touch.destroy(),
                    this.mouse.destroy()
                }
            }]),
            e
        } (oe),
        be = 1,
        Ee = 2,
        ke = function() {
            function t(e, n) {
                var i = this;
                Ht(this, t),
                this.options = qt({},
                Oe.defaults, n || {}),
                this.options.inputTarget = this.options.inputTarget || e,
                this.handlers = {},
                this.session = {},
                this.recognizers = [],
                this.oldCssProps = {},
                this.element = e,
                this.input = L(this),
                this.touchAction = new re(this, this.options.touchAction),
                H(this, !0),
                c(this.options.recognizers,
                function(t) {
                    var e = i.add(new t[0](t[1]));
                    t[2] && e.recognizeWith(t[2]),
                    t[3] && e.requireFailure(t[3])
                },
                this)
            }
            return Ut(t, [{
                key: "set",
                value: function(t) {
                    return qt(this.options, t),
                    t.touchAction && this.touchAction.update(),
                    t.inputTarget && (this.input.destroy(), this.input.target = t.inputTarget, this.input.init()),
                    this
                }
            },
            {
                key: "stop",
                value: function(t) {
                    this.session.stopped = t ? Ee: be
                }
            },
            {
                key: "recognize",
                value: function(t) {
                    var e = this.session;
                    if (!e.stopped) {
                        this.touchAction.preventDefaults(t);
                        var n = void 0,
                        i = this.recognizers,
                        r = e.curRecognizer; (!r || r && r.state & Nt) && (r = e.curRecognizer = null);
                        for (var o = 0; o < i.length;) n = i[o],
                        e.stopped === Ee || r && n !== r && !n.canRecognizeWith(r) ? n.reset() : n.recognize(t),
                        !r && n.state & (Mt | Rt | zt) && (r = e.curRecognizer = n),
                        o++
                    }
                }
            },
            {
                key: "get",
                value: function(t) {
                    if (t instanceof Qt) return t;
                    for (var e = this.recognizers,
                    n = 0; n < e.length; n++) if (e[n].options.event === t) return e[n];
                    return null
                }
            },
            {
                key: "add",
                value: function(t) {
                    if (h(t, "add", this)) return this;
                    var e = this.get(t.options.event);
                    return e && this.remove(e),
                    this.recognizers.push(t),
                    t.manager = this,
                    this.touchAction.update(),
                    t
                }
            },
            {
                key: "remove",
                value: function(t) {
                    if (h(t, "remove", this)) return this;
                    if (t = this.get(t)) {
                        var e = this.recognizers,
                        n = l(e, t);
                        n !== -1 && (e.splice(n, 1), this.touchAction.update())
                    }
                    return this
                }
            },
            {
                key: "on",
                value: function(t, e) {
                    if (t !== r && e !== r) {
                        var n = this.handlers;
                        return c(j(t),
                        function(t) {
                            n[t] = n[t] || [],
                            n[t].push(e)
                        }),
                        this
                    }
                }
            },
            {
                key: "off",
                value: function(t, e) {
                    if (t !== r) {
                        var n = this.handlers;
                        return c(j(t),
                        function(t) {
                            e ? n[t] && n[t].splice(l(n[t], e), 1) : delete n[t]
                        }),
                        this
                    }
                }
            },
            {
                key: "emit",
                value: function(t, e) {
                    this.options.domEvents && U(t, e);
                    var n = this.handlers[t] && this.handlers[t].slice();
                    if (n && n.length) {
                        e.type = t,
                        e.preventDefault = function() {
                            e.srcEvent.preventDefault()
                        };
                        for (var i = 0; i < n.length;) n[i](e),
                        i++
                    }
                }
            },
            {
                key: "destroy",
                value: function() {
                    this.element && H(this, !1),
                    this.handlers = {},
                    this.session = {},
                    this.input.destroy(),
                    this.element = null
                }
            }]),
            t
        } (),
        Oe = function t(e, n) {
            return Ht(this, t),
            n = n || {},
            n.recognizers = o(n.recognizers, t.defaults.preset),
            new ke(e, n)
        };
        Oe.VERSION = "2.0.8",
        Oe.defaults = {
            domEvents: !1,
            touchAction: it,
            enable: !0,
            inputTarget: null,
            inputClass: null,
            preset: [[Jt, {
                enable: !1
            }], [Kt, {
                enable: !1
            },
            ["rotate"]], [ee, {
                direction: St
            }], [te, {
                direction: St
            },
            ["swipe"]], [ne], [ne, {
                event: "doubletap",
                taps: 2
            },
            ["tap"]], [ie]],
            cssProps: {
                userSelect: "none",
                touchSelect: "none",
                touchCallout: "none",
                contentZooming: "none",
                userDrag: "none",
                tapHighlightColor: "rgba(0,0,0,0)"
            }
        };
        var Pe = {
            touchstart: Tt,
            touchmove: _t,
            touchend: bt,
            touchcancel: Et
        },
        we = "touchstart",
        Ie = "touchstart touchmove touchend touchcancel",
        Se = function(t) {
            function e() {
                Ht(this, e);
                var t = Zt(this, (e.__proto__ || Object.getPrototypeOf(e)).apply(this, arguments));
                return t.evTarget = we,
                t.evWin = Ie,
                t.started = !1,
                oe.apply(t, arguments),
                t
            }
            return Gt(e, t),
            Ut(e, [{
                key: "handler",
                value: function(t) {
                    var e = Pe[t.type];
                    if (e === Tt && (this.started = !0), this.started) {
                        var n = V.call(this, t, e);
                        e & (bt | Et) && n[0].length - n[1].length === 0 && (this.started = !1),
                        this.callback(this.manager, e, {
                            pointers: n[0],
                            changedPointers: n[1],
                            pointerType: vt,
                            srcEvent: t
                        })
                    }
                }
            }]),
            e
        } (oe),
        Ae = G(function(t, e, n) {
            for (var i = Object.keys(e), o = 0; o < i.length;)(!n || n && t[i[o]] === r) && (t[i[o]] = e[i[o]]),
            o++;
            return t
        },
        "extend", "Use `assign`."),
        xe = G(function(t, e) {
            return Ae(t, e, !0)
        },
        "merge", "Use `assign`.");
        qt(Oe, {
            INPUT_START: Tt,
            INPUT_MOVE: _t,
            INPUT_END: bt,
            INPUT_CANCEL: Et,
            STATE_POSSIBLE: jt,
            STATE_BEGAN: Mt,
            STATE_CHANGED: Rt,
            STATE_ENDED: zt,
            STATE_RECOGNIZED: Nt,
            STATE_CANCELLED: Xt,
            STATE_FAILED: Yt,
            DIRECTION_NONE: kt,
            DIRECTION_LEFT: Ot,
            DIRECTION_RIGHT: Pt,
            DIRECTION_UP: wt,
            DIRECTION_DOWN: It,
            DIRECTION_HORIZONTAL: St,
            DIRECTION_VERTICAL: At,
            DIRECTION_ALL: xt,
            Manager: ke,
            Input: oe,
            TouchAction: re,
            TouchInput: fe,
            MouseInput: me,
            PointerEventInput: he,
            TouchMouseInput: _e,
            SingleTouchInput: Se,
            Recognizer: Qt,
            AttrRecognizer: $t,
            Tap: ne,
            Pan: te,
            Swipe: ee,
            Pinch: Kt,
            Rotate: Jt,
            Press: ie,
            on: M,
            off: R,
            each: c,
            merge: xe,
            extend: Ae,
            assign: qt,
            inherit: Z,
            bindFn: d,
            prefixed: s,
            toArray: N,
            inArray: l,
            uniqueArray: X,
            splitStr: j,
            boolOrFn: p,
            hasParent: b,
            addEventListeners: M,
            removeEventListeners: R
        }),
        e.Hammer = t.exports = Oe
    } (window, document, "Hammer")
},
function(t, e) {
    t.exports = jQuery
}]);
/*  |xGv00|ee15827c7535219720cabcbbd5402a08 */
