! function(t, e) {

var i, n = t.jQuery || t.Cowboy || (t.Cowboy = {});
n.throttle = i = function(t, i, s, o) {
    var r, a = 0;

    function h() {
        var n = this,
            h = +new Date - a,
            l = arguments;

        function u() {
            a = +new Date, s.apply(n, l)
        }
        o && !r && u(), r && clearTimeout(r), o === e && h > t ? u() : !0 !== i && (r = setTimeout(o ? function() {
            r = e
        } : u, o === e ? t - h : t))
    }
    return "boolean" != typeof i && (o = s, s = i, i = e), n.guid && (h.guid = s.guid = s.guid || n.guid++), h
}, n.debounce = function(t, n, s) {
    return s === e ? i(t, n, !1) : i(t, s, !1 !== n)
}

}(this), function(t, e, i, n) {

"use strict";

function s(e, i) {
    this.element = e;
    var n = {};
    t.each(t(this.element).data(), function(t, e) {
        var i = function(t) {
            return t && t[0].toLowerCase() + t.slice(1)
        }(t.replace("fluidbox", ""));
        ("" !== i || null !== i) && ("false" == e ? e = !1 : "true" == e && (e = !0), n[i] = e)
    }), this.settings = t.extend({}, a, i, n), this.settings.viewportFill = Math.max(Math.min(parseFloat(this.settings.viewportFill), 1), 0), this.settings.stackIndex < this.settings.stackIndexDelta && (settings.stackIndexDelta = settings.stackIndex), this._name = r, this.init()
}
var o = t(e),
    r = (t(i), "fluidbox"),
    a = {
        immediateOpen: !1,
        loader: !1,
        maxWidth: 0,
        maxHeight: 0,
        resizeThrottle: 500,
        stackIndex: 1e3,
        stackIndexDelta: 10,
        viewportFill: .95
    },
    h = {},
    l = 0;
("undefined" == typeof console || "undefined" === console.warn) && (console = {}, console.warn = function() {}), t.isFunction(t.throttle) || console.warn("Fluidbox: The jQuery debounce/throttle plugin is not found/loaded. Even though Fluidbox works without it, the window resize event will fire extremely rapidly in browsers, resulting in significant degradation in performance upon viewport resize.");
var u = function() {
        var t, e = i.createElement("fakeelement"),
            s = {
                transition: "transitionend",
                OTransition: "oTransitionEnd",
                MozTransition: "transitionend",
                WebkitTransition: "webkitTransitionEnd"
            };
        for (t in s)
            if (e.style[t] !== n) return s[t]
    }(),
    c = {
        dom: function() {
            var e = t("<div />", {
                class: "fluidbox__wrap",
                css: {
                    zIndex: this.settings.stackIndex - this.settings.stackIndexDelta
                }
            });
            if (t(this.element).addClass("fluidbox--closed").wrapInner(e).find("img").first().css({
                    opacity: 1
                }).addClass("fluidbox__thumb").after('<div class="fluidbox__ghost" />'), this.settings.loader) {
                var i = t("<div />", {
                    class: "fluidbox__loader",
                    css: {
                        zIndex: 2
                    }
                });
                t(this.element).find(".fluidbox__wrap").append(i)
            }
        },
        prepareFb: function() {
            var e = t(this.element);
            e.trigger("thumbloaddone.fluidbox"), c.measure.fbElements.call(this), this.bindEvents(), e.addClass("fluidbox--ready"), this.bindListeners(), e.trigger("ready.fluidbox")
        },
        measure: {
            viewport: function() {
                h.viewport = {
                    w: o.width(),
                    h: o.height()
                }
            },
            fbElements: function() {
                var e = t(this.element),
                    i = e.find("img").first(),
                    n = e.find(".fluidbox__ghost"),
                    s = e.find(".fluidbox__wrap");
                this.instanceData.thumb = {
                    natW: i[0].naturalWidth,
                    natH: i[0].naturalHeight,
                    w: i.width(),
                    h: i.height()
                }, n.css({
                    width: i.width(),
                    height: i.height(),
                    top: i.offset().top - s.offset().top + parseInt(i.css("borderTopWidth")) + parseInt(i.css("paddingTop")),
                    left: i.offset().left - s.offset().left + parseInt(i.css("borderLeftWidth")) + parseInt(i.css("paddingLeft"))
                })
            }
        },
        checkURL: function(t) {
            var e = 0;
            return /[\s+]/g.test(t) ? (console.warn("Fluidbox: Fluidbox opening is halted because it has detected characters in your URL string that need to be properly encoded/escaped. Whitespace(s) have to be escaped manually. See RFC3986 documentation."), e = 1) : /[\"\'\(\)]/g.test(t) && (console.warn("Fluidbox: Fluidbox opening will proceed, but it has detected characters in your URL string that need to be properly encoded/escaped. These will be escaped for you. See RFC3986 documentation."), e = 0), e
        },
        formatURL: function(t) {
            return t.replace(/"/g, "%22").replace(/'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29")
        }
    };
t.extend(s.prototype, {
    init: function() {
        var e = this,
            i = t(this.element),
            n = i.find("img").first();
        if (c.measure.viewport(), (!e.instanceData || !e.instanceData.initialized) && i.is("a") && 1 === i.children().length && (i.children().is("img") || i.children().is("picture") && 1 === i.find("img").length) && "none" !== i.css("display") && "none" !== i.children().css("display") && "none" !== i.parents().css("display")) {
            i.removeClass("fluidbox--destroyed"), e.instanceData = {}, e.instanceData.initialized = !0, e.instanceData.originalNode = i.html(), l += 1, e.instanceData.id = l, i.addClass("fluidbox__instance-" + l), i.addClass("fluidbox--initialized"), c.dom.call(e), i.trigger("init.fluidbox");
            var s = new Image;
            n.width() > 0 && n.height() > 0 ? c.prepareFb.call(e) : (s.onload = function() {
                c.prepareFb.call(e)
            }, s.onerror = function() {
                i.trigger("thumbloadfail.fluidbox")
            }, s.src = n.attr("src"))
        }
    },
    open: function() {
        var e = this,
            i = t(this.element),
            n = i.find("img").first(),
            s = i.find(".fluidbox__ghost"),
            o = i.find(".fluidbox__wrap");
        e.instanceData.state = 1, s.off(u), t(".fluidbox--opened").fluidbox("close");
        var r, a = t("<div />", {
            class: "fluidbox__overlay",
            css: {
                zIndex: -1
            }
        });
        if (o.append(a), i.removeClass("fluidbox--closed").addClass("fluidbox--loading"), c.checkURL(n.attr("src"))) return e.close(), !1;
        s.css({
            "background-image": "url(" + c.formatURL(n.attr("src")) + ")",
            opacity: 1
        }), c.measure.fbElements.call(e), e.settings.immediateOpen ? (i.addClass("fluidbox--opened fluidbox--loaded").find(".fluidbox__wrap").css({
            zIndex: e.settings.stackIndex + e.settings.stackIndexDelta
        }), i.trigger("openstart.fluidbox"), e.compute(), n.css({
            opacity: 0
        }), t(".fluidbox__overlay").css({
            opacity: 1
        }), s.one(u, function() {
            i.trigger("openend.fluidbox")
        }), (r = new Image).onload = function() {
            if (i.trigger("imageloaddone.fluidbox"), 1 === e.instanceData.state) {
                if (e.instanceData.thumb.natW = r.naturalWidth, e.instanceData.thumb.natH = r.naturalHeight, i.removeClass("fluidbox--loading"), c.checkURL(r.src)) return e.close({
                    error: !0
                }), !1;
                s.css({
                    "background-image": "url(" + c.formatURL(r.src) + ")"
                }), e.compute()
            }
        }, r.onerror = function() {
            e.close({
                error: !0
            }), i.trigger("imageloadfail.fluidbox"), i.trigger("delayedloadfail.fluidbox")
        }, r.src = i.attr("href")) : ((r = new Image).onload = function() {
            return i.trigger("imageloaddone.fluidbox"), i.removeClass("fluidbox--loading").addClass("fluidbox--opened fluidbox--loaded").find(".fluidbox__wrap").css({
                zIndex: e.settings.stackIndex + e.settings.stackIndexDelta
            }), i.trigger("openstart.fluidbox"), c.checkURL(r.src) ? (e.close({
                error: !0
            }), !1) : (s.css({
                "background-image": "url(" + c.formatURL(r.src) + ")"
            }), e.instanceData.thumb.natW = r.naturalWidth, e.instanceData.thumb.natH = r.naturalHeight, e.compute(), n.css({
                opacity: 0
            }), t(".fluidbox__overlay").css({
                opacity: 1
            }), void s.one(u, function() {
                i.trigger("openend.fluidbox")
            }))
        }, r.onerror = function() {
            e.close({
                error: !0
            }), i.trigger("imageloadfail.fluidbox")
        }, r.src = i.attr("href"))
    },
    compute: function() {
        var e, i, n, s = this,
            r = t(this.element),
            a = r.find("img").first(),
            l = r.find(".fluidbox__ghost"),
            u = r.find(".fluidbox__wrap"),
            c = s.instanceData.thumb.natW,
            d = s.instanceData.thumb.natH,
            p = s.instanceData.thumb.w,
            f = s.instanceData.thumb.h,
            g = c / d,
            m = h.viewport.w / h.viewport.h;
        s.settings.maxWidth > 0 ? d = (c = s.settings.maxWidth) / g : s.settings.maxHeight > 0 && (c = (d = s.settings.maxHeight) * g), m > g ? (i = c * (f * (e = (d < h.viewport.h ? d : h.viewport.h * s.settings.viewportFill) / f) / d) / p, n = e) : (e = d * (p * (i = (c < h.viewport.w ? c : h.viewport.w * s.settings.viewportFill) / p) / c) / f, n = i), s.settings.maxWidth && s.settings.maxHeight && console.warn("Fluidbox: Both maxHeight and maxWidth are specified. You can only specify one. If both are specified, only the maxWidth property will be respected. This will not generate any error, but may cause unexpected sizing behavior.");
        var v = o.scrollTop() - a.offset().top + f * (n - 1) * .5 + .5 * (o.height() - f * n),
            y = p * (n - 1) * .5 + .5 * (o.width() - p * n) - a.offset().left,
            _ = parseInt(100 * i) / 100 + "," + parseInt(100 * e) / 100;
        l.css({
            transform: "translate(" + parseInt(100 * y) / 100 + "px," + parseInt(100 * v) / 100 + "px) scale(" + _ + ")",
            top: a.offset().top - u.offset().top,
            left: a.offset().left - u.offset().left
        }), r.find(".fluidbox__loader").css({
            transform: "translate(" + parseInt(100 * y) / 100 + "px," + parseInt(100 * v) / 100 + "px) scale(" + _ + ")"
        }), r.trigger("computeend.fluidbox")
    },
    recompute: function() {
        this.compute()
    },
    close: function(e) {
        var i = this,
            s = t(this.element),
            o = s.find("img").first(),
            r = s.find(".fluidbox__ghost"),
            a = s.find(".fluidbox__wrap"),
            h = s.find(".fluidbox__overlay"),
            l = t.extend(null, {
                error: !1
            }, e);
        return null !== i.instanceData.state && typeof i.instanceData.state != typeof n && 0 !== i.instanceData.state && (i.instanceData.state = 0, s.trigger("closestart.fluidbox"), s.removeClass(function(t, e) {
            return (e.match(/(^|\s)fluidbox--(opened|loaded|loading)+/g) || []).join(" ")
        }).addClass("fluidbox--closed"), r.css({
            transform: "translate(0,0) scale(1,1)",
            top: o.offset().top - a.offset().top + parseInt(o.css("borderTopWidth")) + parseInt(o.css("paddingTop")),
            left: o.offset().left - a.offset().left + parseInt(o.css("borderLeftWidth")) + parseInt(o.css("paddingLeft"))
        }), s.find(".fluidbox__loader").css({
            transform: "none"
        }), r.one(u, function() {
            r.css({
                opacity: 0
            }), o.css({
                opacity: 1
            }), h.remove(), a.css({
                zIndex: i.settings.stackIndex - i.settings.stackIndexDelta
            }), s.trigger("closeend.fluidbox")
        }), l.error && r.trigger("transitionend"), void h.css({
            opacity: 0
        }))
    },
    bindEvents: function() {
        var e = this;
        t(this.element).on("click.fluidbox", function(t) {
            t.preventDefault(), e.instanceData.state && 0 !== e.instanceData.state ? e.close() : e.open()
        })
    },
    bindListeners: function() {
        var e = this,
            i = t(this.element),
            n = function() {
                c.measure.viewport(), c.measure.fbElements.call(e), i.hasClass("fluidbox--opened") && e.compute()
            };
        t.isFunction(t.throttle) ? o.on("resize.fluidbox" + e.instanceData.id, t.throttle(e.settings.resizeThrottle, n)) : o.on("resize.fluidbox" + e.instanceData.id, n), i.on("reposition.fluidbox", function() {
            e.reposition()
        }), i.on("recompute.fluidbox, compute.fluidbox", function() {
            e.compute()
        }), i.on("destroy.fluidbox", function() {
            e.destroy()
        }), i.on("close.fluidbox", function() {
            e.close()
        })
    },
    unbind: function() {
        t(this.element).off("click.fluidbox reposition.fluidbox recompute.fluidbox compute.fluidbox destroy.fluidbox close.fluidbox"), o.off("resize.fluidbox" + this.instanceData.id)
    },
    reposition: function() {
        c.measure.fbElements.call(this)
    },
    destroy: function() {
        var e = this.instanceData.originalNode;
        this.unbind(), t.data(this.element, "plugin_" + r, null), t(this.element).removeClass(function(t, e) {
            return (e.match(/(^|\s)fluidbox[--|__]\S+/g) || []).join(" ")
        }).empty().html(e).addClass("fluidbox--destroyed").trigger("destroyed.fluidbox")
    },
    getMetadata: function() {
        return this.instanceData
    }
}), t.fn[r] = function(e) {
    var i, o = arguments;
    return e === n || "object" == typeof e ? this.each(function() {
        t.data(this, "plugin_" + r) || t.data(this, "plugin_" + r, new s(this, e))
    }) : "string" == typeof e && "_" !== e[0] && "init" !== e ? (this.each(function() {
        var n = t.data(this, "plugin_" + r);
        n instanceof s && "function" == typeof n[e] ? i = n[e].apply(n, Array.prototype.slice.call(o, 1)) : console.warn('Fluidbox: The method "' + e + '" used is not defined in Fluidbox. Please make sure you are calling the correct public method.')
    }), i !== n ? i : this) : this
}

}(jQuery, window, document), function(t, e) {

"use strict";
var i = t.History = t.History || {},
    n = t.jQuery;
if (void 0 !== i.Adapter) throw new Error("History.js Adapter has already been loaded...");
i.Adapter = {
    bind: function(t, e, i) {
        n(t).bind(e, i)
    },
    trigger: function(t, e, i) {
        n(t).trigger(e, i)
    },
    extractEventData: function(t, e, i) {
        return e && e.originalEvent && e.originalEvent[t] || i && i[t] || void 0
    },
    onDomLoad: function(t) {
        n(t)
    }
}, void 0 !== i.init && i.init()

}(window), function(t, e) {

"use strict";
var i = t.console || e,
    n = t.document,
    s = t.navigator,
    o = !1,
    r = t.setTimeout,
    a = t.clearTimeout,
    h = t.setInterval,
    l = t.clearInterval,
    u = t.JSON,
    c = t.alert,
    d = t.History = t.History || {},
    p = t.history;
try {
    (o = t.sessionStorage).setItem("TEST", "1"), o.removeItem("TEST")
} catch (t) {
    o = !1
}
if (u.stringify = u.stringify || u.encode, u.parse = u.parse || u.decode, void 0 !== d.init) throw new Error("History.js Core has already been loaded...");
d.init = function(t) {
    return void 0 !== d.Adapter && (void 0 !== d.initCore && d.initCore(), void 0 !== d.initHtml4 && d.initHtml4(), !0)
}, d.initCore = function(f) {
    if (void 0 !== d.initCore.initialized) return !1;
    if (d.initCore.initialized = !0, d.options = d.options || {}, d.options.hashChangeInterval = d.options.hashChangeInterval || 100, d.options.safariPollInterval = d.options.safariPollInterval || 500, d.options.doubleCheckInterval = d.options.doubleCheckInterval || 500, d.options.disableSuid = d.options.disableSuid || !1, d.options.storeInterval = d.options.storeInterval || 1e3, d.options.busyDelay = d.options.busyDelay || 250, d.options.debug = d.options.debug || !1, d.options.initialTitle = d.options.initialTitle || n.title, d.options.html4Mode = d.options.html4Mode || !1, d.options.delayInit = d.options.delayInit || !1, d.intervalList = [], d.clearAllIntervals = function() {
            var t, e = d.intervalList;
            if (null != e) {
                for (t = 0; t < e.length; t++) l(e[t]);
                d.intervalList = null
            }
        }, d.debug = function() {
            d.options.debug && d.log.apply(d, arguments)
        }, d.log = function() {
            var t, e, s, o, r, a = void 0 !== i && void 0 !== i.log && void 0 !== i.log.apply,
                h = n.getElementById("log");
            for (a ? (t = (o = Array.prototype.slice.call(arguments)).shift(), void 0 !== i.debug ? i.debug.apply(i, [t, o]) : i.log.apply(i, [t, o])) : t = "\n" + arguments[0] + "\n", e = 1, s = arguments.length; e < s; ++e) {
                if ("object" == typeof(r = arguments[e]) && void 0 !== u) try {
                    r = u.stringify(r)
                } catch (t) {}
                t += "\n" + r + "\n"
            }
            return h ? (h.value += t + "\n-----\n", h.scrollTop = h.scrollHeight - h.clientHeight) : a || c(t), !0
        }, d.getInternetExplorerMajorVersion = function() {
            return d.getInternetExplorerMajorVersion.cached = void 0 !== d.getInternetExplorerMajorVersion.cached ? d.getInternetExplorerMajorVersion.cached : function() {
                for (var t = 3, e = n.createElement("div"), i = e.getElementsByTagName("i");
                    (e.innerHTML = "\x3c!--[if gt IE " + ++t + "]><i></i><![endif]--\x3e") && i[0];);
                return t > 4 && t
            }()
        }, d.isInternetExplorer = function() {
            return d.isInternetExplorer.cached = void 0 !== d.isInternetExplorer.cached ? d.isInternetExplorer.cached : Boolean(d.getInternetExplorerMajorVersion())
        }, d.options.html4Mode ? d.emulated = {
            pushState: !0,
            hashChange: !0
        } : d.emulated = {
            pushState: !Boolean(t.history && t.history.pushState && t.history.replaceState && !/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i.test(s.userAgent) && !/AppleWebKit\/5([0-2]|3[0-2])/i.test(s.userAgent)),
            hashChange: Boolean(!("onhashchange" in t || "onhashchange" in n) || d.isInternetExplorer() && d.getInternetExplorerMajorVersion() < 8)
        }, d.enabled = !d.emulated.pushState, d.bugs = {
            setHash: Boolean(!d.emulated.pushState && "Apple Computer, Inc." === s.vendor && /AppleWebKit\/5([0-2]|3[0-3])/.test(s.userAgent)),
            safariPoll: Boolean(!d.emulated.pushState && "Apple Computer, Inc." === s.vendor && /AppleWebKit\/5([0-2]|3[0-3])/.test(s.userAgent)),
            ieDoubleCheck: Boolean(d.isInternetExplorer() && d.getInternetExplorerMajorVersion() < 8),
            hashEscape: Boolean(d.isInternetExplorer() && d.getInternetExplorerMajorVersion() < 7)
        }, d.isEmptyObject = function(t) {
            for (var e in t)
                if (t.hasOwnProperty(e)) return !1;
            return !0
        }, d.cloneObject = function(t) {
            var e, i;
            return t ? (e = u.stringify(t), i = u.parse(e)) : i = {}, i
        }, d.getRootUrl = function() {
            var t = n.location.protocol + "//" + (n.location.hostname || n.location.host);
            return n.location.port && (t += ":" + n.location.port), t += "/"
        }, d.getBaseHref = function() {
            var t = n.getElementsByTagName("base"),
                e = "";
            return 1 === t.length && (e = t[0].href.replace(/[^\/]+$/, "")), (e = e.replace(/\/+$/, "")) && (e += "/"), e
        }, d.getBaseUrl = function() {
            return d.getBaseHref() || d.getBasePageUrl() || d.getRootUrl()
        }, d.getPageUrl = function() {
            return ((d.getState(!1, !1) || {}).url || d.getLocationHref()).replace(/\/+$/, "").replace(/[^\/]+$/, function(t, e, i) {
                return /\./.test(t) ? t : t + "/"
            })
        }, d.getBasePageUrl = function() {
            return d.getLocationHref().replace(/[#\?].*/, "").replace(/[^\/]+$/, function(t, e, i) {
                return /[^\/]$/.test(t) ? "" : t
            }).replace(/\/+$/, "") + "/"
        }, d.getFullUrl = function(t, e) {
            var i = t,
                n = t.substring(0, 1);
            return e = void 0 === e || e, /[a-z]+\:\/\//.test(t) || (i = "/" === n ? d.getRootUrl() + t.replace(/^\/+/, "") : "#" === n ? d.getPageUrl().replace(/#.*/, "") + t : "?" === n ? d.getPageUrl().replace(/[\?#].*/, "") + t : e ? d.getBaseUrl() + t.replace(/^(\.\/)+/, "") : d.getBasePageUrl() + t.replace(/^(\.\/)+/, "")), i.replace(/\#$/, "")
        }, d.getShortUrl = function(t) {
            var e = t,
                i = d.getBaseUrl(),
                n = d.getRootUrl();
            return d.emulated.pushState && (e = e.replace(i, "")), e = e.replace(n, "/"), d.isTraditionalAnchor(e) && (e = "./" + e), e = e.replace(/^(\.\/)+/g, "./").replace(/\#$/, "")
        }, d.getLocationHref = function(t) {
            return (t = t || n).URL === t.location.href ? t.location.href : t.location.href === decodeURIComponent(t.URL) ? t.URL : t.location.hash && decodeURIComponent(t.location.href.replace(/^[^#]+/, "")) === t.location.hash ? t.location.href : -1 == t.URL.indexOf("#") && -1 != t.location.href.indexOf("#") ? t.location.href : t.URL || t.location.href
        }, d.store = {}, d.idToState = d.idToState || {}, d.stateToId = d.stateToId || {}, d.urlToId = d.urlToId || {}, d.storedStates = d.storedStates || [], d.savedStates = d.savedStates || [], d.normalizeStore = function() {
            d.store.idToState = d.store.idToState || {}, d.store.urlToId = d.store.urlToId || {}, d.store.stateToId = d.store.stateToId || {}
        }, d.getState = function(t, e) {
            void 0 === t && (t = !0), void 0 === e && (e = !0);
            var i = d.getLastSavedState();
            return !i && e && (i = d.createStateObject()), t && ((i = d.cloneObject(i)).url = i.cleanUrl || i.url), i
        }, d.getIdByState = function(t) {
            var e, i = d.extractId(t.url);
            if (!i)
                if (e = d.getStateString(t), void 0 !== d.stateToId[e]) i = d.stateToId[e];
                else if (void 0 !== d.store.stateToId[e]) i = d.store.stateToId[e];
            else {
                for (; i = (new Date).getTime() + String(Math.random()).replace(/\D/g, ""), void 0 !== d.idToState[i] || void 0 !== d.store.idToState[i];);
                d.stateToId[e] = i, d.idToState[i] = t
            }
            return i
        }, d.normalizeState = function(t) {
            var e, i;
            return t && "object" == typeof t || (t = {}), void 0 !== t.normalized ? t : (t.data && "object" == typeof t.data || (t.data = {}), (e = {}).normalized = !0, e.title = t.title || "", e.url = d.getFullUrl(t.url ? t.url : d.getLocationHref()), e.hash = d.getShortUrl(e.url), e.data = d.cloneObject(t.data), e.id = d.getIdByState(e), e.cleanUrl = e.url.replace(/\??\&_suid.*/, ""), e.url = e.cleanUrl, i = !d.isEmptyObject(e.data), (e.title || i) && !0 !== d.options.disableSuid && (e.hash = d.getShortUrl(e.url).replace(/\??\&_suid.*/, ""), /\?/.test(e.hash) || (e.hash += "?"), e.hash += "&_suid=" + e.id), e.hashedUrl = d.getFullUrl(e.hash), (d.emulated.pushState || d.bugs.safariPoll) && d.hasUrlDuplicate(e) && (e.url = e.hashedUrl), e)
        }, d.createStateObject = function(t, e, i) {
            var n = {
                data: t,
                title: e,
                url: i
            };
            return n = d.normalizeState(n)
        }, d.getStateById = function(t) {
            return t = String(t), d.idToState[t] || d.store.idToState[t] || e
        }, d.getStateString = function(t) {
            var e;
            return e = {
                data: d.normalizeState(t).data,
                title: t.title,
                url: t.url
            }, u.stringify(e)
        }, d.getStateId = function(t) {
            return d.normalizeState(t).id
        }, d.getHashByState = function(t) {
            return d.normalizeState(t).hash
        }, d.extractId = function(t) {
            var e, i;
            return i = -1 != t.indexOf("#") ? t.split("#")[0] : t, (e = /(.*)\&_suid=([0-9]+)$/.exec(i)) && e[1] || t, (e ? String(e[2] || "") : "") || !1
        }, d.isTraditionalAnchor = function(t) {
            return !/[\/\?\.]/.test(t)
        }, d.extractState = function(t, e) {
            var i, n, s = null;
            return e = e || !1, (i = d.extractId(t)) && (s = d.getStateById(i)), s || (n = d.getFullUrl(t), (i = d.getIdByUrl(n) || !1) && (s = d.getStateById(i)), !s && e && !d.isTraditionalAnchor(t) && (s = d.createStateObject(null, null, n))), s
        }, d.getIdByUrl = function(t) {
            return d.urlToId[t] || d.store.urlToId[t] || e
        }, d.getLastSavedState = function() {
            return d.savedStates[d.savedStates.length - 1] || e
        }, d.getLastStoredState = function() {
            return d.storedStates[d.storedStates.length - 1] || e
        }, d.hasUrlDuplicate = function(t) {
            var e;
            return (e = d.extractState(t.url)) && e.id !== t.id
        }, d.storeState = function(t) {
            return d.urlToId[t.url] = t.id, d.storedStates.push(d.cloneObject(t)), t
        }, d.isLastSavedState = function(t) {
            var e = !1;
            return d.savedStates.length && (e = t.id === d.getLastSavedState().id), e
        }, d.saveState = function(t) {
            return !d.isLastSavedState(t) && (d.savedStates.push(d.cloneObject(t)), !0)
        }, d.getStateByIndex = function(t) {
            return void 0 === t ? d.savedStates[d.savedStates.length - 1] : t < 0 ? d.savedStates[d.savedStates.length + t] : d.savedStates[t]
        }, d.getCurrentIndex = function() {
            return d.savedStates.length < 1 ? 0 : d.savedStates.length - 1
        }, d.getHash = function(t) {
            var e = d.getLocationHref(t);
            return d.getHashByUrl(e)
        }, d.unescapeHash = function(t) {
            var e = d.normalizeHash(t);
            return e = decodeURIComponent(e)
        }, d.normalizeHash = function(t) {
            return t.replace(/[^#]*#/, "").replace(/#.*/, "")
        }, d.setHash = function(t, e) {
            var i, s;
            return !1 !== e && d.busy() ? (d.pushQueue({
                scope: d,
                callback: d.setHash,
                args: arguments,
                queue: e
            }), !1) : (d.busy(!0), (i = d.extractState(t, !0)) && !d.emulated.pushState ? d.pushState(i.data, i.title, i.url, !1) : d.getHash() !== t && (d.bugs.setHash ? (s = d.getPageUrl(), d.pushState(null, null, s + "#" + t, !1)) : n.location.hash = t), d)
        }, d.escapeHash = function(e) {
            var i = d.normalizeHash(e);
            return i = t.encodeURIComponent(i), d.bugs.hashEscape || (i = i.replace(/\%21/g, "!").replace(/\%26/g, "&").replace(/\%3D/g, "=").replace(/\%3F/g, "?")), i
        }, d.getHashByUrl = function(t) {
            var e = String(t).replace(/([^#]*)#?([^#]*)#?(.*)/, "$2");
            return e = d.unescapeHash(e)
        }, d.setTitle = function(t) {
            var e, i = t.title;
            i || (e = d.getStateByIndex(0)) && e.url === t.url && (i = e.title || d.options.initialTitle);
            try {
                n.getElementsByTagName("title")[0].innerHTML = i.replace("<", "&lt;").replace(">", "&gt;").replace(" & ", " &amp; ")
            } catch (t) {}
            return n.title = i, d
        }, d.queues = [], d.busy = function(t) {
            if (void 0 !== t ? d.busy.flag = t : void 0 === d.busy.flag && (d.busy.flag = !1), !d.busy.flag) {
                a(d.busy.timeout);
                var e = function() {
                    var t, i, n;
                    if (!d.busy.flag)
                        for (t = d.queues.length - 1; t >= 0; --t) 0 !== (i = d.queues[t]).length && (n = i.shift(), d.fireQueueItem(n), d.busy.timeout = r(e, d.options.busyDelay))
                };
                d.busy.timeout = r(e, d.options.busyDelay)
            }
            return d.busy.flag
        }, d.busy.flag = !1, d.fireQueueItem = function(t) {
            return t.callback.apply(t.scope || d, t.args || [])
        }, d.pushQueue = function(t) {
            return d.queues[t.queue || 0] = d.queues[t.queue || 0] || [], d.queues[t.queue || 0].push(t), d
        }, d.queue = function(t, e) {
            return "function" == typeof t && (t = {
                callback: t
            }), void 0 !== e && (t.queue = e), d.busy() ? d.pushQueue(t) : d.fireQueueItem(t), d
        }, d.clearQueue = function() {
            return d.busy.flag = !1, d.queues = [], d
        }, d.stateChanged = !1, d.doubleChecker = !1, d.doubleCheckComplete = function() {
            return d.stateChanged = !0, d.doubleCheckClear(), d
        }, d.doubleCheckClear = function() {
            return d.doubleChecker && (a(d.doubleChecker), d.doubleChecker = !1), d
        }, d.doubleCheck = function(t) {
            return d.stateChanged = !1, d.doubleCheckClear(), d.bugs.ieDoubleCheck && (d.doubleChecker = r(function() {
                return d.doubleCheckClear(), d.stateChanged || t(), !0
            }, d.options.doubleCheckInterval)), d
        }, d.safariStatePoll = function() {
            var e = d.extractState(d.getLocationHref());
            if (!d.isLastSavedState(e)) return e || d.createStateObject(), d.Adapter.trigger(t, "popstate"), d
        }, d.back = function(t) {
            return !1 !== t && d.busy() ? (d.pushQueue({
                scope: d,
                callback: d.back,
                args: arguments,
                queue: t
            }), !1) : (d.busy(!0), d.doubleCheck(function() {
                d.back(!1)
            }), p.go(-1), !0)
        }, d.forward = function(t) {
            return !1 !== t && d.busy() ? (d.pushQueue({
                scope: d,
                callback: d.forward,
                args: arguments,
                queue: t
            }), !1) : (d.busy(!0), d.doubleCheck(function() {
                d.forward(!1)
            }), p.go(1), !0)
        }, d.go = function(t, e) {
            var i;
            if (t > 0)
                for (i = 1; i <= t; ++i) d.forward(e);
            else {
                if (!(t < 0)) throw new Error("History.go: History.go requires a positive or negative integer passed.");
                for (i = -1; i >= t; --i) d.back(e)
            }
            return d
        }, d.emulated.pushState) {
        var g = function() {};
        d.pushState = d.pushState || g, d.replaceState = d.replaceState || g
    } else d.onPopState = function(e, i) {
        var n, s, o = !1,
            r = !1;
        return d.doubleCheckComplete(), (n = d.getHash()) ? ((s = d.extractState(n || d.getLocationHref(), !0)) ? d.replaceState(s.data, s.title, s.url, !1) : (d.Adapter.trigger(t, "anchorchange"), d.busy(!1)), d.expectedStateId = !1, !1) : ((r = (o = d.Adapter.extractEventData("state", e, i) || !1) ? d.getStateById(o) : d.expectedStateId ? d.getStateById(d.expectedStateId) : d.extractState(d.getLocationHref())) || (r = d.createStateObject(null, null, d.getLocationHref())), d.expectedStateId = !1, d.isLastSavedState(r) ? (d.busy(!1), !1) : (d.storeState(r), d.saveState(r), d.setTitle(r), d.Adapter.trigger(t, "statechange"), d.busy(!1), !0))
    }, d.Adapter.bind(t, "popstate", d.onPopState), d.pushState = function(e, i, n, s) {
        if (d.getHashByUrl(n) && d.emulated.pushState) throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");
        if (!1 !== s && d.busy()) return d.pushQueue({
            scope: d,
            callback: d.pushState,
            args: arguments,
            queue: s
        }), !1;
        d.busy(!0);
        var o = d.createStateObject(e, i, n);
        return d.isLastSavedState(o) ? d.busy(!1) : (d.storeState(o), d.expectedStateId = o.id, p.pushState(o.id, o.title, o.url), d.Adapter.trigger(t, "popstate")), !0
    }, d.replaceState = function(e, i, n, s) {
        if (d.getHashByUrl(n) && d.emulated.pushState) throw new Error("History.js does not support states with fragement-identifiers (hashes/anchors).");
        if (!1 !== s && d.busy()) return d.pushQueue({
            scope: d,
            callback: d.replaceState,
            args: arguments,
            queue: s
        }), !1;
        d.busy(!0);
        var o = d.createStateObject(e, i, n);
        return d.isLastSavedState(o) ? d.busy(!1) : (d.storeState(o), d.expectedStateId = o.id, p.replaceState(o.id, o.title, o.url), d.Adapter.trigger(t, "popstate")), !0
    };
    if (o) {
        try {
            d.store = u.parse(o.getItem("History.store")) || {}
        } catch (t) {
            d.store = {}
        }
        d.normalizeStore()
    } else d.store = {}, d.normalizeStore();
    d.Adapter.bind(t, "unload", d.clearAllIntervals), d.saveState(d.storeState(d.extractState(d.getLocationHref(), !0))), o && (d.onUnload = function() {
        var t, e, i;
        try {
            t = u.parse(o.getItem("History.store")) || {}
        } catch (e) {
            t = {}
        }
        for (e in t.idToState = t.idToState || {}, t.urlToId = t.urlToId || {}, t.stateToId = t.stateToId || {}, d.idToState) d.idToState.hasOwnProperty(e) && (t.idToState[e] = d.idToState[e]);
        for (e in d.urlToId) d.urlToId.hasOwnProperty(e) && (t.urlToId[e] = d.urlToId[e]);
        for (e in d.stateToId) d.stateToId.hasOwnProperty(e) && (t.stateToId[e] = d.stateToId[e]);
        d.store = t, d.normalizeStore(), i = u.stringify(t);
        try {
            o.setItem("History.store", i)
        } catch (t) {
            if (t.code !== DOMException.QUOTA_EXCEEDED_ERR) throw t;
            o.length && (o.removeItem("History.store"), o.setItem("History.store", i))
        }
    }, d.intervalList.push(h(d.onUnload, d.options.storeInterval)), d.Adapter.bind(t, "beforeunload", d.onUnload), d.Adapter.bind(t, "unload", d.onUnload)), d.emulated.pushState || (d.bugs.safariPoll && d.intervalList.push(h(d.safariStatePoll, d.options.safariPollInterval)), "Apple Computer, Inc." !== s.vendor && "Mozilla" !== (s.appCodeName || "") || (d.Adapter.bind(t, "hashchange", function() {
        d.Adapter.trigger(t, "popstate")
    }), d.getHash() && d.Adapter.onDomLoad(function() {
        d.Adapter.trigger(t, "hashchange")
    })))
}, (!d.options || !d.options.delayInit) && d.init()

}(window), function(t, e) {

"function" == typeof define && define.amd ? define("ev-emitter/ev-emitter", e) : "object" == typeof module && module.exports ? module.exports = e() : t.EvEmitter = e()

}(“undefined” != typeof window ? window : this, function() {

function t() {}
var e = t.prototype;
return e.on = function(t, e) {
    if (t && e) {
        var i = this._events = this._events || {},
            n = i[t] = i[t] || [];
        return -1 == n.indexOf(e) && n.push(e), this
    }
}, e.once = function(t, e) {
    if (t && e) {
        this.on(t, e);
        var i = this._onceEvents = this._onceEvents || {};
        return (i[t] = i[t] || {})[e] = !0, this
    }
}, e.off = function(t, e) {
    var i = this._events && this._events[t];
    if (i && i.length) {
        var n = i.indexOf(e);
        return -1 != n && i.splice(n, 1), this
    }
}, e.emitEvent = function(t, e) {
    var i = this._events && this._events[t];
    if (i && i.length) {
        var n = 0,
            s = i[n];
        e = e || [];
        for (var o = this._onceEvents && this._onceEvents[t]; s;) {
            var r = o && o[s];
            r && (this.off(t, s), delete o[s]), s.apply(this, e), s = i[n += r ? 0 : 1]
        }
        return this
    }
}, e.allOff = e.removeAllListeners = function() {
    delete this._events, delete this._onceEvents
}, t

}), function(t, e) {

"use strict";
"function" == typeof define && define.amd ? define(["ev-emitter/ev-emitter"], function(i) {
    return e(t, i)
}) : "object" == typeof module && module.exports ? module.exports = e(t, require("ev-emitter")) : t.imagesLoaded = e(t, t.EvEmitter)

}(“undefined” != typeof window ? window : this, function(t, e) {

function i(t, e) {
    for (var i in e) t[i] = e[i];
    return t
}

function n(t, e, s) {
    return this instanceof n ? ("string" == typeof t && (t = document.querySelectorAll(t)), this.elements = function(t) {
        var e = [];
        if (Array.isArray(t)) e = t;
        else if ("number" == typeof t.length)
            for (var i = 0; i < t.length; i++) e.push(t[i]);
        else e.push(t);
        return e
    }(t), this.options = i({}, this.options), "function" == typeof e ? s = e : i(this.options, e), s && this.on("always", s), this.getImages(), r && (this.jqDeferred = new r.Deferred), void setTimeout(function() {
        this.check()
    }.bind(this))) : new n(t, e, s)
}

function s(t) {
    this.img = t
}

function o(t, e) {
    this.url = t, this.element = e, this.img = new Image
}
var r = t.jQuery,
    a = t.console;
n.prototype = Object.create(e.prototype), n.prototype.options = {}, n.prototype.getImages = function() {
    this.images = [], this.elements.forEach(this.addElementImages, this)
}, n.prototype.addElementImages = function(t) {
    "IMG" == t.nodeName && this.addImage(t), !0 === this.options.background && this.addElementBackgroundImages(t);
    var e = t.nodeType;
    if (e && h[e]) {
        for (var i = t.querySelectorAll("img"), n = 0; n < i.length; n++) {
            var s = i[n];
            this.addImage(s)
        }
        if ("string" == typeof this.options.background) {
            var o = t.querySelectorAll(this.options.background);
            for (n = 0; n < o.length; n++) {
                var r = o[n];
                this.addElementBackgroundImages(r)
            }
        }
    }
};
var h = {
    1: !0,
    9: !0,
    11: !0
};
return n.prototype.addElementBackgroundImages = function(t) {
    var e = getComputedStyle(t);
    if (e)
        for (var i = /url\((['"])?(.*?)\1\)/gi, n = i.exec(e.backgroundImage); null !== n;) {
            var s = n && n[2];
            s && this.addBackground(s, t), n = i.exec(e.backgroundImage)
        }
}, n.prototype.addImage = function(t) {
    var e = new s(t);
    this.images.push(e)
}, n.prototype.addBackground = function(t, e) {
    var i = new o(t, e);
    this.images.push(i)
}, n.prototype.check = function() {
    function t(t, i, n) {
        setTimeout(function() {
            e.progress(t, i, n)
        })
    }
    var e = this;
    return this.progressedCount = 0, this.hasAnyBroken = !1, this.images.length ? void this.images.forEach(function(e) {
        e.once("progress", t), e.check()
    }) : void this.complete()
}, n.prototype.progress = function(t, e, i) {
    this.progressedCount++, this.hasAnyBroken = this.hasAnyBroken || !t.isLoaded, this.emitEvent("progress", [this, t, e]), this.jqDeferred && this.jqDeferred.notify && this.jqDeferred.notify(this, t), this.progressedCount == this.images.length && this.complete(), this.options.debug && a && a.log("progress: " + i, t, e)
}, n.prototype.complete = function() {
    var t = this.hasAnyBroken ? "fail" : "done";
    if (this.isComplete = !0, this.emitEvent(t, [this]), this.emitEvent("always", [this]), this.jqDeferred) {
        var e = this.hasAnyBroken ? "reject" : "resolve";
        this.jqDeferred[e](this)
    }
}, s.prototype = Object.create(e.prototype), s.prototype.check = function() {
    return this.getIsImageComplete() ? void this.confirm(0 !== this.img.naturalWidth, "naturalWidth") : (this.proxyImage = new Image, this.proxyImage.addEventListener("load", this), this.proxyImage.addEventListener("error", this), this.img.addEventListener("load", this), this.img.addEventListener("error", this), void(this.proxyImage.src = this.img.src))
}, s.prototype.getIsImageComplete = function() {
    return this.img.complete && void 0 !== this.img.naturalWidth
}, s.prototype.confirm = function(t, e) {
    this.isLoaded = t, this.emitEvent("progress", [this, this.img, e])
}, s.prototype.handleEvent = function(t) {
    var e = "on" + t.type;
    this[e] && this[e](t)
}, s.prototype.onload = function() {
    this.confirm(!0, "onload"), this.unbindEvents()
}, s.prototype.onerror = function() {
    this.confirm(!1, "onerror"), this.unbindEvents()
}, s.prototype.unbindEvents = function() {
    this.proxyImage.removeEventListener("load", this), this.proxyImage.removeEventListener("error", this), this.img.removeEventListener("load", this), this.img.removeEventListener("error", this)
}, o.prototype = Object.create(s.prototype), o.prototype.check = function() {
    this.img.addEventListener("load", this), this.img.addEventListener("error", this), this.img.src = this.url, this.getIsImageComplete() && (this.confirm(0 !== this.img.naturalWidth, "naturalWidth"), this.unbindEvents())
}, o.prototype.unbindEvents = function() {
    this.img.removeEventListener("load", this), this.img.removeEventListener("error", this)
}, o.prototype.confirm = function(t, e) {
    this.isLoaded = t, this.emitEvent("progress", [this, this.element, e])
}, n.makeJQueryPlugin = function(e) {
    (e = e || t.jQuery) && ((r = e).fn.imagesLoaded = function(t, e) {
        return new n(this, t, e).jqDeferred.promise(r(this))
    })
}, n.makeJQueryPlugin(), n

}), function(t, e) {

"function" == typeof define && define.amd ? define("jquery-bridget/jquery-bridget", ["jquery"], function(i) {
    return e(t, i)
}) : "object" == typeof module && module.exports ? module.exports = e(t, require("jquery")) : t.jQueryBridget = e(t, t.jQuery)

}(window, function(t, e) {

"use strict";

function i(i, o, a) {
    (a = a || e || t.jQuery) && (o.prototype.option || (o.prototype.option = function(t) {
        a.isPlainObject(t) && (this.options = a.extend(!0, this.options, t))
    }), a.fn[i] = function(t) {
        return "string" == typeof t ? function(t, e, n) {
            var s, o = "$()." + i + '("' + e + '")';
            return t.each(function(t, h) {
                var l = a.data(h, i);
                if (l) {
                    var u = l[e];
                    if (u && "_" != e.charAt(0)) {
                        var c = u.apply(l, n);
                        s = void 0 === s ? c : s
                    } else r(o + " is not a valid method")
                } else r(i + " not initialized. Cannot call methods, i.e. " + o)
            }), void 0 !== s ? s : t
        }(this, t, s.call(arguments, 1)) : (function(t, e) {
            t.each(function(t, n) {
                var s = a.data(n, i);
                s ? (s.option(e), s._init()) : (s = new o(n, e), a.data(n, i, s))
            })
        }(this, t), this)
    }, n(a))
}

function n(t) {
    !t || t && t.bridget || (t.bridget = i)
}
var s = Array.prototype.slice,
    o = t.console,
    r = void 0 === o ? function() {} : function(t) {
        o.error(t)
    };
return n(e || t.jQuery), i

}), function(t, e) {

"function" == typeof define && define.amd ? define("ev-emitter/ev-emitter", e) : "object" == typeof module && module.exports ? module.exports = e() : t.EvEmitter = e()

}(“undefined” != typeof window ? window : this, function() {

function t() {}
var e = t.prototype;
return e.on = function(t, e) {
    if (t && e) {
        var i = this._events = this._events || {},
            n = i[t] = i[t] || [];
        return -1 == n.indexOf(e) && n.push(e), this
    }
}, e.once = function(t, e) {
    if (t && e) {
        this.on(t, e);
        var i = this._onceEvents = this._onceEvents || {};
        return (i[t] = i[t] || {})[e] = !0, this
    }
}, e.off = function(t, e) {
    var i = this._events && this._events[t];
    if (i && i.length) {
        var n = i.indexOf(e);
        return -1 != n && i.splice(n, 1), this
    }
}, e.emitEvent = function(t, e) {
    var i = this._events && this._events[t];
    if (i && i.length) {
        var n = 0,
            s = i[n];
        e = e || [];
        for (var o = this._onceEvents && this._onceEvents[t]; s;) {
            var r = o && o[s];
            r && (this.off(t, s), delete o[s]), s.apply(this, e), s = i[n += r ? 0 : 1]
        }
        return this
    }
}, t

}), function(t, e) {

"use strict";
"function" == typeof define && define.amd ? define("get-size/get-size", [], function() {
    return e()
}) : "object" == typeof module && module.exports ? module.exports = e() : t.getSize = e()

}(window, function() {

"use strict";

function t(t) {
    var e = parseFloat(t);
    return -1 == t.indexOf("%") && !isNaN(e) && e
}

function e(t) {
    var e = getComputedStyle(t);
    return e || o("Style returned " + e + ". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"), e
}

function i() {
    if (!h) {
        h = !0;
        var i = document.createElement("div");
        i.style.width = "200px", i.style.padding = "1px 2px 3px 4px", i.style.borderStyle = "solid", i.style.borderWidth = "1px 2px 3px 4px", i.style.boxSizing = "border-box";
        var o = document.body || document.documentElement;
        o.appendChild(i);
        var r = e(i);
        n.isBoxSizeOuter = s = 200 == t(r.width), o.removeChild(i)
    }
}

function n(n) {
    if (i(), "string" == typeof n && (n = document.querySelector(n)), n && "object" == typeof n && n.nodeType) {
        var o = e(n);
        if ("none" == o.display) return function() {
            for (var t = {
                    width: 0,
                    height: 0,
                    innerWidth: 0,
                    innerHeight: 0,
                    outerWidth: 0,
                    outerHeight: 0
                }, e = 0; a > e; e++) t[r[e]] = 0;
            return t
        }();
        var h = {};
        h.width = n.offsetWidth, h.height = n.offsetHeight;
        for (var l = h.isBorderBox = "border-box" == o.boxSizing, u = 0; a > u; u++) {
            var c = r[u],
                d = o[c],
                p = parseFloat(d);
            h[c] = isNaN(p) ? 0 : p
        }
        var f = h.paddingLeft + h.paddingRight,
            g = h.paddingTop + h.paddingBottom,
            m = h.marginLeft + h.marginRight,
            v = h.marginTop + h.marginBottom,
            y = h.borderLeftWidth + h.borderRightWidth,
            _ = h.borderTopWidth + h.borderBottomWidth,
            w = l && s,
            x = t(o.width);
        !1 !== x && (h.width = x + (w ? 0 : f + y));
        var b = t(o.height);
        return !1 !== b && (h.height = b + (w ? 0 : g + _)), h.innerWidth = h.width - (f + y), h.innerHeight = h.height - (g + _), h.outerWidth = h.width + m, h.outerHeight = h.height + v, h
    }
}
var s, o = "undefined" == typeof console ? function() {} : function(t) {
        console.error(t)
    },
    r = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop", "marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"],
    a = r.length,
    h = !1;
return n

}), function(t, e) {

"use strict";
"function" == typeof define && define.amd ? define("desandro-matches-selector/matches-selector", e) : "object" == typeof module && module.exports ? module.exports = e() : t.matchesSelector = e()

}(window, function() {

"use strict";
var t = function() {
    var t = window.Element.prototype;
    if (t.matches) return "matches";
    if (t.matchesSelector) return "matchesSelector";
    for (var e = ["webkit", "moz", "ms", "o"], i = 0; i < e.length; i++) {
        var n = e[i] + "MatchesSelector";
        if (t[n]) return n
    }
}();
return function(e, i) {
    return e[t](i)
}

}), function(t, e) {

"function" == typeof define && define.amd ? define("fizzy-ui-utils/utils", ["desandro-matches-selector/matches-selector"], function(i) {
    return e(t, i)
}) : "object" == typeof module && module.exports ? module.exports = e(t, require("desandro-matches-selector")) : t.fizzyUIUtils = e(t, t.matchesSelector)

}(window, function(t, e) {

var i = {
        extend: function(t, e) {
            for (var i in e) t[i] = e[i];
            return t
        },
        modulo: function(t, e) {
            return (t % e + e) % e
        },
        makeArray: function(t) {
            var e = [];
            if (Array.isArray(t)) e = t;
            else if (t && "object" == typeof t && "number" == typeof t.length)
                for (var i = 0; i < t.length; i++) e.push(t[i]);
            else e.push(t);
            return e
        },
        removeFrom: function(t, e) {
            var i = t.indexOf(e); - 1 != i && t.splice(i, 1)
        },
        getParent: function(t, i) {
            for (; t != document.body;)
                if (t = t.parentNode, e(t, i)) return t
        },
        getQueryElement: function(t) {
            return "string" == typeof t ? document.querySelector(t) : t
        },
        handleEvent: function(t) {
            var e = "on" + t.type;
            this[e] && this[e](t)
        },
        filterFindElements: function(t, n) {
            t = i.makeArray(t);
            var s = [];
            return t.forEach(function(t) {
                if (t instanceof HTMLElement) {
                    if (!n) return void s.push(t);
                    e(t, n) && s.push(t);
                    for (var i = t.querySelectorAll(n), o = 0; o < i.length; o++) s.push(i[o])
                }
            }), s
        },
        debounceMethod: function(t, e, i) {
            var n = t.prototype[e],
                s = e + "Timeout";
            t.prototype[e] = function() {
                var t = this[s];
                t && clearTimeout(t);
                var e = arguments,
                    o = this;
                this[s] = setTimeout(function() {
                    n.apply(o, e), delete o[s]
                }, i || 100)
            }
        },
        docReady: function(t) {
            var e = document.readyState;
            "complete" == e || "interactive" == e ? setTimeout(t) : document.addEventListener("DOMContentLoaded", t)
        },
        toDashed: function(t) {
            return t.replace(/(.)([A-Z])/g, function(t, e, i) {
                return e + "-" + i
            }).toLowerCase()
        }
    },
    n = t.console;
return i.htmlInit = function(e, s) {
    i.docReady(function() {
        var o = i.toDashed(s),
            r = "data-" + o,
            a = document.querySelectorAll("[" + r + "]"),
            h = document.querySelectorAll(".js-" + o),
            l = i.makeArray(a).concat(i.makeArray(h)),
            u = r + "-options",
            c = t.jQuery;
        l.forEach(function(t) {
            var i, o = t.getAttribute(r) || t.getAttribute(u);
            try {
                i = o && JSON.parse(o)
            } catch (e) {
                return void(n && n.error("Error parsing " + r + " on " + t.className + ": " + e))
            }
            var a = new e(t, i);
            c && c.data(t, s, a)
        })
    })
}, i

}), function(t, e) {

"function" == typeof define && define.amd ? define("outlayer/item", ["ev-emitter/ev-emitter", "get-size/get-size"], e) : "object" == typeof module && module.exports ? module.exports = e(require("ev-emitter"), require("get-size")) : (t.Outlayer = {}, t.Outlayer.Item = e(t.EvEmitter, t.getSize))

}(window, function(t, e) {

"use strict";

function i(t, e) {
    t && (this.element = t, this.layout = e, this.position = {
        x: 0,
        y: 0
    }, this._create())
}
var n = document.documentElement.style,
    s = "string" == typeof n.transition ? "transition" : "WebkitTransition",
    o = "string" == typeof n.transform ? "transform" : "WebkitTransform",
    r = {
        WebkitTransition: "webkitTransitionEnd",
        transition: "transitionend"
    } [s],
    a = {
        transform: o,
        transition: s,
        transitionDuration: s + "Duration",
        transitionProperty: s + "Property",
        transitionDelay: s + "Delay"
    },
    h = i.prototype = Object.create(t.prototype);
h.constructor = i, h._create = function() {
    this._transn = {
        ingProperties: {},
        clean: {},
        onEnd: {}
    }, this.css({
        position: "absolute"
    })
}, h.handleEvent = function(t) {
    var e = "on" + t.type;
    this[e] && this[e](t)
}, h.getSize = function() {
    this.size = e(this.element)
}, h.css = function(t) {
    var e = this.element.style;
    for (var i in t) {
        e[a[i] || i] = t[i]
    }
}, h.getPosition = function() {
    var t = getComputedStyle(this.element),
        e = this.layout._getOption("originLeft"),
        i = this.layout._getOption("originTop"),
        n = t[e ? "left" : "right"],
        s = t[i ? "top" : "bottom"],
        o = this.layout.size,
        r = -1 != n.indexOf("%") ? parseFloat(n) / 100 * o.width : parseInt(n, 10),
        a = -1 != s.indexOf("%") ? parseFloat(s) / 100 * o.height : parseInt(s, 10);
    r = isNaN(r) ? 0 : r, a = isNaN(a) ? 0 : a, r -= e ? o.paddingLeft : o.paddingRight, a -= i ? o.paddingTop : o.paddingBottom, this.position.x = r, this.position.y = a
}, h.layoutPosition = function() {
    var t = this.layout.size,
        e = {},
        i = this.layout._getOption("originLeft"),
        n = this.layout._getOption("originTop"),
        s = i ? "paddingLeft" : "paddingRight",
        o = i ? "left" : "right",
        r = i ? "right" : "left",
        a = this.position.x + t[s];
    e[o] = this.getXValue(a), e[r] = "";
    var h = n ? "paddingTop" : "paddingBottom",
        l = n ? "top" : "bottom",
        u = n ? "bottom" : "top",
        c = this.position.y + t[h];
    e[l] = this.getYValue(c), e[u] = "", this.css(e), this.emitEvent("layout", [this])
}, h.getXValue = function(t) {
    var e = this.layout._getOption("horizontal");
    return this.layout.options.percentPosition && !e ? t / this.layout.size.width * 100 + "%" : t + "px"
}, h.getYValue = function(t) {
    var e = this.layout._getOption("horizontal");
    return this.layout.options.percentPosition && e ? t / this.layout.size.height * 100 + "%" : t + "px"
}, h._transitionTo = function(t, e) {
    this.getPosition();
    var i = this.position.x,
        n = this.position.y,
        s = parseInt(t, 10),
        o = parseInt(e, 10),
        r = s === this.position.x && o === this.position.y;
    if (this.setPosition(t, e), !r || this.isTransitioning) {
        var a = t - i,
            h = e - n,
            l = {};
        l.transform = this.getTranslate(a, h), this.transition({
            to: l,
            onTransitionEnd: {
                transform: this.layoutPosition
            },
            isCleaning: !0
        })
    } else this.layoutPosition()
}, h.getTranslate = function(t, e) {
    return "translate3d(" + (t = this.layout._getOption("originLeft") ? t : -t) + "px, " + (e = this.layout._getOption("originTop") ? e : -e) + "px, 0)"
}, h.goTo = function(t, e) {
    this.setPosition(t, e), this.layoutPosition()
}, h.moveTo = h._transitionTo, h.setPosition = function(t, e) {
    this.position.x = parseInt(t, 10), this.position.y = parseInt(e, 10)
}, h._nonTransition = function(t) {
    for (var e in this.css(t.to), t.isCleaning && this._removeStyles(t.to), t.onTransitionEnd) t.onTransitionEnd[e].call(this)
}, h.transition = function(t) {
    if (parseFloat(this.layout.options.transitionDuration)) {
        var e = this._transn;
        for (var i in t.onTransitionEnd) e.onEnd[i] = t.onTransitionEnd[i];
        for (i in t.to) e.ingProperties[i] = !0, t.isCleaning && (e.clean[i] = !0);
        if (t.from) {
            this.css(t.from);
            this.element.offsetHeight;
            null
        }
        this.enableTransition(t.to), this.css(t.to), this.isTransitioning = !0
    } else this._nonTransition(t)
};
var l = "opacity," + function(t) {
    return t.replace(/([A-Z])/g, function(t) {
        return "-" + t.toLowerCase()
    })
}(o);
h.enableTransition = function() {
    if (!this.isTransitioning) {
        var t = this.layout.options.transitionDuration;
        t = "number" == typeof t ? t + "ms" : t, this.css({
            transitionProperty: l,
            transitionDuration: t,
            transitionDelay: this.staggerDelay || 0
        }), this.element.addEventListener(r, this, !1)
    }
}, h.onwebkitTransitionEnd = function(t) {
    this.ontransitionend(t)
}, h.onotransitionend = function(t) {
    this.ontransitionend(t)
};
var u = {
    "-webkit-transform": "transform"
};
h.ontransitionend = function(t) {
    if (t.target === this.element) {
        var e = this._transn,
            i = u[t.propertyName] || t.propertyName;
        if (delete e.ingProperties[i], function(t) {
                for (var e in t) return !1;
                return !0
            }(e.ingProperties) && this.disableTransition(), i in e.clean && (this.element.style[t.propertyName] = "", delete e.clean[i]), i in e.onEnd) e.onEnd[i].call(this), delete e.onEnd[i];
        this.emitEvent("transitionEnd", [this])
    }
}, h.disableTransition = function() {
    this.removeTransitionStyles(), this.element.removeEventListener(r, this, !1), this.isTransitioning = !1
}, h._removeStyles = function(t) {
    var e = {};
    for (var i in t) e[i] = "";
    this.css(e)
};
var c = {
    transitionProperty: "",
    transitionDuration: "",
    transitionDelay: ""
};
return h.removeTransitionStyles = function() {
    this.css(c)
}, h.stagger = function(t) {
    t = isNaN(t) ? 0 : t, this.staggerDelay = t + "ms"
}, h.removeElem = function() {
    this.element.parentNode.removeChild(this.element), this.css({
        display: ""
    }), this.emitEvent("remove", [this])
}, h.remove = function() {
    return s && parseFloat(this.layout.options.transitionDuration) ? (this.once("transitionEnd", function() {
        this.removeElem()
    }), void this.hide()) : void this.removeElem()
}, h.reveal = function() {
    delete this.isHidden, this.css({
        display: ""
    });
    var t = this.layout.options,
        e = {};
    e[this.getHideRevealTransitionEndProperty("visibleStyle")] = this.onRevealTransitionEnd, this.transition({
        from: t.hiddenStyle,
        to: t.visibleStyle,
        isCleaning: !0,
        onTransitionEnd: e
    })
}, h.onRevealTransitionEnd = function() {
    this.isHidden || this.emitEvent("reveal")
}, h.getHideRevealTransitionEndProperty = function(t) {
    var e = this.layout.options[t];
    if (e.opacity) return "opacity";
    for (var i in e) return i
}, h.hide = function() {
    this.isHidden = !0, this.css({
        display: ""
    });
    var t = this.layout.options,
        e = {};
    e[this.getHideRevealTransitionEndProperty("hiddenStyle")] = this.onHideTransitionEnd, this.transition({
        from: t.visibleStyle,
        to: t.hiddenStyle,
        isCleaning: !0,
        onTransitionEnd: e
    })
}, h.onHideTransitionEnd = function() {
    this.isHidden && (this.css({
        display: "none"
    }), this.emitEvent("hide"))
}, h.destroy = function() {
    this.css({
        position: "",
        left: "",
        right: "",
        top: "",
        bottom: "",
        transition: "",
        transform: ""
    })
}, i

}), function(t, e) {

"use strict";
"function" == typeof define && define.amd ? define("outlayer/outlayer", ["ev-emitter/ev-emitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"], function(i, n, s, o) {
    return e(t, i, n, s, o)
}) : "object" == typeof module && module.exports ? module.exports = e(t, require("ev-emitter"), require("get-size"), require("fizzy-ui-utils"), require("./item")) : t.Outlayer = e(t, t.EvEmitter, t.getSize, t.fizzyUIUtils, t.Outlayer.Item)

}(window, function(t, e, i, n, s) {

"use strict";

function o(t, e) {
    var i = n.getQueryElement(t);
    if (i) {
        this.element = i, h && (this.$element = h(this.element)), this.options = n.extend({}, this.constructor.defaults), this.option(e);
        var s = ++u;
        this.element.outlayerGUID = s, c[s] = this, this._create(), this._getOption("initLayout") && this.layout()
    } else a && a.error("Bad element for " + this.constructor.namespace + ": " + (i || t))
}

function r(t) {
    function e() {
        t.apply(this, arguments)
    }
    return e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e
}
var a = t.console,
    h = t.jQuery,
    l = function() {},
    u = 0,
    c = {};
o.namespace = "outlayer", o.Item = s, o.defaults = {
    containerStyle: {
        position: "relative"
    },
    initLayout: !0,
    originLeft: !0,
    originTop: !0,
    resize: !0,
    resizeContainer: !0,
    transitionDuration: "0.4s",
    hiddenStyle: {
        opacity: 0,
        transform: "scale(0.001)"
    },
    visibleStyle: {
        opacity: 1,
        transform: "scale(1)"
    }
};
var d = o.prototype;
n.extend(d, e.prototype), d.option = function(t) {
    n.extend(this.options, t)
}, d._getOption = function(t) {
    var e = this.constructor.compatOptions[t];
    return e && void 0 !== this.options[e] ? this.options[e] : this.options[t]
}, o.compatOptions = {
    initLayout: "isInitLayout",
    horizontal: "isHorizontal",
    layoutInstant: "isLayoutInstant",
    originLeft: "isOriginLeft",
    originTop: "isOriginTop",
    resize: "isResizeBound",
    resizeContainer: "isResizingContainer"
}, d._create = function() {
    this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), n.extend(this.element.style, this.options.containerStyle), this._getOption("resize") && this.bindResize()
}, d.reloadItems = function() {
    this.items = this._itemize(this.element.children)
}, d._itemize = function(t) {
    for (var e = this._filterFindItemElements(t), i = this.constructor.Item, n = [], s = 0; s < e.length; s++) {
        var o = new i(e[s], this);
        n.push(o)
    }
    return n
}, d._filterFindItemElements = function(t) {
    return n.filterFindElements(t, this.options.itemSelector)
}, d.getItemElements = function() {
    return this.items.map(function(t) {
        return t.element
    })
}, d.layout = function() {
    this._resetLayout(), this._manageStamps();
    var t = this._getOption("layoutInstant"),
        e = void 0 !== t ? t : !this._isLayoutInited;
    this.layoutItems(this.items, e), this._isLayoutInited = !0
}, d._init = d.layout, d._resetLayout = function() {
    this.getSize()
}, d.getSize = function() {
    this.size = i(this.element)
}, d._getMeasurement = function(t, e) {
    var n, s = this.options[t];
    s ? ("string" == typeof s ? n = this.element.querySelector(s) : s instanceof HTMLElement && (n = s), this[t] = n ? i(n)[e] : s) : this[t] = 0
}, d.layoutItems = function(t, e) {
    t = this._getItemsForLayout(t), this._layoutItems(t, e), this._postLayout()
}, d._getItemsForLayout = function(t) {
    return t.filter(function(t) {
        return !t.isIgnored
    })
}, d._layoutItems = function(t, e) {
    if (this._emitCompleteOnItems("layout", t), t && t.length) {
        var i = [];
        t.forEach(function(t) {
            var n = this._getItemLayoutPosition(t);
            n.item = t, n.isInstant = e || t.isLayoutInstant, i.push(n)
        }, this), this._processLayoutQueue(i)
    }
}, d._getItemLayoutPosition = function() {
    return {
        x: 0,
        y: 0
    }
}, d._processLayoutQueue = function(t) {
    this.updateStagger(), t.forEach(function(t, e) {
        this._positionItem(t.item, t.x, t.y, t.isInstant, e)
    }, this)
}, d.updateStagger = function() {
    var t = this.options.stagger;
    return null == t ? void(this.stagger = 0) : (this.stagger = function(t) {
        if ("number" == typeof t) return t;
        var e = t.match(/(^\d*\.?\d*)(\w*)/),
            i = e && e[1],
            n = e && e[2];
        return i.length ? (i = parseFloat(i)) * (p[n] || 1) : 0
    }(t), this.stagger)
}, d._positionItem = function(t, e, i, n, s) {
    n ? t.goTo(e, i) : (t.stagger(s * this.stagger), t.moveTo(e, i))
}, d._postLayout = function() {
    this.resizeContainer()
}, d.resizeContainer = function() {
    if (this._getOption("resizeContainer")) {
        var t = this._getContainerSize();
        t && (this._setContainerMeasure(t.width, !0), this._setContainerMeasure(t.height, !1))
    }
}, d._getContainerSize = l, d._setContainerMeasure = function(t, e) {
    if (void 0 !== t) {
        var i = this.size;
        i.isBorderBox && (t += e ? i.paddingLeft + i.paddingRight + i.borderLeftWidth + i.borderRightWidth : i.paddingBottom + i.paddingTop + i.borderTopWidth + i.borderBottomWidth), t = Math.max(t, 0), this.element.style[e ? "width" : "height"] = t + "px"
    }
}, d._emitCompleteOnItems = function(t, e) {
    function i() {
        s.dispatchEvent(t + "Complete", null, [e])
    }

    function n() {
        ++r == o && i()
    }
    var s = this,
        o = e.length;
    if (e && o) {
        var r = 0;
        e.forEach(function(e) {
            e.once(t, n)
        })
    } else i()
}, d.dispatchEvent = function(t, e, i) {
    var n = e ? [e].concat(i) : i;
    if (this.emitEvent(t, n), h)
        if (this.$element = this.$element || h(this.element), e) {
            var s = h.Event(e);
            s.type = t, this.$element.trigger(s, i)
        } else this.$element.trigger(t, i)
}, d.ignore = function(t) {
    var e = this.getItem(t);
    e && (e.isIgnored = !0)
}, d.unignore = function(t) {
    var e = this.getItem(t);
    e && delete e.isIgnored
}, d.stamp = function(t) {
    (t = this._find(t)) && (this.stamps = this.stamps.concat(t), t.forEach(this.ignore, this))
}, d.unstamp = function(t) {
    (t = this._find(t)) && t.forEach(function(t) {
        n.removeFrom(this.stamps, t), this.unignore(t)
    }, this)
}, d._find = function(t) {
    return t ? ("string" == typeof t && (t = this.element.querySelectorAll(t)), t = n.makeArray(t)) : void 0
}, d._manageStamps = function() {
    this.stamps && this.stamps.length && (this._getBoundingRect(), this.stamps.forEach(this._manageStamp, this))
}, d._getBoundingRect = function() {
    var t = this.element.getBoundingClientRect(),
        e = this.size;
    this._boundingRect = {
        left: t.left + e.paddingLeft + e.borderLeftWidth,
        top: t.top + e.paddingTop + e.borderTopWidth,
        right: t.right - (e.paddingRight + e.borderRightWidth),
        bottom: t.bottom - (e.paddingBottom + e.borderBottomWidth)
    }
}, d._manageStamp = l, d._getElementOffset = function(t) {
    var e = t.getBoundingClientRect(),
        n = this._boundingRect,
        s = i(t);
    return {
        left: e.left - n.left - s.marginLeft,
        top: e.top - n.top - s.marginTop,
        right: n.right - e.right - s.marginRight,
        bottom: n.bottom - e.bottom - s.marginBottom
    }
}, d.handleEvent = n.handleEvent, d.bindResize = function() {
    t.addEventListener("resize", this), this.isResizeBound = !0
}, d.unbindResize = function() {
    t.removeEventListener("resize", this), this.isResizeBound = !1
}, d.onresize = function() {
    this.resize()
}, n.debounceMethod(o, "onresize", 100), d.resize = function() {
    this.isResizeBound && this.needsResizeLayout() && this.layout()
}, d.needsResizeLayout = function() {
    var t = i(this.element);
    return this.size && t && t.innerWidth !== this.size.innerWidth
}, d.addItems = function(t) {
    var e = this._itemize(t);
    return e.length && (this.items = this.items.concat(e)), e
}, d.appended = function(t) {
    var e = this.addItems(t);
    e.length && (this.layoutItems(e, !0), this.reveal(e))
}, d.prepended = function(t) {
    var e = this._itemize(t);
    if (e.length) {
        var i = this.items.slice(0);
        this.items = e.concat(i), this._resetLayout(), this._manageStamps(), this.layoutItems(e, !0), this.reveal(e), this.layoutItems(i)
    }
}, d.reveal = function(t) {
    if (this._emitCompleteOnItems("reveal", t), t && t.length) {
        var e = this.updateStagger();
        t.forEach(function(t, i) {
            t.stagger(i * e), t.reveal()
        })
    }
}, d.hide = function(t) {
    if (this._emitCompleteOnItems("hide", t), t && t.length) {
        var e = this.updateStagger();
        t.forEach(function(t, i) {
            t.stagger(i * e), t.hide()
        })
    }
}, d.revealItemElements = function(t) {
    var e = this.getItems(t);
    this.reveal(e)
}, d.hideItemElements = function(t) {
    var e = this.getItems(t);
    this.hide(e)
}, d.getItem = function(t) {
    for (var e = 0; e < this.items.length; e++) {
        var i = this.items[e];
        if (i.element == t) return i
    }
}, d.getItems = function(t) {
    t = n.makeArray(t);
    var e = [];
    return t.forEach(function(t) {
        var i = this.getItem(t);
        i && e.push(i)
    }, this), e
}, d.remove = function(t) {
    var e = this.getItems(t);
    this._emitCompleteOnItems("remove", e), e && e.length && e.forEach(function(t) {
        t.remove(), n.removeFrom(this.items, t)
    }, this)
}, d.destroy = function() {
    var t = this.element.style;
    t.height = "", t.position = "", t.width = "", this.items.forEach(function(t) {
        t.destroy()
    }), this.unbindResize();
    var e = this.element.outlayerGUID;
    delete c[e], delete this.element.outlayerGUID, h && h.removeData(this.element, this.constructor.namespace)
}, o.data = function(t) {
    var e = (t = n.getQueryElement(t)) && t.outlayerGUID;
    return e && c[e]
}, o.create = function(t, e) {
    var i = r(o);
    return i.defaults = n.extend({}, o.defaults), n.extend(i.defaults, e), i.compatOptions = n.extend({}, o.compatOptions), i.namespace = t, i.data = o.data, i.Item = r(s), n.htmlInit(i, t), h && h.bridget && h.bridget(t, i), i
};
var p = {
    ms: 1,
    s: 1e3
};
return o.Item = s, o

}), function(t, e) {

"function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size"], e) : "object" == typeof module && module.exports ? module.exports = e(require("outlayer"), require("get-size")) : t.Masonry = e(t.Outlayer, t.getSize)

}(window, function(t, e) {

var i = t.create("masonry");
i.compatOptions.fitWidth = "isFitWidth";
var n = i.prototype;
return n._resetLayout = function() {
    this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"), this.measureColumns(), this.colYs = [];
    for (var t = 0; t < this.cols; t++) this.colYs.push(0);
    this.maxY = 0, this.horizontalColIndex = 0
}, n.measureColumns = function() {
    if (this.getContainerWidth(), !this.columnWidth) {
        var t = this.items[0],
            i = t && t.element;
        this.columnWidth = i && e(i).outerWidth || this.containerWidth
    }
    var n = this.columnWidth += this.gutter,
        s = this.containerWidth + this.gutter,
        o = s / n,
        r = n - s % n;
    o = Math[r && 1 > r ? "round" : "floor"](o), this.cols = Math.max(o, 1)
}, n.getContainerWidth = function() {
    var t = this._getOption("fitWidth") ? this.element.parentNode : this.element,
        i = e(t);
    this.containerWidth = i && i.innerWidth
}, n._getItemLayoutPosition = function(t) {
    t.getSize();
    var e = t.size.outerWidth % this.columnWidth,
        i = Math[e && 1 > e ? "round" : "ceil"](t.size.outerWidth / this.columnWidth);
    i = Math.min(i, this.cols);
    for (var n = this[this.options.horizontalOrder ? "_getHorizontalColPosition" : "_getTopColPosition"](i, t), s = {
            x: this.columnWidth * n.col,
            y: n.y
        }, o = n.y + t.size.outerHeight, r = i + n.col, a = n.col; r > a; a++) this.colYs[a] = o;
    return s
}, n._getTopColPosition = function(t) {
    var e = this._getTopColGroup(t),
        i = Math.min.apply(Math, e);
    return {
        col: e.indexOf(i),
        y: i
    }
}, n._getTopColGroup = function(t) {
    if (2 > t) return this.colYs;
    for (var e = [], i = this.cols + 1 - t, n = 0; i > n; n++) e[n] = this._getColGroupY(n, t);
    return e
}, n._getColGroupY = function(t, e) {
    if (2 > e) return this.colYs[t];
    var i = this.colYs.slice(t, t + e);
    return Math.max.apply(Math, i)
}, n._getHorizontalColPosition = function(t, e) {
    var i = this.horizontalColIndex % this.cols;
    i = t > 1 && i + t > this.cols ? 0 : i;
    var n = e.size.outerWidth && e.size.outerHeight;
    return this.horizontalColIndex = n ? i + t : this.horizontalColIndex, {
        col: i,
        y: this._getColGroupY(i, t)
    }
}, n._manageStamp = function(t) {
    var i = e(t),
        n = this._getElementOffset(t),
        s = this._getOption("originLeft") ? n.left : n.right,
        o = s + i.outerWidth,
        r = Math.floor(s / this.columnWidth);
    r = Math.max(0, r);
    var a = Math.floor(o / this.columnWidth);
    a -= o % this.columnWidth ? 0 : 1, a = Math.min(this.cols - 1, a);
    for (var h = (this._getOption("originTop") ? n.top : n.bottom) + i.outerHeight, l = r; a >= l; l++) this.colYs[l] = Math.max(h, this.colYs[l])
}, n._getContainerSize = function() {
    this.maxY = Math.max.apply(Math, this.colYs);
    var t = {
        height: this.maxY
    };
    return this._getOption("fitWidth") && (t.width = this._getContainerFitWidth()), t
}, n._getContainerFitWidth = function() {
    for (var t = 0, e = this.cols; --e && 0 === this.colYs[e];) t++;
    return (this.cols - t) * this.columnWidth - this.gutter
}, n.needsResizeLayout = function() {
    var t = this.containerWidth;
    return this.getContainerWidth(), t != this.containerWidth
}, i

}), function(t, e, i, n) {

function s(e, i) {
    this.settings = null, this.options = t.extend({}, s.Defaults, i), this.$element = t(e), this._handlers = {}, this._plugins = {}, this._supress = {}, this._current = null, this._speed = null, this._coordinates = [], this._breakpoint = null, this._width = null, this._items = [], this._clones = [], this._mergers = [], this._widths = [], this._invalidated = {}, this._pipe = [], this._drag = {
        time: null,
        target: null,
        pointer: null,
        stage: {
            start: null,
            current: null
        },
        direction: null
    }, this._states = {
        current: {},
        tags: {
            initializing: ["busy"],
            animating: ["busy"],
            dragging: ["interacting"]
        }
    }, t.each(["onResize", "onThrottledResize"], t.proxy(function(e, i) {
        this._handlers[i] = t.proxy(this[i], this)
    }, this)), t.each(s.Plugins, t.proxy(function(t, e) {
        this._plugins[t.charAt(0).toLowerCase() + t.slice(1)] = new e(this)
    }, this)), t.each(s.Workers, t.proxy(function(e, i) {
        this._pipe.push({
            filter: i.filter,
            run: t.proxy(i.run, this)
        })
    }, this)), this.setup(), this.initialize()
}
s.Defaults = {
    items: 3,
    loop: !1,
    center: !1,
    rewind: !1,
    mouseDrag: !0,
    touchDrag: !0,
    pullDrag: !0,
    freeDrag: !1,
    margin: 0,
    stagePadding: 0,
    merge: !1,
    mergeFit: !0,
    autoWidth: !1,
    startPosition: 0,
    rtl: !1,
    smartSpeed: 250,
    fluidSpeed: !1,
    dragEndSpeed: !1,
    responsive: {},
    responsiveRefreshRate: 200,
    responsiveBaseElement: e,
    fallbackEasing: "swing",
    info: !1,
    nestedItemSelector: !1,
    itemElement: "div",
    stageElement: "div",
    refreshClass: "owl-refresh",
    loadedClass: "owl-loaded",
    loadingClass: "owl-loading",
    rtlClass: "owl-rtl",
    responsiveClass: "owl-responsive",
    dragClass: "owl-drag",
    itemClass: "owl-item",
    stageClass: "owl-stage",
    stageOuterClass: "owl-stage-outer",
    grabClass: "owl-grab"
}, s.Width = {
    Default: "default",
    Inner: "inner",
    Outer: "outer"
}, s.Type = {
    Event: "event",
    State: "state"
}, s.Plugins = {}, s.Workers = [{
    filter: ["width", "settings"],
    run: function() {
        this._width = this.$element.width()
    }
}, {
    filter: ["width", "items", "settings"],
    run: function(t) {
        t.current = this._items && this._items[this.relative(this._current)]
    }
}, {
    filter: ["items", "settings"],
    run: function() {
        this.$stage.children(".cloned").remove()
    }
}, {
    filter: ["width", "items", "settings"],
    run: function(t) {
        var e = this.settings.margin || "",
            i = !this.settings.autoWidth,
            n = this.settings.rtl,
            s = {
                width: "auto",
                "margin-left": n ? e : "",
                "margin-right": n ? "" : e
            };
        !i && this.$stage.children().css(s), t.css = s
    }
}, {
    filter: ["width", "items", "settings"],
    run: function(t) {
        var e = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,
            i = null,
            n = this._items.length,
            s = !this.settings.autoWidth,
            o = [];
        for (t.items = {
                merge: !1,
                width: e
            }; n--;) i = this._mergers[n], i = this.settings.mergeFit && Math.min(i, this.settings.items) || i, t.items.merge = i > 1 || t.items.merge, o[n] = s ? e * i : this._items[n].width();
        this._widths = o
    }
}, {
    filter: ["items", "settings"],
    run: function() {
        var e = [],
            i = this._items,
            n = this.settings,
            s = Math.max(2 * n.items, 4),
            o = 2 * Math.ceil(i.length / 2),
            r = n.loop && i.length ? n.rewind ? s : Math.max(s, o) : 0,
            a = "",
            h = "";
        for (r /= 2; r > 0;) e.push(this.normalize(e.length / 2, !0)), a += i[e[e.length - 1]][0].outerHTML, e.push(this.normalize(i.length - 1 - (e.length - 1) / 2, !0)), h = i[e[e.length - 1]][0].outerHTML + h, r -= 1;
        this._clones = e, t(a).addClass("cloned").appendTo(this.$stage), t(h).addClass("cloned").prependTo(this.$stage)
    }
}, {
    filter: ["width", "items", "settings"],
    run: function() {
        for (var t = this.settings.rtl ? 1 : -1, e = this._clones.length + this._items.length, i = -1, n = 0, s = 0, o = []; ++i < e;) n = o[i - 1] || 0, s = this._widths[this.relative(i)] + this.settings.margin, o.push(n + s * t);
        this._coordinates = o
    }
}, {
    filter: ["width", "items", "settings"],
    run: function() {
        var t = this.settings.stagePadding,
            e = this._coordinates,
            i = {
                width: Math.ceil(Math.abs(e[e.length - 1])) + 2 * t,
                "padding-left": t || "",
                "padding-right": t || ""
            };
        this.$stage.css(i)
    }
}, {
    filter: ["width", "items", "settings"],
    run: function(t) {
        var e = this._coordinates.length,
            i = !this.settings.autoWidth,
            n = this.$stage.children();
        if (i && t.items.merge)
            for (; e--;) t.css.width = this._widths[this.relative(e)], n.eq(e).css(t.css);
        else i && (t.css.width = t.items.width, n.css(t.css))
    }
}, {
    filter: ["items"],
    run: function() {
        this._coordinates.length < 1 && this.$stage.removeAttr("style")
    }
}, {
    filter: ["width", "items", "settings"],
    run: function(t) {
        t.current = t.current ? this.$stage.children().index(t.current) : 0, t.current = Math.max(this.minimum(), Math.min(this.maximum(), t.current)), this.reset(t.current)
    }
}, {
    filter: ["position"],
    run: function() {
        this.animate(this.coordinates(this._current))
    }
}, {
    filter: ["width", "position", "items", "settings"],
    run: function() {
        var t, e, i, n, s = this.settings.rtl ? 1 : -1,
            o = 2 * this.settings.stagePadding,
            r = this.coordinates(this.current()) + o,
            a = r + this.width() * s,
            h = [];
        for (i = 0, n = this._coordinates.length; i < n; i++) t = this._coordinates[i - 1] || 0, e = Math.abs(this._coordinates[i]) + o * s, (this.op(t, "<=", r) && this.op(t, ">", a) || this.op(e, "<", r) && this.op(e, ">", a)) && h.push(i);
        this.$stage.children(".active").removeClass("active"), this.$stage.children(":eq(" + h.join("), :eq(") + ")").addClass("active"), this.$stage.children(".center").removeClass("center"), this.settings.center && this.$stage.children().eq(this.current()).addClass("center")
    }
}], s.prototype.initialize = function() {
    var e, i, s;
    (this.enter("initializing"), this.trigger("initialize"), this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl), this.settings.autoWidth && !this.is("pre-loading")) && (e = this.$element.find("img"), i = this.settings.nestedItemSelector ? "." + this.settings.nestedItemSelector : n, s = this.$element.children(i).width(), e.length && s <= 0 && this.preloadAutoWidthImages(e));
    this.$element.addClass(this.options.loadingClass), this.$stage = t("<" + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>').wrap('<div class="' + this.settings.stageOuterClass + '"/>'), this.$element.append(this.$stage.parent()), this.replace(this.$element.children().not(this.$stage.parent())), this.$element.is(":visible") ? this.refresh() : this.invalidate("width"), this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass), this.registerEventHandlers(), this.leave("initializing"), this.trigger("initialized")
}, s.prototype.setup = function() {
    var e = this.viewport(),
        i = this.options.responsive,
        n = -1,
        s = null;
    i ? (t.each(i, function(t) {
        t <= e && t > n && (n = Number(t))
    }), "function" == typeof(s = t.extend({}, this.options, i[n])).stagePadding && (s.stagePadding = s.stagePadding()), delete s.responsive, s.responsiveClass && this.$element.attr("class", this.$element.attr("class").replace(new RegExp("(" + this.options.responsiveClass + "-)\\S+\\s", "g"), "$1" + n))) : s = t.extend({}, this.options), this.trigger("change", {
        property: {
            name: "settings",
            value: s
        }
    }), this._breakpoint = n, this.settings = s, this.invalidate("settings"), this.trigger("changed", {
        property: {
            name: "settings",
            value: this.settings
        }
    })
}, s.prototype.optionsLogic = function() {
    this.settings.autoWidth && (this.settings.stagePadding = !1, this.settings.merge = !1)
}, s.prototype.prepare = function(e) {
    var i = this.trigger("prepare", {
        content: e
    });
    return i.data || (i.data = t("<" + this.settings.itemElement + "/>").addClass(this.options.itemClass).append(e)), this.trigger("prepared", {
        content: i.data
    }), i.data
}, s.prototype.update = function() {
    for (var e = 0, i = this._pipe.length, n = t.proxy(function(t) {
            return this[t]
        }, this._invalidated), s = {}; e < i;)(this._invalidated.all || t.grep(this._pipe[e].filter, n).length > 0) && this._pipe[e].run(s), e++;
    this._invalidated = {}, !this.is("valid") && this.enter("valid")
}, s.prototype.width = function(t) {
    switch (t = t || s.Width.Default) {
        case s.Width.Inner:
        case s.Width.Outer:
            return this._width;
        default:
            return this._width - 2 * this.settings.stagePadding + this.settings.margin
    }
}, s.prototype.refresh = function() {
    this.enter("refreshing"), this.trigger("refresh"), this.setup(), this.optionsLogic(), this.$element.addClass(this.options.refreshClass), this.update(), this.$element.removeClass(this.options.refreshClass), this.leave("refreshing"), this.trigger("refreshed")
}, s.prototype.onThrottledResize = function() {
    e.clearTimeout(this.resizeTimer), this.resizeTimer = e.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate)
}, s.prototype.onResize = function() {
    return !!this._items.length && this._width !== this.$element.width() && !!this.$element.is(":visible") && (this.enter("resizing"), this.trigger("resize").isDefaultPrevented() ? (this.leave("resizing"), !1) : (this.invalidate("width"), this.refresh(), this.leave("resizing"), void this.trigger("resized")))
}, s.prototype.registerEventHandlers = function() {
    t.support.transition && this.$stage.on(t.support.transition.end + ".owl.core", t.proxy(this.onTransitionEnd, this)), !1 !== this.settings.responsive && this.on(e, "resize", this._handlers.onThrottledResize), this.settings.mouseDrag && (this.$element.addClass(this.options.dragClass), this.$stage.on("mousedown.owl.core", t.proxy(this.onDragStart, this)), this.$stage.on("dragstart.owl.core selectstart.owl.core", function() {
        return !1
    })), this.settings.touchDrag && (this.$stage.on("touchstart.owl.core", t.proxy(this.onDragStart, this)), this.$stage.on("touchcancel.owl.core", t.proxy(this.onDragEnd, this)))
}, s.prototype.onDragStart = function(e) {
    var n = null;
    3 !== e.which && (t.support.transform ? n = {
        x: (n = this.$stage.css("transform").replace(/.*\(|\)| /g, "").split(","))[16 === n.length ? 12 : 4],
        y: n[16 === n.length ? 13 : 5]
    } : (n = this.$stage.position(), n = {
        x: this.settings.rtl ? n.left + this.$stage.width() - this.width() + this.settings.margin : n.left,
        y: n.top
    }), this.is("animating") && (t.support.transform ? this.animate(n.x) : this.$stage.stop(), this.invalidate("position")), this.$element.toggleClass(this.options.grabClass, "mousedown" === e.type), this.speed(0), this._drag.time = (new Date).getTime(), this._drag.target = t(e.target), this._drag.stage.start = n, this._drag.stage.current = n, this._drag.pointer = this.pointer(e), t(i).on("mouseup.owl.core touchend.owl.core", t.proxy(this.onDragEnd, this)), t(i).one("mousemove.owl.core touchmove.owl.core", t.proxy(function(e) {
        var n = this.difference(this._drag.pointer, this.pointer(e));
        t(i).on("mousemove.owl.core touchmove.owl.core", t.proxy(this.onDragMove, this)), Math.abs(n.x) < Math.abs(n.y) && this.is("valid") || (e.preventDefault(), this.enter("dragging"), this.trigger("drag"))
    }, this)))
}, s.prototype.onDragMove = function(t) {
    var e = null,
        i = null,
        n = null,
        s = this.difference(this._drag.pointer, this.pointer(t)),
        o = this.difference(this._drag.stage.start, s);
    this.is("dragging") && (t.preventDefault(), this.settings.loop ? (e = this.coordinates(this.minimum()), i = this.coordinates(this.maximum() + 1) - e, o.x = ((o.x - e) % i + i) % i + e) : (e = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()), i = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()), n = this.settings.pullDrag ? -1 * s.x / 5 : 0, o.x = Math.max(Math.min(o.x, e + n), i + n)), this._drag.stage.current = o, this.animate(o.x))
}, s.prototype.onDragEnd = function(e) {
    var n = this.difference(this._drag.pointer, this.pointer(e)),
        s = this._drag.stage.current,
        o = n.x > 0 ^ this.settings.rtl ? "left" : "right";
    t(i).off(".owl.core"), this.$element.removeClass(this.options.grabClass), (0 !== n.x && this.is("dragging") || !this.is("valid")) && (this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed), this.current(this.closest(s.x, 0 !== n.x ? o : this._drag.direction)), this.invalidate("position"), this.update(), this._drag.direction = o, (Math.abs(n.x) > 3 || (new Date).getTime() - this._drag.time > 300) && this._drag.target.one("click.owl.core", function() {
        return !1
    })), this.is("dragging") && (this.leave("dragging"), this.trigger("dragged"))
}, s.prototype.closest = function(e, i) {
    var n = -1,
        s = this.width(),
        o = this.coordinates();
    return this.settings.freeDrag || t.each(o, t.proxy(function(t, r) {
        return "left" === i && e > r - 30 && e < r + 30 ? n = t : "right" === i && e > r - s - 30 && e < r - s + 30 ? n = t + 1 : this.op(e, "<", r) && this.op(e, ">", o[t + 1] || r - s) && (n = "left" === i ? t + 1 : t), -1 === n
    }, this)), this.settings.loop || (this.op(e, ">", o[this.minimum()]) ? n = e = this.minimum() : this.op(e, "<", o[this.maximum()]) && (n = e = this.maximum())), n
}, s.prototype.animate = function(e) {
    var i = this.speed() > 0;
    this.is("animating") && this.onTransitionEnd(), i && (this.enter("animating"), this.trigger("translate")), t.support.transform3d && t.support.transition ? this.$stage.css({
        transform: "translate3d(" + e + "px,0px,0px)",
        transition: this.speed() / 1e3 + "s"
    }) : i ? this.$stage.animate({
        left: e + "px"
    }, this.speed(), this.settings.fallbackEasing, t.proxy(this.onTransitionEnd, this)) : this.$stage.css({
        left: e + "px"
    })
}, s.prototype.is = function(t) {
    return this._states.current[t] && this._states.current[t] > 0
}, s.prototype.current = function(t) {
    if (t === n) return this._current;
    if (0 === this._items.length) return n;
    if (t = this.normalize(t), this._current !== t) {
        var e = this.trigger("change", {
            property: {
                name: "position",
                value: t
            }
        });
        e.data !== n && (t = this.normalize(e.data)), this._current = t, this.invalidate("position"), this.trigger("changed", {
            property: {
                name: "position",
                value: this._current
            }
        })
    }
    return this._current
}, s.prototype.invalidate = function(e) {
    return "string" === t.type(e) && (this._invalidated[e] = !0, this.is("valid") && this.leave("valid")), t.map(this._invalidated, function(t, e) {
        return e
    })
}, s.prototype.reset = function(t) {
    (t = this.normalize(t)) !== n && (this._speed = 0, this._current = t, this.suppress(["translate", "translated"]), this.animate(this.coordinates(t)), this.release(["translate", "translated"]))
}, s.prototype.normalize = function(t, e) {
    var i = this._items.length,
        s = e ? 0 : this._clones.length;
    return !this.isNumeric(t) || i < 1 ? t = n : (t < 0 || t >= i + s) && (t = ((t - s / 2) % i + i) % i + s / 2), t
}, s.prototype.relative = function(t) {
    return t -= this._clones.length / 2, this.normalize(t, !0)
}, s.prototype.maximum = function(t) {
    var e, i, n, s = this.settings,
        o = this._coordinates.length;
    if (s.loop) o = this._clones.length / 2 + this._items.length - 1;
    else if (s.autoWidth || s.merge) {
        if (e = this._items.length)
            for (i = this._items[--e].width(), n = this.$element.width(); e-- && !((i += this._items[e].width() + this.settings.margin) > n););
        o = e + 1
    } else o = s.center ? this._items.length - 1 : this._items.length - s.items;
    return t && (o -= this._clones.length / 2), Math.max(o, 0)
}, s.prototype.minimum = function(t) {
    return t ? 0 : this._clones.length / 2
}, s.prototype.items = function(t) {
    return t === n ? this._items.slice() : (t = this.normalize(t, !0), this._items[t])
}, s.prototype.mergers = function(t) {
    return t === n ? this._mergers.slice() : (t = this.normalize(t, !0), this._mergers[t])
}, s.prototype.clones = function(e) {
    var i = this._clones.length / 2,
        s = i + this._items.length,
        o = function(t) {
            return t % 2 == 0 ? s + t / 2 : i - (t + 1) / 2
        };
    return e === n ? t.map(this._clones, function(t, e) {
        return o(e)
    }) : t.map(this._clones, function(t, i) {
        return t === e ? o(i) : null
    })
}, s.prototype.speed = function(t) {
    return t !== n && (this._speed = t), this._speed
}, s.prototype.coordinates = function(e) {
    var i, s = 1,
        o = e - 1;
    return e === n ? t.map(this._coordinates, t.proxy(function(t, e) {
        return this.coordinates(e)
    }, this)) : (this.settings.center ? (this.settings.rtl && (s = -1, o = e + 1), i = this._coordinates[e], i += (this.width() - i + (this._coordinates[o] || 0)) / 2 * s) : i = this._coordinates[o] || 0, i = Math.ceil(i))
}, s.prototype.duration = function(t, e, i) {
    return 0 === i ? 0 : Math.min(Math.max(Math.abs(e - t), 1), 6) * Math.abs(i || this.settings.smartSpeed)
}, s.prototype.to = function(t, e) {
    var i = this.current(),
        n = null,
        s = t - this.relative(i),
        o = (s > 0) - (s < 0),
        r = this._items.length,
        a = this.minimum(),
        h = this.maximum();
    this.settings.loop ? (!this.settings.rewind && Math.abs(s) > r / 2 && (s += -1 * o * r), (n = (((t = i + s) - a) % r + r) % r + a) !== t && n - s <= h && n - s > 0 && (i = n - s, t = n, this.reset(i))) : this.settings.rewind ? t = (t % (h += 1) + h) % h : t = Math.max(a, Math.min(h, t)), this.speed(this.duration(i, t, e)), this.current(t), this.$element.is(":visible") && this.update()
}, s.prototype.next = function(t) {
    t = t || !1, this.to(this.relative(this.current()) + 1, t)
}, s.prototype.prev = function(t) {
    t = t || !1, this.to(this.relative(this.current()) - 1, t)
}, s.prototype.onTransitionEnd = function(t) {
    if (t !== n && (t.stopPropagation(), (t.target || t.srcElement || t.originalTarget) !== this.$stage.get(0))) return !1;
    this.leave("animating"), this.trigger("translated")
}, s.prototype.viewport = function() {
    var n;
    return this.options.responsiveBaseElement !== e ? n = t(this.options.responsiveBaseElement).width() : e.innerWidth ? n = e.innerWidth : i.documentElement && i.documentElement.clientWidth ? n = i.documentElement.clientWidth : console.warn("Can not detect viewport width."), n
}, s.prototype.replace = function(e) {
    this.$stage.empty(), this._items = [], e && (e = e instanceof jQuery ? e : t(e)), this.settings.nestedItemSelector && (e = e.find("." + this.settings.nestedItemSelector)), e.filter(function() {
        return 1 === this.nodeType
    }).each(t.proxy(function(t, e) {
        e = this.prepare(e), this.$stage.append(e), this._items.push(e), this._mergers.push(1 * e.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)
    }, this)), this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0), this.invalidate("items")
}, s.prototype.add = function(e, i) {
    var s = this.relative(this._current);
    i = i === n ? this._items.length : this.normalize(i, !0), e = e instanceof jQuery ? e : t(e), this.trigger("add", {
        content: e,
        position: i
    }), e = this.prepare(e), 0 === this._items.length || i === this._items.length ? (0 === this._items.length && this.$stage.append(e), 0 !== this._items.length && this._items[i - 1].after(e), this._items.push(e), this._mergers.push(1 * e.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)) : (this._items[i].before(e), this._items.splice(i, 0, e), this._mergers.splice(i, 0, 1 * e.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)), this._items[s] && this.reset(this._items[s].index()), this.invalidate("items"), this.trigger("added", {
        content: e,
        position: i
    })
}, s.prototype.remove = function(t) {
    (t = this.normalize(t, !0)) !== n && (this.trigger("remove", {
        content: this._items[t],
        position: t
    }), this._items[t].remove(), this._items.splice(t, 1), this._mergers.splice(t, 1), this.invalidate("items"), this.trigger("removed", {
        content: null,
        position: t
    }))
}, s.prototype.preloadAutoWidthImages = function(e) {
    e.each(t.proxy(function(e, i) {
        this.enter("pre-loading"), i = t(i), t(new Image).one("load", t.proxy(function(t) {
            i.attr("src", t.target.src), i.css("opacity", 1), this.leave("pre-loading"), !this.is("pre-loading") && !this.is("initializing") && this.refresh()
        }, this)).attr("src", i.attr("src") || i.attr("data-src") || i.attr("data-src-retina"))
    }, this))
}, s.prototype.destroy = function() {
    for (var n in this.$element.off(".owl.core"), this.$stage.off(".owl.core"), t(i).off(".owl.core"), !1 !== this.settings.responsive && (e.clearTimeout(this.resizeTimer), this.off(e, "resize", this._handlers.onThrottledResize)), this._plugins) this._plugins[n].destroy();
    this.$stage.children(".cloned").remove(), this.$stage.unwrap(), this.$stage.children().contents().unwrap(), this.$stage.children().unwrap(), this.$stage.remove(), this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class", this.$element.attr("class").replace(new RegExp(this.options.responsiveClass + "-\\S+\\s", "g"), "")).removeData("owl.carousel")
}, s.prototype.op = function(t, e, i) {
    var n = this.settings.rtl;
    switch (e) {
        case "<":
            return n ? t > i : t < i;
        case ">":
            return n ? t < i : t > i;
        case ">=":
            return n ? t <= i : t >= i;
        case "<=":
            return n ? t >= i : t <= i
    }
}, s.prototype.on = function(t, e, i, n) {
    t.addEventListener ? t.addEventListener(e, i, n) : t.attachEvent && t.attachEvent("on" + e, i)
}, s.prototype.off = function(t, e, i, n) {
    t.removeEventListener ? t.removeEventListener(e, i, n) : t.detachEvent && t.detachEvent("on" + e, i)
}, s.prototype.trigger = function(e, i, n, o, r) {
    var a = {
            item: {
                count: this._items.length,
                index: this.current()
            }
        },
        h = t.camelCase(t.grep(["on", e, n], function(t) {
            return t
        }).join("-").toLowerCase()),
        l = t.Event([e, "owl", n || "carousel"].join(".").toLowerCase(), t.extend({
            relatedTarget: this
        }, a, i));
    return this._supress[e] || (t.each(this._plugins, function(t, e) {
        e.onTrigger && e.onTrigger(l)
    }), this.register({
        type: s.Type.Event,
        name: e
    }), this.$element.trigger(l), this.settings && "function" == typeof this.settings[h] && this.settings[h].call(this, l)), l
}, s.prototype.enter = function(e) {
    t.each([e].concat(this._states.tags[e] || []), t.proxy(function(t, e) {
        this._states.current[e] === n && (this._states.current[e] = 0), this._states.current[e]++
    }, this))
}, s.prototype.leave = function(e) {
    t.each([e].concat(this._states.tags[e] || []), t.proxy(function(t, e) {
        this._states.current[e]--
    }, this))
}, s.prototype.register = function(e) {
    if (e.type === s.Type.Event) {
        if (t.event.special[e.name] || (t.event.special[e.name] = {}), !t.event.special[e.name].owl) {
            var i = t.event.special[e.name]._default;
            t.event.special[e.name]._default = function(t) {
                return !i || !i.apply || t.namespace && -1 !== t.namespace.indexOf("owl") ? t.namespace && t.namespace.indexOf("owl") > -1 : i.apply(this, arguments)
            }, t.event.special[e.name].owl = !0
        }
    } else e.type === s.Type.State && (this._states.tags[e.name] ? this._states.tags[e.name] = this._states.tags[e.name].concat(e.tags) : this._states.tags[e.name] = e.tags, this._states.tags[e.name] = t.grep(this._states.tags[e.name], t.proxy(function(i, n) {
        return t.inArray(i, this._states.tags[e.name]) === n
    }, this)))
}, s.prototype.suppress = function(e) {
    t.each(e, t.proxy(function(t, e) {
        this._supress[e] = !0
    }, this))
}, s.prototype.release = function(e) {
    t.each(e, t.proxy(function(t, e) {
        delete this._supress[e]
    }, this))
}, s.prototype.pointer = function(t) {
    var i = {
        x: null,
        y: null
    };
    return (t = (t = t.originalEvent || t || e.event).touches && t.touches.length ? t.touches[0] : t.changedTouches && t.changedTouches.length ? t.changedTouches[0] : t).pageX ? (i.x = t.pageX, i.y = t.pageY) : (i.x = t.clientX, i.y = t.clientY), i
}, s.prototype.isNumeric = function(t) {
    return !isNaN(parseFloat(t))
}, s.prototype.difference = function(t, e) {
    return {
        x: t.x - e.x,
        y: t.y - e.y
    }
}, t.fn.owlCarousel = function(e) {
    var i = Array.prototype.slice.call(arguments, 1);
    return this.each(function() {
        var n = t(this),
            o = n.data("owl.carousel");
        o || (o = new s(this, "object" == typeof e && e), n.data("owl.carousel", o), t.each(["next", "prev", "to", "destroy", "refresh", "replace", "add", "remove"], function(e, i) {
            o.register({
                type: s.Type.Event,
                name: i
            }), o.$element.on(i + ".owl.carousel.core", t.proxy(function(t) {
                t.namespace && t.relatedTarget !== this && (this.suppress([i]), o[i].apply(this, [].slice.call(arguments, 1)), this.release([i]))
            }, o))
        })), "string" == typeof e && "_" !== e.charAt(0) && o[e].apply(o, i)
    })
}, t.fn.owlCarousel.Constructor = s

}(window.Zepto || window.jQuery, window, document), function(t, e, i, n) {

var s = function(e) {
    this._core = e, this._interval = null, this._visible = null, this._handlers = {
        "initialized.owl.carousel": t.proxy(function(t) {
            t.namespace && this._core.settings.autoRefresh && this.watch()
        }, this)
    }, this._core.options = t.extend({}, s.Defaults, this._core.options), this._core.$element.on(this._handlers)
};
s.Defaults = {
    autoRefresh: !0,
    autoRefreshInterval: 500
}, s.prototype.watch = function() {
    this._interval || (this._visible = this._core.$element.is(":visible"), this._interval = e.setInterval(t.proxy(this.refresh, this), this._core.settings.autoRefreshInterval))
}, s.prototype.refresh = function() {
    this._core.$element.is(":visible") !== this._visible && (this._visible = !this._visible, this._core.$element.toggleClass("owl-hidden", !this._visible), this._visible && this._core.invalidate("width") && this._core.refresh())
}, s.prototype.destroy = function() {
    var t, i;
    for (t in e.clearInterval(this._interval), this._handlers) this._core.$element.off(t, this._handlers[t]);
    for (i in Object.getOwnPropertyNames(this)) "function" != typeof this[i] && (this[i] = null)
}, t.fn.owlCarousel.Constructor.Plugins.AutoRefresh = s

}(window.Zepto || window.jQuery, window, document), function(t, e, i, n) {

var s = function(e) {
    this._core = e, this._loaded = [], this._handlers = {
        "initialized.owl.carousel change.owl.carousel resized.owl.carousel": t.proxy(function(e) {
            if (e.namespace && this._core.settings && this._core.settings.lazyLoad && (e.property && "position" == e.property.name || "initialized" == e.type))
                for (var i = this._core.settings, n = i.center && Math.ceil(i.items / 2) || i.items, s = i.center && -1 * n || 0, o = (e.property && void 0 !== e.property.value ? e.property.value : this._core.current()) + s, r = this._core.clones().length, a = t.proxy(function(t, e) {
                        this.load(e)
                    }, this); s++ < n;) this.load(r / 2 + this._core.relative(o)), r && t.each(this._core.clones(this._core.relative(o)), a), o++
        }, this)
    }, this._core.options = t.extend({}, s.Defaults, this._core.options), this._core.$element.on(this._handlers)
};
s.Defaults = {
    lazyLoad: !1
}, s.prototype.load = function(i) {
    var n = this._core.$stage.children().eq(i),
        s = n && n.find(".owl-lazy");
    !s || t.inArray(n.get(0), this._loaded) > -1 || (s.each(t.proxy(function(i, n) {
        var s, o = t(n),
            r = e.devicePixelRatio > 1 && o.attr("data-src-retina") || o.attr("data-src");
        this._core.trigger("load", {
            element: o,
            url: r
        }, "lazy"), o.is("img") ? o.one("load.owl.lazy", t.proxy(function() {
            o.css("opacity", 1), this._core.trigger("loaded", {
                element: o,
                url: r
            }, "lazy")
        }, this)).attr("src", r) : ((s = new Image).onload = t.proxy(function() {
            o.css({
                "background-image": 'url("' + r + '")',
                opacity: "1"
            }), this._core.trigger("loaded", {
                element: o,
                url: r
            }, "lazy")
        }, this), s.src = r)
    }, this)), this._loaded.push(n.get(0)))
}, s.prototype.destroy = function() {
    var t, e;
    for (t in this.handlers) this._core.$element.off(t, this.handlers[t]);
    for (e in Object.getOwnPropertyNames(this)) "function" != typeof this[e] && (this[e] = null)
}, t.fn.owlCarousel.Constructor.Plugins.Lazy = s

}(window.Zepto || window.jQuery, window, document), function(t, e, i, n) {

var s = function(e) {
    this._core = e, this._handlers = {
        "initialized.owl.carousel refreshed.owl.carousel": t.proxy(function(t) {
            t.namespace && this._core.settings.autoHeight && this.update()
        }, this),
        "changed.owl.carousel": t.proxy(function(t) {
            t.namespace && this._core.settings.autoHeight && "position" == t.property.name && this.update()
        }, this),
        "loaded.owl.lazy": t.proxy(function(t) {
            t.namespace && this._core.settings.autoHeight && t.element.closest("." + this._core.settings.itemClass).index() === this._core.current() && this.update()
        }, this)
    }, this._core.options = t.extend({}, s.Defaults, this._core.options), this._core.$element.on(this._handlers)
};
s.Defaults = {
    autoHeight: !1,
    autoHeightClass: "owl-height"
}, s.prototype.update = function() {
    var e, i = this._core._current,
        n = i + this._core.settings.items,
        s = this._core.$stage.children().toArray().slice(i, n),
        o = [];
    t.each(s, function(e, i) {
        o.push(t(i).height())
    }), e = Math.max.apply(null, o), this._core.$stage.parent().height(e).addClass(this._core.settings.autoHeightClass)
}, s.prototype.destroy = function() {
    var t, e;
    for (t in this._handlers) this._core.$element.off(t, this._handlers[t]);
    for (e in Object.getOwnPropertyNames(this)) "function" != typeof this[e] && (this[e] = null)
}, t.fn.owlCarousel.Constructor.Plugins.AutoHeight = s

}(window.Zepto || window.jQuery, window, document), function(t, e, i, n) {

var s = function(e) {
    this._core = e, this._videos = {}, this._playing = null, this._handlers = {
        "initialized.owl.carousel": t.proxy(function(t) {
            t.namespace && this._core.register({
                type: "state",
                name: "playing",
                tags: ["interacting"]
            })
        }, this),
        "resize.owl.carousel": t.proxy(function(t) {
            t.namespace && this._core.settings.video && this.isInFullScreen() && t.preventDefault()
        }, this),
        "refreshed.owl.carousel": t.proxy(function(t) {
            t.namespace && this._core.is("resizing") && this._core.$stage.find(".cloned .owl-video-frame").remove()
        }, this),
        "changed.owl.carousel": t.proxy(function(t) {
            t.namespace && "position" === t.property.name && this._playing && this.stop()
        }, this),
        "prepared.owl.carousel": t.proxy(function(e) {
            if (e.namespace) {
                var i = t(e.content).find(".owl-video");
                i.length && (i.css("display", "none"), this.fetch(i, t(e.content)))
            }
        }, this)
    }, this._core.options = t.extend({}, s.Defaults, this._core.options), this._core.$element.on(this._handlers), this._core.$element.on("click.owl.video", ".owl-video-play-icon", t.proxy(function(t) {
        this.play(t)
    }, this))
};
s.Defaults = {
    video: !1,
    videoHeight: !1,
    videoWidth: !1
}, s.prototype.fetch = function(t, e) {
    var i = t.attr("data-vimeo-id") ? "vimeo" : t.attr("data-vzaar-id") ? "vzaar" : "youtube",
        n = t.attr("data-vimeo-id") || t.attr("data-youtube-id") || t.attr("data-vzaar-id"),
        s = t.attr("data-width") || this._core.settings.videoWidth,
        o = t.attr("data-height") || this._core.settings.videoHeight,
        r = t.attr("href");
    if (!r) throw new Error("Missing video URL.");
    if ((n = r.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/))[3].indexOf("youtu") > -1) i = "youtube";
    else if (n[3].indexOf("vimeo") > -1) i = "vimeo";
    else {
        if (!(n[3].indexOf("vzaar") > -1)) throw new Error("Video URL not supported.");
        i = "vzaar"
    }
    n = n[6], this._videos[r] = {
        type: i,
        id: n,
        width: s,
        height: o
    }, e.attr("data-video", r), this.thumbnail(t, this._videos[r])
}, s.prototype.thumbnail = function(e, i) {
    var n, s, o = i.width && i.height ? 'style="width:' + i.width + "px;height:" + i.height + 'px;"' : "",
        r = e.find("img"),
        a = "src",
        h = "",
        l = this._core.settings,
        u = function(t) {
            '<div class="owl-video-play-icon"></div>',
            n = l.lazyLoad ? '<div class="owl-video-tn ' + h + '" ' + a + '="' + t + '"></div>' : '<div class="owl-video-tn" style="opacity:1;background-image:url(' + t + ')"></div>',
            e.after(n),
            e.after('<div class="owl-video-play-icon"></div>')
        };
    if (e.wrap('<div class="owl-video-wrapper"' + o + "></div>"), this._core.settings.lazyLoad && (a = "data-src", h = "owl-lazy"), r.length) return u(r.attr(a)), r.remove(), !1;
    "youtube" === i.type ? (s = "//img.youtube.com/vi/" + i.id + "/hqdefault.jpg", u(s)) : "vimeo" === i.type ? t.ajax({
        type: "GET",
        url: "//vimeo.com/api/v2/video/" + i.id + ".json",
        jsonp: "callback",
        dataType: "jsonp",
        success: function(t) {
            s = t[0].thumbnail_large, u(s)
        }
    }) : "vzaar" === i.type && t.ajax({
        type: "GET",
        url: "//vzaar.com/api/videos/" + i.id + ".json",
        jsonp: "callback",
        dataType: "jsonp",
        success: function(t) {
            s = t.framegrab_url, u(s)
        }
    })
}, s.prototype.stop = function() {
    this._core.trigger("stop", null, "video"), this._playing.find(".owl-video-frame").remove(), this._playing.removeClass("owl-video-playing"), this._playing = null, this._core.leave("playing"), this._core.trigger("stopped", null, "video")
}, s.prototype.play = function(e) {
    var i, n = t(e.target).closest("." + this._core.settings.itemClass),
        s = this._videos[n.attr("data-video")],
        o = s.width || "100%",
        r = s.height || this._core.$stage.height();
    this._playing || (this._core.enter("playing"), this._core.trigger("play", null, "video"), n = this._core.items(this._core.relative(n.index())), this._core.reset(n.index()), "youtube" === s.type ? i = '<iframe width="' + o + '" height="' + r + '" src="//www.youtube.com/embed/' + s.id + "?autoplay=1&rel=0&v=" + s.id + '" frameborder="0" allowfullscreen></iframe>' : "vimeo" === s.type ? i = '<iframe src="//player.vimeo.com/video/' + s.id + '?autoplay=1" width="' + o + '" height="' + r + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>' : "vzaar" === s.type && (i = '<iframe frameborder="0"height="' + r + '"width="' + o + '" allowfullscreen mozallowfullscreen webkitAllowFullScreen src="//view.vzaar.com/' + s.id + '/player?autoplay=true"></iframe>'), t('<div class="owl-video-frame">' + i + "</div>").insertAfter(n.find(".owl-video")), this._playing = n.addClass("owl-video-playing"))
}, s.prototype.isInFullScreen = function() {
    var e = i.fullscreenElement || i.mozFullScreenElement || i.webkitFullscreenElement;
    return e && t(e).parent().hasClass("owl-video-frame")
}, s.prototype.destroy = function() {
    var t, e;
    for (t in this._core.$element.off("click.owl.video"), this._handlers) this._core.$element.off(t, this._handlers[t]);
    for (e in Object.getOwnPropertyNames(this)) "function" != typeof this[e] && (this[e] = null)
}, t.fn.owlCarousel.Constructor.Plugins.Video = s

}(window.Zepto || window.jQuery, window, document), function(t, e, i, n) {

var s = function(e) {
    this.core = e, this.core.options = t.extend({}, s.Defaults, this.core.options), this.swapping = !0, this.previous = n, this.next = n, this.handlers = {
        "change.owl.carousel": t.proxy(function(t) {
            t.namespace && "position" == t.property.name && (this.previous = this.core.current(), this.next = t.property.value)
        }, this),
        "drag.owl.carousel dragged.owl.carousel translated.owl.carousel": t.proxy(function(t) {
            t.namespace && (this.swapping = "translated" == t.type)
        }, this),
        "translate.owl.carousel": t.proxy(function(t) {
            t.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn) && this.swap()
        }, this)
    }, this.core.$element.on(this.handlers)
};
s.Defaults = {
    animateOut: !1,
    animateIn: !1
}, s.prototype.swap = function() {
    if (1 === this.core.settings.items && t.support.animation && t.support.transition) {
        this.core.speed(0);
        var e, i = t.proxy(this.clear, this),
            n = this.core.$stage.children().eq(this.previous),
            s = this.core.$stage.children().eq(this.next),
            o = this.core.settings.animateIn,
            r = this.core.settings.animateOut;
        this.core.current() !== this.previous && (r && (e = this.core.coordinates(this.previous) - this.core.coordinates(this.next), n.one(t.support.animation.end, i).css({
            left: e + "px"
        }).addClass("animated owl-animated-out").addClass(r)), o && s.one(t.support.animation.end, i).addClass("animated owl-animated-in").addClass(o))
    }
}, s.prototype.clear = function(e) {
    t(e.target).css({
        left: ""
    }).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut), this.core.onTransitionEnd()
}, s.prototype.destroy = function() {
    var t, e;
    for (t in this.handlers) this.core.$element.off(t, this.handlers[t]);
    for (e in Object.getOwnPropertyNames(this)) "function" != typeof this[e] && (this[e] = null)
}, t.fn.owlCarousel.Constructor.Plugins.Animate = s

}(window.Zepto || window.jQuery, window, document), function(t, e, i, n) {

var s = function(e) {
    this._core = e, this._call = null, this._time = 0, this._timeout = 0, this._paused = !0, this._handlers = {
        "changed.owl.carousel": t.proxy(function(t) {
            t.namespace && "settings" === t.property.name ? this._core.settings.autoplay ? this.play() : this.stop() : t.namespace && "position" === t.property.name && this._paused && (this._time = 0)
        }, this),
        "initialized.owl.carousel": t.proxy(function(t) {
            t.namespace && this._core.settings.autoplay && this.play()
        }, this),
        "play.owl.autoplay": t.proxy(function(t, e, i) {
            t.namespace && this.play(e, i)
        }, this),
        "stop.owl.autoplay": t.proxy(function(t) {
            t.namespace && this.stop()
        }, this),
        "mouseover.owl.autoplay": t.proxy(function() {
            this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause()
        }, this),
        "mouseleave.owl.autoplay": t.proxy(function() {
            this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.play()
        }, this),
        "touchstart.owl.core": t.proxy(function() {
            this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause()
        }, this),
        "touchend.owl.core": t.proxy(function() {
            this._core.settings.autoplayHoverPause && this.play()
        }, this)
    }, this._core.$element.on(this._handlers), this._core.options = t.extend({}, s.Defaults, this._core.options)
};
s.Defaults = {
    autoplay: !1,
    autoplayTimeout: 5e3,
    autoplayHoverPause: !1,
    autoplaySpeed: !1
}, s.prototype._next = function(n) {
    this._call = e.setTimeout(t.proxy(this._next, this, n), this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read()), this._core.is("busy") || this._core.is("interacting") || i.hidden || this._core.next(n || this._core.settings.autoplaySpeed)
}, s.prototype.read = function() {
    return (new Date).getTime() - this._time
}, s.prototype.play = function(i, n) {
    var s;
    this._core.is("rotating") || this._core.enter("rotating"), i = i || this._core.settings.autoplayTimeout, s = Math.min(this._time % (this._timeout || i), i), this._paused ? (this._time = this.read(), this._paused = !1) : e.clearTimeout(this._call), this._time += this.read() % i - s, this._timeout = i, this._call = e.setTimeout(t.proxy(this._next, this, n), i - s)
}, s.prototype.stop = function() {
    this._core.is("rotating") && (this._time = 0, this._paused = !0, e.clearTimeout(this._call), this._core.leave("rotating"))
}, s.prototype.pause = function() {
    this._core.is("rotating") && !this._paused && (this._time = this.read(), this._paused = !0, e.clearTimeout(this._call))
}, s.prototype.destroy = function() {
    var t, e;
    for (t in this.stop(), this._handlers) this._core.$element.off(t, this._handlers[t]);
    for (e in Object.getOwnPropertyNames(this)) "function" != typeof this[e] && (this[e] = null)
}, t.fn.owlCarousel.Constructor.Plugins.autoplay = s

}(window.Zepto || window.jQuery, window, document), function(t, e, i, n) {

"use strict";
var s = function(e) {
    this._core = e, this._initialized = !1, this._pages = [], this._controls = {}, this._templates = [], this.$element = this._core.$element, this._overrides = {
        next: this._core.next,
        prev: this._core.prev,
        to: this._core.to
    }, this._handlers = {
        "prepared.owl.carousel": t.proxy(function(e) {
            e.namespace && this._core.settings.dotsData && this._templates.push('<div class="' + this._core.settings.dotClass + '">' + t(e.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot") + "</div>")
        }, this),
        "added.owl.carousel": t.proxy(function(t) {
            t.namespace && this._core.settings.dotsData && this._templates.splice(t.position, 0, this._templates.pop())
        }, this),
        "remove.owl.carousel": t.proxy(function(t) {
            t.namespace && this._core.settings.dotsData && this._templates.splice(t.position, 1)
        }, this),
        "changed.owl.carousel": t.proxy(function(t) {
            t.namespace && "position" == t.property.name && this.draw()
        }, this),
        "initialized.owl.carousel": t.proxy(function(t) {
            t.namespace && !this._initialized && (this._core.trigger("initialize", null, "navigation"), this.initialize(), this.update(), this.draw(), this._initialized = !0, this._core.trigger("initialized", null, "navigation"))
        }, this),
        "refreshed.owl.carousel": t.proxy(function(t) {
            t.namespace && this._initialized && (this._core.trigger("refresh", null, "navigation"), this.update(), this.draw(), this._core.trigger("refreshed", null, "navigation"))
        }, this)
    }, this._core.options = t.extend({}, s.Defaults, this._core.options), this.$element.on(this._handlers)
};
s.Defaults = {
    nav: !1,
    navText: ['<span aria-label="prev">&#x2039;</span>', '<span aria-label="next">&#x203a;</span>'],
    navSpeed: !1,
    navElement: 'button role="presentation"',
    navContainer: !1,
    navContainerClass: "owl-nav",
    navClass: ["owl-prev", "owl-next"],
    slideBy: 1,
    dotClass: "owl-dot",
    dotsClass: "owl-dots",
    dots: !0,
    dotsEach: !1,
    dotsData: !1,
    dotsSpeed: !1,
    dotsContainer: !1
}, s.prototype.initialize = function() {
    var e, i = this._core.settings;
    for (e in this._controls.$relative = (i.navContainer ? t(i.navContainer) : t("<div>").addClass(i.navContainerClass).appendTo(this.$element)).addClass("disabled"), this._controls.$previous = t("<" + i.navElement + ">").addClass(i.navClass[0]).html(i.navText[0]).prependTo(this._controls.$relative).on("click", t.proxy(function(t) {
            this.prev(i.navSpeed)
        }, this)), this._controls.$next = t("<" + i.navElement + ">").addClass(i.navClass[1]).html(i.navText[1]).appendTo(this._controls.$relative).on("click", t.proxy(function(t) {
            this.next(i.navSpeed)
        }, this)), i.dotsData || (this._templates = [t("<button>").addClass(i.dotClass).append(t("<span>")).prop("outerHTML")]), this._controls.$absolute = (i.dotsContainer ? t(i.dotsContainer) : t("<div>").addClass(i.dotsClass).appendTo(this.$element)).addClass("disabled"), this._controls.$absolute.on("click", "button", t.proxy(function(e) {
            var n = t(e.target).parent().is(this._controls.$absolute) ? t(e.target).index() : t(e.target).parent().index();
            e.preventDefault(), this.to(n, i.dotsSpeed)
        }, this)), this._overrides) this._core[e] = t.proxy(this[e], this)
}, s.prototype.destroy = function() {
    var t, e, i, n, s;
    for (t in s = this._core.settings, this._handlers) this.$element.off(t, this._handlers[t]);
    for (e in this._controls) "$relative" === e && s.navContainer ? this._controls[e].html("") : this._controls[e].remove();
    for (n in this.overides) this._core[n] = this._overrides[n];
    for (i in Object.getOwnPropertyNames(this)) "function" != typeof this[i] && (this[i] = null)
}, s.prototype.update = function() {
    var t, e, i = this._core.clones().length / 2,
        n = i + this._core.items().length,
        s = this._core.maximum(!0),
        o = this._core.settings,
        r = o.center || o.autoWidth || o.dotsData ? 1 : o.dotsEach || o.items;
    if ("page" !== o.slideBy && (o.slideBy = Math.min(o.slideBy, o.items)), o.dots || "page" == o.slideBy)
        for (this._pages = [], t = i, e = 0, 0; t < n; t++) {
            if (e >= r || 0 === e) {
                if (this._pages.push({
                        start: Math.min(s, t - i),
                        end: t - i + r - 1
                    }), Math.min(s, t - i) === s) break;
                e = 0, 0
            }
            e += this._core.mergers(this._core.relative(t))
        }
}, s.prototype.draw = function() {
    var e, i = this._core.settings,
        n = this._core.items().length <= i.items,
        s = this._core.relative(this._core.current()),
        o = i.loop || i.rewind;
    this._controls.$relative.toggleClass("disabled", !i.nav || n), i.nav && (this._controls.$previous.toggleClass("disabled", !o && s <= this._core.minimum(!0)), this._controls.$next.toggleClass("disabled", !o && s >= this._core.maximum(!0))), this._controls.$absolute.toggleClass("disabled", !i.dots || n), i.dots && (e = this._pages.length - this._controls.$absolute.children().length, i.dotsData && 0 !== e ? this._controls.$absolute.html(this._templates.join("")) : e > 0 ? this._controls.$absolute.append(new Array(e + 1).join(this._templates[0])) : e < 0 && this._controls.$absolute.children().slice(e).remove(), this._controls.$absolute.find(".active").removeClass("active"), this._controls.$absolute.children().eq(t.inArray(this.current(), this._pages)).addClass("active"))
}, s.prototype.onTrigger = function(e) {
    var i = this._core.settings;
    e.page = {
        index: t.inArray(this.current(), this._pages),
        count: this._pages.length,
        size: i && (i.center || i.autoWidth || i.dotsData ? 1 : i.dotsEach || i.items)
    }
}, s.prototype.current = function() {
    var e = this._core.relative(this._core.current());
    return t.grep(this._pages, t.proxy(function(t, i) {
        return t.start <= e && t.end >= e
    }, this)).pop()
}, s.prototype.getPosition = function(e) {
    var i, n, s = this._core.settings;
    return "page" == s.slideBy ? (i = t.inArray(this.current(), this._pages), n = this._pages.length, e ? ++i : --i, i = this._pages[(i % n + n) % n].start) : (i = this._core.relative(this._core.current()), n = this._core.items().length, e ? i += s.slideBy : i -= s.slideBy), i
}, s.prototype.next = function(e) {
    t.proxy(this._overrides.to, this._core)(this.getPosition(!0), e)
}, s.prototype.prev = function(e) {
    t.proxy(this._overrides.to, this._core)(this.getPosition(!1), e)
}, s.prototype.to = function(e, i, n) {
    var s;
    !n && this._pages.length ? (s = this._pages.length, t.proxy(this._overrides.to, this._core)(this._pages[(e % s + s) % s].start, i)) : t.proxy(this._overrides.to, this._core)(e, i)
}, t.fn.owlCarousel.Constructor.Plugins.Navigation = s

}(window.Zepto || window.jQuery, window, document), function(t, e, i, n) {

"use strict";
var s = function(i) {
    this._core = i, this._hashes = {}, this.$element = this._core.$element, this._handlers = {
        "initialized.owl.carousel": t.proxy(function(i) {
            i.namespace && "URLHash" === this._core.settings.startPosition && t(e).trigger("hashchange.owl.navigation")
        }, this),
        "prepared.owl.carousel": t.proxy(function(e) {
            if (e.namespace) {
                var i = t(e.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");
                if (!i) return;
                this._hashes[i] = e.content
            }
        }, this),
        "changed.owl.carousel": t.proxy(function(i) {
            if (i.namespace && "position" === i.property.name) {
                var n = this._core.items(this._core.relative(this._core.current())),
                    s = t.map(this._hashes, function(t, e) {
                        return t === n ? e : null
                    }).join();
                if (!s || e.location.hash.slice(1) === s) return;
                e.location.hash = s
            }
        }, this)
    }, this._core.options = t.extend({}, s.Defaults, this._core.options), this.$element.on(this._handlers), t(e).on("hashchange.owl.navigation", t.proxy(function(t) {
        var i = e.location.hash.substring(1),
            n = this._core.$stage.children(),
            s = this._hashes[i] && n.index(this._hashes[i]);
        void 0 !== s && s !== this._core.current() && this._core.to(this._core.relative(s), !1, !0)
    }, this))
};
s.Defaults = {
    URLhashListener: !1
}, s.prototype.destroy = function() {
    var i, n;
    for (i in t(e).off("hashchange.owl.navigation"), this._handlers) this._core.$element.off(i, this._handlers[i]);
    for (n in Object.getOwnPropertyNames(this)) "function" != typeof this[n] && (this[n] = null)
}, t.fn.owlCarousel.Constructor.Plugins.Hash = s

}(window.Zepto || window.jQuery, window, document), function(t, e, i, n) {

function s(e, i) {
    var s = !1,
        o = e.charAt(0).toUpperCase() + e.slice(1);
    return t.each((e + " " + a.join(o + " ") + o).split(" "), function(t, e) {
        if (r[e] !== n) return s = !i || e, !1
    }), s
}

function o(t) {
    return s(t, !0)
}
var r = t("<support>").get(0).style,
    a = "Webkit Moz O ms".split(" "),
    h = {
        transition: {
            end: {
                WebkitTransition: "webkitTransitionEnd",
                MozTransition: "transitionend",
                OTransition: "oTransitionEnd",
                transition: "transitionend"
            }
        },
        animation: {
            end: {
                WebkitAnimation: "webkitAnimationEnd",
                MozAnimation: "animationend",
                OAnimation: "oAnimationEnd",
                animation: "animationend"
            }
        }
    },
    l = function() {
        return !!s("transform")
    },
    u = function() {
        return !!s("perspective")
    },
    c = function() {
        return !!s("animation")
    };
(function() {
    return !!s("transition")
})() && (t.support.transition = new String(o("transition")), t.support.transition.end = h.transition.end[t.support.transition]), c() && (t.support.animation = new String(o("animation")), t.support.animation.end = h.animation.end[t.support.animation]), l() && (t.support.transform = new String(o("transform")), t.support.transform3d = u())

}(window.Zepto || window.jQuery, window, document), function() {

"use strict";

function t(n) {
    if (!n) throw new Error("No options passed to Waypoint constructor");
    if (!n.element) throw new Error("No element option passed to Waypoint constructor");
    if (!n.handler) throw new Error("No handler option passed to Waypoint constructor");
    this.key = "waypoint-" + e, this.options = t.Adapter.extend({}, t.defaults, n), this.element = this.options.element, this.adapter = new t.Adapter(this.element), this.callback = n.handler, this.axis = this.options.horizontal ? "horizontal" : "vertical", this.enabled = this.options.enabled, this.triggerPoint = null, this.group = t.Group.findOrCreate({
        name: this.options.group,
        axis: this.axis
    }), this.context = t.Context.findOrCreateByElement(this.options.context), t.offsetAliases[this.options.offset] && (this.options.offset = t.offsetAliases[this.options.offset]), this.group.add(this), this.context.add(this), i[this.key] = this, e += 1
}
var e = 0,
    i = {};
t.prototype.queueTrigger = function(t) {
    this.group.queueTrigger(this, t)
}, t.prototype.trigger = function(t) {
    this.enabled && this.callback && this.callback.apply(this, t)
}, t.prototype.destroy = function() {
    this.context.remove(this), this.group.remove(this), delete i[this.key]
}, t.prototype.disable = function() {
    return this.enabled = !1, this
}, t.prototype.enable = function() {
    return this.context.refresh(), this.enabled = !0, this
}, t.prototype.next = function() {
    return this.group.next(this)
}, t.prototype.previous = function() {
    return this.group.previous(this)
}, t.invokeAll = function(t) {
    var e = [];
    for (var n in i) e.push(i[n]);
    for (var s = 0, o = e.length; o > s; s++) e[s][t]()
}, t.destroyAll = function() {
    t.invokeAll("destroy")
}, t.disableAll = function() {
    t.invokeAll("disable")
}, t.enableAll = function() {
    for (var e in t.Context.refreshAll(), i) i[e].enabled = !0;
    return this
}, t.refreshAll = function() {
    t.Context.refreshAll()
}, t.viewportHeight = function() {
    return window.innerHeight || document.documentElement.clientHeight
}, t.viewportWidth = function() {
    return document.documentElement.clientWidth
}, t.adapters = [], t.defaults = {
    context: window,
    continuous: !0,
    enabled: !0,
    group: "default",
    horizontal: !1,
    offset: 0
}, t.offsetAliases = {
    "bottom-in-view": function() {
        return this.context.innerHeight() - this.adapter.outerHeight()
    },
    "right-in-view": function() {
        return this.context.innerWidth() - this.adapter.outerWidth()
    }
}, window.Waypoint = t

}(), function() {

"use strict";

function t(t) {
    window.setTimeout(t, 1e3 / 60)
}

function e(t) {
    this.element = t, this.Adapter = s.Adapter, this.adapter = new this.Adapter(t), this.key = "waypoint-context-" + i, this.didScroll = !1, this.didResize = !1, this.oldScroll = {
        x: this.adapter.scrollLeft(),
        y: this.adapter.scrollTop()
    }, this.waypoints = {
        vertical: {},
        horizontal: {}
    }, t.waypointContextKey = this.key, n[t.waypointContextKey] = this, i += 1, s.windowContext || (s.windowContext = !0, s.windowContext = new e(window)), this.createThrottledScrollHandler(), this.createThrottledResizeHandler()
}
var i = 0,
    n = {},
    s = window.Waypoint,
    o = window.onload;
e.prototype.add = function(t) {
    var e = t.options.horizontal ? "horizontal" : "vertical";
    this.waypoints[e][t.key] = t, this.refresh()
}, e.prototype.checkEmpty = function() {
    var t = this.Adapter.isEmptyObject(this.waypoints.horizontal),
        e = this.Adapter.isEmptyObject(this.waypoints.vertical),
        i = this.element == this.element.window;
    t && e && !i && (this.adapter.off(".waypoints"), delete n[this.key])
}, e.prototype.createThrottledResizeHandler = function() {
    function t() {
        e.handleResize(), e.didResize = !1
    }
    var e = this;
    this.adapter.on("resize.waypoints", function() {
        e.didResize || (e.didResize = !0, s.requestAnimationFrame(t))
    })
}, e.prototype.createThrottledScrollHandler = function() {
    function t() {
        e.handleScroll(), e.didScroll = !1
    }
    var e = this;
    this.adapter.on("scroll.waypoints", function() {
        (!e.didScroll || s.isTouch) && (e.didScroll = !0, s.requestAnimationFrame(t))
    })
}, e.prototype.handleResize = function() {
    s.Context.refreshAll()
}, e.prototype.handleScroll = function() {
    var t = {},
        e = {
            horizontal: {
                newScroll: this.adapter.scrollLeft(),
                oldScroll: this.oldScroll.x,
                forward: "right",
                backward: "left"
            },
            vertical: {
                newScroll: this.adapter.scrollTop(),
                oldScroll: this.oldScroll.y,
                forward: "down",
                backward: "up"
            }
        };
    for (var i in e) {
        var n = e[i],
            s = n.newScroll > n.oldScroll ? n.forward : n.backward;
        for (var o in this.waypoints[i]) {
            var r = this.waypoints[i][o];
            if (null !== r.triggerPoint) {
                var a = n.oldScroll < r.triggerPoint,
                    h = n.newScroll >= r.triggerPoint;
                (a && h || !a && !h) && (r.queueTrigger(s), t[r.group.id] = r.group)
            }
        }
    }
    for (var l in t) t[l].flushTriggers();
    this.oldScroll = {
        x: e.horizontal.newScroll,
        y: e.vertical.newScroll
    }
}, e.prototype.innerHeight = function() {
    return this.element == this.element.window ? s.viewportHeight() : this.adapter.innerHeight()
}, e.prototype.remove = function(t) {
    delete this.waypoints[t.axis][t.key], this.checkEmpty()
}, e.prototype.innerWidth = function() {
    return this.element == this.element.window ? s.viewportWidth() : this.adapter.innerWidth()
}, e.prototype.destroy = function() {
    var t = [];
    for (var e in this.waypoints)
        for (var i in this.waypoints[e]) t.push(this.waypoints[e][i]);
    for (var n = 0, s = t.length; s > n; n++) t[n].destroy()
}, e.prototype.refresh = function() {
    var t, e = this.element == this.element.window,
        i = e ? void 0 : this.adapter.offset(),
        n = {};
    for (var o in this.handleScroll(), t = {
            horizontal: {
                contextOffset: e ? 0 : i.left,
                contextScroll: e ? 0 : this.oldScroll.x,
                contextDimension: this.innerWidth(),
                oldScroll: this.oldScroll.x,
                forward: "right",
                backward: "left",
                offsetProp: "left"
            },
            vertical: {
                contextOffset: e ? 0 : i.top,
                contextScroll: e ? 0 : this.oldScroll.y,
                contextDimension: this.innerHeight(),
                oldScroll: this.oldScroll.y,
                forward: "down",
                backward: "up",
                offsetProp: "top"
            }
        }) {
        var r = t[o];
        for (var a in this.waypoints[o]) {
            var h, l, u, c, d = this.waypoints[o][a],
                p = d.options.offset,
                f = d.triggerPoint,
                g = 0,
                m = null == f;
            d.element !== d.element.window && (g = d.adapter.offset()[r.offsetProp]), "function" == typeof p ? p = p.apply(d) : "string" == typeof p && (p = parseFloat(p), d.options.offset.indexOf("%") > -1 && (p = Math.ceil(r.contextDimension * p / 100))), h = r.contextScroll - r.contextOffset, d.triggerPoint = Math.floor(g + h - p), l = f < r.oldScroll, u = d.triggerPoint >= r.oldScroll, c = !l && !u, !m && (l && u) ? (d.queueTrigger(r.backward), n[d.group.id] = d.group) : !m && c ? (d.queueTrigger(r.forward), n[d.group.id] = d.group) : m && r.oldScroll >= d.triggerPoint && (d.queueTrigger(r.forward), n[d.group.id] = d.group)
        }
    }
    return s.requestAnimationFrame(function() {
        for (var t in n) n[t].flushTriggers()
    }), this
}, e.findOrCreateByElement = function(t) {
    return e.findByElement(t) || new e(t)
}, e.refreshAll = function() {
    for (var t in n) n[t].refresh()
}, e.findByElement = function(t) {
    return n[t.waypointContextKey]
}, window.onload = function() {
    o && o(), e.refreshAll()
}, s.requestAnimationFrame = function(e) {
    (window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || t).call(window, e)
}, s.Context = e

}(), function() {

"use strict";

function t(t, e) {
    return t.triggerPoint - e.triggerPoint
}

function e(t, e) {
    return e.triggerPoint - t.triggerPoint
}

function i(t) {
    this.name = t.name, this.axis = t.axis, this.id = this.name + "-" + this.axis, this.waypoints = [], this.clearTriggerQueues(), n[this.axis][this.name] = this
}
var n = {
        vertical: {},
        horizontal: {}
    },
    s = window.Waypoint;
i.prototype.add = function(t) {
    this.waypoints.push(t)
}, i.prototype.clearTriggerQueues = function() {
    this.triggerQueues = {
        up: [],
        down: [],
        left: [],
        right: []
    }
}, i.prototype.flushTriggers = function() {
    for (var i in this.triggerQueues) {
        var n = this.triggerQueues[i],
            s = "up" === i || "left" === i;
        n.sort(s ? e : t);
        for (var o = 0, r = n.length; r > o; o += 1) {
            var a = n[o];
            (a.options.continuous || o === n.length - 1) && a.trigger([i])
        }
    }
    this.clearTriggerQueues()
}, i.prototype.next = function(e) {
    this.waypoints.sort(t);
    var i = s.Adapter.inArray(e, this.waypoints);
    return i === this.waypoints.length - 1 ? null : this.waypoints[i + 1]
}, i.prototype.previous = function(e) {
    this.waypoints.sort(t);
    var i = s.Adapter.inArray(e, this.waypoints);
    return i ? this.waypoints[i - 1] : null
}, i.prototype.queueTrigger = function(t, e) {
    this.triggerQueues[e].push(t)
}, i.prototype.remove = function(t) {
    var e = s.Adapter.inArray(t, this.waypoints);
    e > -1 && this.waypoints.splice(e, 1)
}, i.prototype.first = function() {
    return this.waypoints[0]
}, i.prototype.last = function() {
    return this.waypoints[this.waypoints.length - 1]
}, i.findOrCreate = function(t) {
    return n[t.axis][t.name] || new i(t)
}, s.Group = i

}(), function() {

"use strict";

function t(t) {
    this.$element = e(t)
}
var e = window.jQuery,
    i = window.Waypoint;
e.each(["innerHeight", "innerWidth", "off", "offset", "on", "outerHeight", "outerWidth", "scrollLeft", "scrollTop"], function(e, i) {
    t.prototype[i] = function() {
        var t = Array.prototype.slice.call(arguments);
        return this.$element[i].apply(this.$element, t)
    }
}), e.each(["extend", "inArray", "isEmptyObject"], function(i, n) {
    t[n] = e[n]
}), i.adapters.push({
    name: "jquery",
    Adapter: t
}), i.Adapter = t

}(), function() {

"use strict";

function t(t) {
    return function() {
        var i = [],
            n = arguments[0];
        return t.isFunction(arguments[0]) && ((n = t.extend({}, arguments[1])).handler = arguments[0]), this.each(function() {
            var s = t.extend({}, n, {
                element: this
            });
            "string" == typeof s.context && (s.context = t(this).closest(s.context)[0]), i.push(new e(s))
        }), i
    }
}
var e = window.Waypoint;
window.jQuery && (window.jQuery.fn.waypoint = t(window.jQuery)), window.Zepto && (window.Zepto.fn.waypoint = t(window.Zepto))

}();