! function t(e, n, i) {
function r(s, a) {
if(!n[s]) {
if(!e[s]) {
var l = "function" == typeof require && require;
if(!a && l) return l(s, !0);
if(o) return o(s, !0);
var c = new error("cannot find module '" + s + "'");
throw c.code = "module_not_found", c
}
var u = n[s] = {
exports: {}
};
e[s][0].call(u.exports, function(t) {
var n = e[s][1][t];
return r(n || t)
}, u, u.exports, t, e, n, i)
}
return n[s].exports
}
for(var o = "function" == typeof require && require, s = 0; s < i.length; s++) r(i[s]);
return r
}({
1: [function(t, e, n) {
! function(i, r) {
if("function" == typeof define && define.amd) define(["exports", "module", "./util"], r);
else if(void 0 !== n && void 0 !== e) r(n, e, t("./util"));
else {
var o = {
exports: {}
};
r(o.exports, o, i.util), i.dropdown = o.exports
}
}(this, function(t, e, n) {
"use strict";
function i(t, e) {
if(!(t instanceof e)) throw new typeerror("cannot call a class as a function")
}
var r = function() {
function t(t, e) {
for(var n = 0; n < e.length; n++) {
var i = e[n];
i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), object.defineproperty(t, i.key, i)
}
}
return function(e, n, i) {
return n && t(e.prototype, n), i && t(e, i), e
}
}(),
o = function(t) {
return t && t.__esmodule ? t : {
default: t
}
}(n),
s = function(t) {
var e = "dropdown",
n = ".bs.dropdown",
s = t.fn[e],
a = {
hide: "hide" + n,
hidden: "hidden" + n,
show: "show" + n,
shown: "shown" + n,
click: "click" + n,
click_data_api: "click.bs.dropdown.data-api",
keydown_data_api: "keydown.bs.dropdown.data-api"
},
l = {
backdrop: "dropdown-backdrop",
disabled: "disabled",
open: "open"
},
c = {
backdrop: ".dropdown-backdrop",
data_toggle: '[data-toggle="dropdown"]',
form_child: ".dropdown form",
role_menu: '[role="menu"]',
role_listbox: '[role="listbox"]',
navbar_nav: ".navbar-nav",
visible_items: '[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a'
},
u = function() {
function e(t) {
i(this, e), this._element = t, this._addeventlisteners()
}
return r(e, [{
key: "toggle",
value: function() {
if(this.disabled || t(this).hasclass(l.disabled)) return !1;
var n = e._getparentfromelement(this),
i = t(n).hasclass(l.open);
if(e._clearmenus(), i) return !1;
if("ontouchstart" in document.documentelement && !t(n).closest(c.navbar_nav).length) {
var r = document.createelement("div");
r.classname = l.backdrop, t(r).insertbefore(this), t(r).on("click", e._clearmenus)
}
var o = {
relatedtarget: this
},
s = t.event(a.show, o);
return t(n).trigger(s), !s.isdefaultprevented() && (this.focus(), this.setattribute("aria-expanded", "true"), t(n).toggleclass(l.open), t(n).trigger(t.event(a.shown, o)), !1)
}
}, {
key: "dispose",
value: function() {
t.removedata(this._element, "bs.dropdown"), t(this._element).off(n), this._element = null
}
}, {
key: "_addeventlisteners",
value: function() {
t(this._element).on(a.click, this.toggle)
}
}], [{
key: "_jqueryinterface",
value: function(n) {
return this.each(function() {
var i = t(this).data("bs.dropdown");
if(i || t(this).data("bs.dropdown", i = new e(this)), "string" == typeof n) {
if(void 0 === i[n]) throw new error('no method named "' + n + '"');
i[n].call(this)
}
})
}
}, {
key: "_clearmenus",
value: function(n) {
if(!n || 3 !== n.which) {
var i = t(c.backdrop)[0];
i && i.parentnode.removechild(i);
for(var r = t.makearray(t(c.data_toggle)), o = 0; o < r.length; o++) {
var s = e._getparentfromelement(r[o]),
u = {
relatedtarget: r[o]
};
if(t(s).hasclass(l.open) && !(n && "click" === n.type && /input|textarea/i.test(n.target.tagname) && t.contains(s, n.target))) {
var h = t.event(a.hide, u);
t(s).trigger(h), h.isdefaultprevented() || (r[o].setattribute("aria-expanded", "false"), t(s).removeclass(l.open).trigger(t.event(a.hidden, u)))
}
}
}
}
}, {
key: "_getparentfromelement",
value: function(e) {
var n = void 0,
i = o.default.getselectorfromelement(e);
return i && (n = t(i)[0]), n || e.parentnode
}
}, {
key: "_dataapikeydownhandler",
value: function(n) {
if(/(38|40|27|32)/.test(n.which) && !/input|textarea/i.test(n.target.tagname) && (n.preventdefault(), n.stoppropagation(), !this.disabled && !t(this).hasclass(l.disabled))) {
var i = e._getparentfromelement(this),
r = t(i).hasclass(l.open);
if(!r && 27 !== n.which || r && 27 === n.which) {
if(27 === n.which) {
var o = t(i).find(c.data_toggle)[0];
t(o).trigger("focus")
}
return void t(this).trigger("click")
}
var s = t.makearray(t(c.visible_items));
if(s = s.filter(function(t) {
return t.offsetwidth || t.offsetheight
}), s.length) {
var a = s.indexof(n.target);
38 === n.which && a > 0 && a--, 40 === n.which && a < s.length - 1 && a++, ~a || (a = 0), s[a].focus()
}
}
}
}, {
key: "version",
get: function() {
return "4.0.0-alpha"
}
}]), e
}();
return t(document).on(a.keydown_data_api, c.data_toggle, u._dataapikeydownhandler).on(a.keydown_data_api, c.role_menu, u._dataapikeydownhandler).on(a.keydown_data_api, c.role_listbox, u._dataapikeydownhandler).on(a.click_data_api, u._clearmenus).on(a.click_data_api, c.data_toggle, u.prototype.toggle).on(a.click_data_api, c.form_child, function(t) {
t.stoppropagation()
}), t.fn[e] = u._jqueryinterface, t.fn[e].constructor = u, t.fn[e].noconflict = function() {
return t.fn[e] = s, u._jqueryinterface
}, u
}(jquery);
e.exports = s
})
}, {
"./util": 2
}],
2: [function(t, e, n) {
! function(t, i) {
if("function" == typeof define && define.amd) define(["exports", "module"], i);
else if(void 0 !== n && void 0 !== e) i(n, e);
else {
var r = {
exports: {}
};
i(r.exports, r), t.util = r.exports
}
}(this, function(t, e) {
"use strict";
var n = function(t) {
function e(t) {
return {}.tostring.call(t).match(/\s([a-za-z]+)/)[1].tolowercase()
}
function n(t) {
return(t[0] || t).nodetype
}
function i() {
return {
bindtype: s.end,
delegatetype: s.end,
handle: function(e) {
if(t(e.target).is(this)) return e.handleobj.handler.apply(this, arguments)
}
}
}
function r() {
if(window.qunit) return !1;
var t = document.createelement("bootstrap");
for(var e in a)
if(void 0 !== t.style[e]) return {
end: a[e]
};
return !1
}
function o(e) {
var n = this,
i = !1;
return t(this).one(l.transition_end, function() {
i = !0
}), settimeout(function() {
i || l.triggertransitionend(n)
}, e), this
}
var s = !1,
a = {
webkittransition: "webkittransitionend",
moztransition: "transitionend",
otransition: "otransitionend otransitionend",
transition: "transitionend"
},
l = {
transition_end: "bstransitionend",
getuid: function(t) {
do {
t += ~~(1e6 * math.random())
} while (document.getelementbyid(t));
return t
},
getselectorfromelement: function(t) {
var e = t.getattribute("data-target");
return e || (e = t.getattribute("href") || "", e = /^#[a-z]/i.test(e) ? e : null), e
},
reflow: function(t) {
new function("bs", "return bs")(t.offsetheight)
},
triggertransitionend: function(e) {
t(e).trigger(s.end)
},
supportstransitionend: function() {
return boolean(s)
},
typecheckconfig: function(t, i, r) {
for(var o in r)
if(r.hasownproperty(o)) {
var s = r[o],
a = i[o],
l = void 0;
if(l = a && n(a) ? "element" : e(a), !new regexp(s).test(l)) throw new error(t.touppercase() + ': option "' + o + '" provided type "' + l + '" but expected type "' + s + '".')
}
}
};
return function() {
s = r(), t.fn.emulatetransitionend = o, l.supportstransitionend() && (t.event.special[l.transition_end] = i())
}(), l
}(jquery);
e.exports = n
})
}, {}],
3: [function(t, e, n) {
! function(t, n, i) {
function r(e, i) {
this.wrapper = "string" == typeof e ? n.queryselector(e) : e, this.scroller = this.wrapper.children[0], this.scrollerstyle = this.scroller.style, this.options = {
resizescrollbars: !0,
mousewheelspeed: 20,
snapthreshold: .334,
disablepointer: !l.haspointer,
disabletouch: l.haspointer || !l.hastouch,
disablemouse: l.haspointer || l.hastouch,
startx: 0,
starty: 0,
scrolly: !0,
directionlockthreshold: 5,
momentum: !0,
bounce: !0,
bouncetime: 600,
bounceeasing: "",
preventdefault: !0,
preventdefaultexception: {
tagname: /^(input|textarea|button|select)$/
},
hwcompositing: !0,
usetransition: !0,
usetransform: !0,
bindtowrapper: void 0 === t.onmousedown
};
for(var r in i) this.options[r] = i[r];
this.translatez = this.options.hwcompositing && l.hasperspective ? " translatez(0)" : "", this.options.usetransition = l.hastransition && this.options.usetransition, this.options.usetransform = l.hastransform && this.options.usetransform, this.options.eventpassthrough = !0 === this.options.eventpassthrough ? "vertical" : this.options.eventpassthrough, this.options.preventdefault = !this.options.eventpassthrough && this.options.preventdefault, this.options.scrolly = "vertical" != this.options.eventpassthrough && this.options.scrolly, this.options.scrollx = "horizontal" != this.options.eventpassthrough && this.options.scrollx, this.options.freescroll = this.options.freescroll && !this.options.eventpassthrough, this.options.directionlockthreshold = this.options.eventpassthrough ? 0 : this.options.directionlockthreshold, this.options.bounceeasing = "string" == typeof this.options.bounceeasing ? l.ease[this.options.bounceeasing] || l.ease.circular : this.options.bounceeasing, this.options.resizepolling = void 0 === this.options.resizepolling ? 60 : this.options.resizepolling, !0 === this.options.tap && (this.options.tap = "tap"), "scale" == this.options.shrinkscrollbars && (this.options.usetransition = !1), this.options.invertwheeldirection = this.options.invertwheeldirection ? -1 : 1, this.x = 0, this.y = 0, this.directionx = 0, this.directiony = 0, this._events = {}, this._init(), this.refresh(), this.scrollto(this.options.startx, this.options.starty), this.enable()
}
function o(t, e, i) {
var r = n.createelement("div"),
o = n.createelement("div");
return !0 === i && (r.style.csstext = "position:absolute;z-index:9999", o.style.csstext = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px"), o.classname = "iscrollindicator", "h" == t ? (!0 === i && (r.style.csstext += ";height:7px;left:2px;right:2px;bottom:0", o.style.height = "100%"), r.classname = "iscrollhorizontalscrollbar") : (!0 === i && (r.style.csstext += ";width:7px;bottom:2px;top:2px;right:1px", o.style.width = "100%"), r.classname = "iscrollverticalscrollbar"), r.style.csstext += ";overflow:hidden", e || (r.style.pointerevents = "none"), r.appendchild(o), r
}
function s(e, i) {
this.wrapper = "string" == typeof i.el ? n.queryselector(i.el) : i.el, this.wrapperstyle = this.wrapper.style, this.indicator = this.wrapper.children[0], this.indicatorstyle = this.indicator.style, this.scroller = e, this.options = {
listenx: !0,
listeny: !0,
interactive: !1,
resize: !0,
defaultscrollbars: !1,
shrink: !1,
fade: !1,
speedratiox: 0,
speedratioy: 0
};
for(var r in i) this.options[r] = i[r];
if(this.sizeratiox = 1, this.sizeratioy = 1, this.maxposx = 0, this.maxposy = 0, this.options.interactive && (this.options.disabletouch || (l.addevent(this.indicator, "touchstart", this), l.addevent(t, "touchend", this)), this.options.disablepointer || (l.addevent(this.indicator, l.prefixpointerevent("pointerdown"), this), l.addevent(t, l.prefixpointerevent("pointerup"), this)), this.options.disablemouse || (l.addevent(this.indicator, "mousedown", this), l.addevent(t, "mouseup", this))), this.options.fade) {
this.wrapperstyle[l.style.transform] = this.scroller.translatez;
var o = l.style.transitionduration;
this.wrapperstyle[o] = l.isbadandroid ? "0.0001ms" : "0ms";
var s = this;
l.isbadandroid && a(function() {
"0.0001ms" === s.wrapperstyle[o] && (s.wrapperstyle[o] = "0s")
}), this.wrapperstyle.opacity = "0"
}
}
var a = t.requestanimationframe || t.webkitrequestanimationframe || t.mozrequestanimationframe || t.orequestanimationframe || t.msrequestanimationframe || function(e) {
t.settimeout(e, 1e3 / 60)
},
l = function() {
function e(t) {
return !1 !== s && ("" === s ? t : s + t.charat(0).touppercase() + t.substr(1))
}
var r = {},
o = n.createelement("div").style,
s = function() {
for(var t = ["t", "webkitt", "mozt", "mst", "ot"], e = 0, n = t.length; e < n; e++)
if(t[e] + "ransform" in o) return t[e].substr(0, t[e].length - 1);
return !1
}();
r.gettime = date.now || function() {
return(new date).gettime()
}, r.extend = function(t, e) {
for(var n in e) t[n] = e[n]
}, r.addevent = function(t, e, n, i) {
t.addeventlistener(e, n, !!i)
}, r.removeevent = function(t, e, n, i) {
t.removeeventlistener(e, n, !!i)
}, r.prefixpointerevent = function(e) {
return t.mspointerevent ? "mspointer" + e.charat(7).touppercase() + e.substr(8) : e
}, r.momentum = function(t, e, n, r, o, s) {
var a, l, c = t - e,
u = i.abs(c) / n;
return s = void 0 === s ? 6e-4 : s, a = t + u * u / (2 * s) * (c < 0 ? -1 : 1), l = u / s, a < r ? (a = o ? r - o / 2.5 * (u / 8) : r, c = i.abs(a - t), l = c / u) : a > 0 && (a = o ? o / 2.5 * (u / 8) : 0, c = i.abs(t) + a, l = c / u), {
destination: i.round(a),
duration: l
}
};
var a = e("transform");
return r.extend(r, {
hastransform: !1 !== a,
hasperspective: e("perspective") in o,
hastouch: "ontouchstart" in t,
haspointer: !(!t.pointerevent && !t.mspointerevent),
hastransition: e("transition") in o
}), r.isbadandroid = function() {
var e = t.navigator.appversion;
if(/android/.test(e) && !/chrome\/\d/.test(e)) {
var n = e.match(/safari\/(\d+.\d)/);
return !(n && "object" == typeof n && n.length >= 2) || parsefloat(n[1]) < 535.19
}
return !1
}(), r.extend(r.style = {}, {
transform: a,
transitiontimingfunction: e("transitiontimingfunction"),
transitionduration: e("transitionduration"),
transitiondelay: e("transitiondelay"),
transformorigin: e("transformorigin")
}), r.hasclass = function(t, e) {
return new regexp("(^|\\s)" + e + "(\\s|$)").test(t.classname)
}, r.addclass = function(t, e) {
if(!r.hasclass(t, e)) {
var n = t.classname.split(" ");
n.push(e), t.classname = n.join(" ")
}
}, r.removeclass = function(t, e) {
if(r.hasclass(t, e)) {
var n = new regexp("(^|\\s)" + e + "(\\s|$)", "g");
t.classname = t.classname.replace(n, " ")
}
}, r.offset = function(t) {
for(var e = -t.offsetleft, n = -t.offsettop; t = t.offsetparent;) e -= t.offsetleft, n -= t.offsettop;
return {
left: e,
top: n
}
}, r.preventdefaultexception = function(t, e) {
for(var n in e)
if(e[n].test(t[n])) return !0;
return !1
}, r.extend(r.eventtype = {}, {
touchstart: 1,
touchmove: 1,
touchend: 1,
mousedown: 2,
mousemove: 2,
mouseup: 2,
pointerdown: 3,
pointermove: 3,
pointerup: 3,
mspointerdown: 3,
mspointermove: 3,
mspointerup: 3
}), r.extend(r.ease = {}, {
quadratic: {
style: "cubic-bezier(0.25, 0.46, 0.45, 0.94)",
fn: function(t) {
return t * (2 - t)
}
},
circular: {
style: "cubic-bezier(0.1, 0.57, 0.1, 1)",
fn: function(t) {
return i.sqrt(1 - --t * t)
}
},
back: {
style: "cubic-bezier(0.175, 0.885, 0.32, 1.275)",
fn: function(t) {
return(t -= 1) * t * (5 * t + 4) + 1
}
},
bounce: {
style: "",
fn: function(t) {
return(t /= 1) < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375
}
},
elastic: {
style: "",
fn: function(t) {
return 0 === t ? 0 : 1 == t ? 1 : .4 * i.pow(2, -10 * t) * i.sin((t - .055) * (2 * i.pi) / .22) + 1
}
}
}), r.tap = function(t, e) {
var i = n.createevent("event");
i.initevent(e, !0, !0), i.pagex = t.pagex, i.pagey = t.pagey, t.target.dispatchevent(i)
}, r.click = function(t) {
var e, i = t.target;
/(select|input|textarea)/i.test(i.tagname) || (e = n.createevent("mouseevents"), e.initmouseevent("click", !0, !0, t.view, 1, i.screenx, i.screeny, i.clientx, i.clienty, t.ctrlkey, t.altkey, t.shiftkey, t.metakey, 0, null), e._constructed = !0, i.dispatchevent(e))
}, r
}();
r.prototype = {
version: "5.2.0",
_init: function() {
this._initevents(), (this.options.scrollbars || this.options.indicators) && this._initindicators(), this.options.mousewheel && this._initwheel(), this.options.snap && this._initsnap(), this.options.keybindings && this._initkeys()
},
destroy: function() {
this._initevents(!0), cleartimeout(this.resizetimeout), this.resizetimeout = null, this._execevent("destroy")
},
_transitionend: function(t) {
t.target == this.scroller && this.isintransition && (this._transitiontime(), this.resetposition(this.options.bouncetime) || (this.isintransition = !1, this._execevent("scrollend")))
},
_start: function(t) {
if(1 != l.eventtype[t.type]) {
if(0 !== (t.which ? t.button : t.button < 2 ? 0 : 4 == t.button ? 1 : 2)) return
}
if(this.enabled && (!this.initiated || l.eventtype[t.type] === this.initiated)) {
!this.options.preventdefault || l.isbadandroid || l.preventdefaultexception(t.target, this.options.preventdefaultexception) || t.preventdefault();
var e, n = t.touches ? t.touches[0] : t;
this.initiated = l.eventtype[t.type], this.moved = !1, this.distx = 0, this.disty = 0, this.directionx = 0, this.directiony = 0, this.directionlocked = 0, this.starttime = l.gettime(), this.options.usetransition && this.isintransition ? (this._transitiontime(), this.isintransition = !1, e = this.getcomputedposition(), this._translate(i.round(e.x), i.round(e.y)), this._execevent("scrollend")) : !this.options.usetransition && this.isanimating && (this.isanimating = !1, this._execevent("scrollend")), this.startx = this.x, this.starty = this.y, this.absstartx = this.x, this.absstarty = this.y, this.pointx = n.pagex, this.pointy = n.pagey, this._execevent("beforescrollstart")
}
},
_move: function(t) {
if(this.enabled && l.eventtype[t.type] === this.initiated) {
this.options.preventdefault && t.preventdefault();
var e, n, r, o, s = t.touches ? t.touches[0] : t,
a = s.pagex - this.pointx,
c = s.pagey - this.pointy,
u = l.gettime();
if(this.pointx = s.pagex, this.pointy = s.pagey, this.distx += a, this.disty += c, r = i.abs(this.distx), o = i.abs(this.disty), !(u - this.endtime > 300 && r < 10 && o < 10)) {
if(this.directionlocked || this.options.freescroll || (r > o + this.options.directionlockthreshold ? this.directionlocked = "h" : o >= r + this.options.directionlockthreshold ? this.directionlocked = "v" : this.directionlocked = "n"), "h" == this.directionlocked) {
if("vertical" == this.options.eventpassthrough) t.preventdefault();
else if("horizontal" == this.options.eventpassthrough) return void(this.initiated = !1);
c = 0
} else if("v" == this.directionlocked) {
if("horizontal" == this.options.eventpassthrough) t.preventdefault();
else if("vertical" == this.options.eventpassthrough) return void(this.initiated = !1);
a = 0
}
a = this.hashorizontalscroll ? a : 0, c = this.hasverticalscroll ? c : 0, e = this.x + a, n = this.y + c, (e > 0 || e < this.maxscrollx) && (e = this.options.bounce ? this.x + a / 3 : e > 0 ? 0 : this.maxscrollx), (n > 0 || n < this.maxscrolly) && (n = this.options.bounce ? this.y + c / 3 : n > 0 ? 0 : this.maxscrolly), this.directionx = a > 0 ? -1 : a < 0 ? 1 : 0, this.directiony = c > 0 ? -1 : c < 0 ? 1 : 0, this.moved || this._execevent("scrollstart"), this.moved = !0, this._translate(e, n), u - this.starttime > 300 && (this.starttime = u, this.startx = this.x, this.starty = this.y)
}
}
},
_end: function(t) {
if(this.enabled && l.eventtype[t.type] === this.initiated) {
this.options.preventdefault && !l.preventdefaultexception(t.target, this.options.preventdefaultexception) && t.preventdefault();
var e, n, r = (t.changedtouches && t.changedtouches[0], l.gettime() - this.starttime),
o = i.round(this.x),
s = i.round(this.y),
a = i.abs(o - this.startx),
c = i.abs(s - this.starty),
u = 0,
h = "";
if(this.isintransition = 0, this.initiated = 0, this.endtime = l.gettime(), !this.resetposition(this.options.bouncetime)) {
if(this.scrollto(o, s), !this.moved) return this.options.tap && l.tap(t, this.options.tap), this.options.click && l.click(t), void this._execevent("scrollcancel");
if(this._events.flick && r < 200 && a < 100 && c < 100) return void this._execevent("flick");
if(this.options.momentum && r < 300 && (e = this.hashorizontalscroll ? l.momentum(this.x, this.startx, r, this.maxscrollx, this.options.bounce ? this.wrapperwidth : 0, this.options.deceleration) : {
destination: o,
duration: 0
}, n = this.hasverticalscroll ? l.momentum(this.y, this.starty, r, this.maxscrolly, this.options.bounce ? this.wrapperheight : 0, this.options.deceleration) : {
destination: s,
duration: 0
}, o = e.destination, s = n.destination, u = i.max(e.duration, n.duration), this.isintransition = 1), this.options.snap) {
var p = this._nearestsnap(o, s);
this.currentpage = p, u = this.options.snapspeed || i.max(i.max(i.min(i.abs(o - p.x), 1e3), i.min(i.abs(s - p.y), 1e3)), 300), o = p.x, s = p.y, this.directionx = 0, this.directiony = 0, h = this.options.bounceeasing
}
if(o != this.x || s != this.y) return(o > 0 || o < this.maxscrollx || s > 0 || s < this.maxscrolly) && (h = l.ease.quadratic), void this.scrollto(o, s, u, h);
this._execevent("scrollend")
}
}
},
_resize: function() {
var t = this;
cleartimeout(this.resizetimeout), this.resizetimeout = settimeout(function() {
t.refresh()
}, this.options.resizepolling)
},
resetposition: function(t) {
var e = this.x,
n = this.y;
return t = t || 0, !this.hashorizontalscroll || this.x > 0 ? e = 0 : this.x < this.maxscrollx && (e = this.maxscrollx), !this.hasverticalscroll || this.y > 0 ? n = 0 : this.y < this.maxscrolly && (n = this.maxscrolly), (e != this.x || n != this.y) && (this.scrollto(e, n, t, this.options.bounceeasing), !0)
},
disable: function() {
this.enabled = !1
},
enable: function() {
this.enabled = !0
},
refresh: function() {
this.wrapper.offsetheight;
this.wrapperwidth = this.wrapper.clientwidth, this.wrapperheight = this.wrapper.clientheight, this.scrollerwidth = this.scroller.offsetwidth, this.scrollerheight = this.scroller.offsetheight, this.maxscrollx = this.wrapperwidth - this.scrollerwidth, this.maxscrolly = this.wrapperheight - this.scrollerheight, this.hashorizontalscroll = this.options.scrollx && this.maxscrollx < 0, this.hasverticalscroll = this.options.scrolly && this.maxscrolly < 0, this.hashorizontalscroll || (this.maxscrollx = 0, this.scrollerwidth = this.wrapperwidth), this.hasverticalscroll || (this.maxscrolly = 0, this.scrollerheight = this.wrapperheight), this.endtime = 0, this.directionx = 0, this.directiony = 0, this.wrapperoffset = l.offset(this.wrapper), this._execevent("refresh"), this.resetposition()
},
on: function(t, e) {
this._events[t] || (this._events[t] = []), this._events[t].push(e)
},
off: function(t, e) {
if(this._events[t]) {
var n = this._events[t].indexof(e);
n > -1 && this._events[t].splice(n, 1)
}
},
_execevent: function(t) {
if(this._events[t]) {
var e = 0,
n = this._events[t].length;
if(n)
for(; e < n; e++) this._events[t][e].apply(this, [].slice.call(arguments, 1))
}
},
scrollby: function(t, e, n, i) {
t = this.x + t, e = this.y + e, n = n || 0, this.scrollto(t, e, n, i)
},
scrollto: function(t, e, n, i) {
i = i || l.ease.circular, this.isintransition = this.options.usetransition && n > 0;
var r = this.options.usetransition && i.style;
!n || r ? (r && (this._transitiontimingfunction(i.style), this._transitiontime(n)), this._translate(t, e)) : this._animate(t, e, n, i.fn)
},
scrolltoelement: function(t, e, n, r, o) {
if(t = t.nodetype ? t : this.scroller.queryselector(t)) {
var s = l.offset(t);
s.left -= this.wrapperoffset.left, s.top -= this.wrapperoffset.top, !0 === n && (n = i.round(t.offsetwidth / 2 - this.wrapper.offsetwidth / 2)), !0 === r && (r = i.round(t.offsetheight / 2 - this.wrapper.offsetheight / 2)), s.left -= n || 0, s.top -= r || 0, s.left = s.left > 0 ? 0 : s.left < this.maxscrollx ? this.maxscrollx : s.left, s.top = s.top > 0 ? 0 : s.top < this.maxscrolly ? this.maxscrolly : s.top, e = void 0 === e || null === e || "auto" === e ? i.max(i.abs(this.x - s.left), i.abs(this.y - s.top)) : e, this.scrollto(s.left, s.top, e, o)
}
},
_transitiontime: function(t) {
t = t || 0;
var e = l.style.transitionduration;
if(this.scrollerstyle[e] = t + "ms", !t && l.isbadandroid) {
this.scrollerstyle[e] = "0.0001ms";
var n = this;
a(function() {
"0.0001ms" === n.scrollerstyle[e] && (n.scrollerstyle[e] = "0s")
})
}
if(this.indicators)
for(var i = this.indicators.length; i--;) this.indicators[i].transitiontime(t)
},
_transitiontimingfunction: function(t) {
if(this.scrollerstyle[l.style.transitiontimingfunction] = t, this.indicators)
for(var e = this.indicators.length; e--;) this.indicators[e].transitiontimingfunction(t)
},
_translate: function(t, e) {
if(this.options.usetransform ? this.scrollerstyle[l.style.transform] = "translate(" + t + "px," + e + "px)" + this.translatez : (t = i.round(t), e = i.round(e), this.scrollerstyle.left = t + "px", this.scrollerstyle.top = e + "px"), this.x = t, this.y = e, this.indicators)
for(var n = this.indicators.length; n--;) this.indicators[n].updateposition()
},
_initevents: function(e) {
var n = e ? l.removeevent : l.addevent,
i = this.options.bindtowrapper ? this.wrapper : t;
n(t, "orientationchange", this), n(t, "resize", this), this.options.click && n(this.wrapper, "click", this, !0), this.options.disablemouse || (n(this.wrapper, "mousedown", this), n(i, "mousemove", this), n(i, "mousecancel", this), n(i, "mouseup", this)), l.haspointer && !this.options.disablepointer && (n(this.wrapper, l.prefixpointerevent("pointerdown"), this), n(i, l.prefixpointerevent("pointermove"), this), n(i, l.prefixpointerevent("pointercancel"), this), n(i, l.prefixpointerevent("pointerup"), this)), l.hastouch && !this.options.disabletouch && (n(this.wrapper, "touchstart", this), n(i, "touchmove", this), n(i, "touchcancel", this), n(i, "touchend", this)), n(this.scroller, "transitionend", this), n(this.scroller, "webkittransitionend", this), n(this.scroller, "otransitionend", this), n(this.scroller, "mstransitionend", this)
},
getcomputedposition: function() {
var e, n, i = t.getcomputedstyle(this.scroller, null);
return this.options.usetransform ? (i = i[l.style.transform].split(")")[0].split(", "), e = +(i[12] || i[4]), n = +(i[13] || i[5])) : (e = +i.left.replace(/[^-\d.]/g, ""), n = +i.top.replace(/[^-\d.]/g, "")), {
x: e,
y: n
}
},
_initindicators: function() {
function t(t) {
if(a.indicators)
for(var e = a.indicators.length; e--;) t.call(a.indicators[e])
}
var e, n = this.options.interactivescrollbars,
i = "string" != typeof this.options.scrollbars,
r = [],
a = this;
this.indicators = [], this.options.scrollbars && (this.options.scrolly && (e = {
el: o("v", n, this.options.scrollbars),
interactive: n,
defaultscrollbars: !0,
customstyle: i,
resize: this.options.resizescrollbars,
shrink: this.options.shrinkscrollbars,
fade: this.options.fadescrollbars,
listenx: !1
}, this.wrapper.appendchild(e.el), r.push(e)), this.options.scrollx && (e = {
el: o("h", n, this.options.scrollbars),
interactive: n,
defaultscrollbars: !0,
customstyle: i,
resize: this.options.resizescrollbars,
shrink: this.options.shrinkscrollbars,
fade: this.options.fadescrollbars,
listeny: !1
}, this.wrapper.appendchild(e.el), r.push(e))), this.options.indicators && (r = r.concat(this.options.indicators));
for(var l = r.length; l--;) this.indicators.push(new s(this, r[l]));
this.options.fadescrollbars && (this.on("scrollend", function() {
t(function() {
this.fade()
})
}), this.on("scrollcancel", function() {
t(function() {
this.fade()
})
}), this.on("scrollstart", function() {
t(function() {
this.fade(1)
})
}), this.on("beforescrollstart", function() {
t(function() {
this.fade(1, !0)
})
})), this.on("refresh", function() {
t(function() {
this.refresh()
})
}), this.on("destroy", function() {
t(function() {
this.destroy()
}), delete this.indicators
})
},
_initwheel: function() {
l.addevent(this.wrapper, "wheel", this), l.addevent(this.wrapper, "mousewheel", this), l.addevent(this.wrapper, "dommousescroll", this), this.on("destroy", function() {
cleartimeout(this.wheeltimeout), this.wheeltimeout = null, l.removeevent(this.wrapper, "wheel", this), l.removeevent(this.wrapper, "mousewheel", this), l.removeevent(this.wrapper, "dommousescroll", this)
})
},
_wheel: function(t) {
if(this.enabled) {
t.preventdefault();
var e, n, r, o, s = this;
if(void 0 === this.wheeltimeout && s._execevent("scrollstart"), cleartimeout(this.wheeltimeout), this.wheeltimeout = settimeout(function() {
s.options.snap || s._execevent("scrollend"), s.wheeltimeout = void 0
}, 400), "deltax" in t) 1 === t.deltamode ? (e = -t.deltax * this.options.mousewheelspeed, n = -t.deltay * this.options.mousewheelspeed) : (e = -t.deltax, n = -t.deltay);
else if("wheeldeltax" in t) e = t.wheeldeltax / 120 * this.options.mousewheelspeed, n = t.wheeldeltay / 120 * this.options.mousewheelspeed;
else if("wheeldelta" in t) e = n = t.wheeldelta / 120 * this.options.mousewheelspeed;
else {
if(!("detail" in t)) return;
e = n = -t.detail / 3 * this.options.mousewheelspeed
}
if(e *= this.options.invertwheeldirection, n *= this.options.invertwheeldirection, this.hasverticalscroll || (e = n, n = 0), this.options.snap) return r = this.currentpage.pagex, o = this.currentpage.pagey, e > 0 ? r-- : e < 0 && r++, n > 0 ? o-- : n < 0 && o++, void this.gotopage(r, o);
r = this.x + i.round(this.hashorizontalscroll ? e : 0), o = this.y + i.round(this.hasverticalscroll ? n : 0), this.directionx = e > 0 ? -1 : e < 0 ? 1 : 0, this.directiony = n > 0 ? -1 : n < 0 ? 1 : 0, r > 0 ? r = 0 : r < this.maxscrollx && (r = this.maxscrollx), o > 0 ? o = 0 : o < this.maxscrolly && (o = this.maxscrolly), this.scrollto(r, o, 0)
}
},
_initsnap: function() {
this.currentpage = {}, "string" == typeof this.options.snap && (this.options.snap = this.scroller.queryselectorall(this.options.snap)), this.on("refresh", function() {
var t, e, n, r, o, s, a = 0,
l = 0,
c = 0,
u = this.options.snapstepx || this.wrapperwidth,
h = this.options.snapstepy || this.wrapperheight;
if(this.pages = [], this.wrapperwidth && this.wrapperheight && this.scrollerwidth && this.scrollerheight) {
if(!0 === this.options.snap)
for(n = i.round(u / 2), r = i.round(h / 2); c > -this.scrollerwidth;) {
for(this.pages[a] = [], t = 0, o = 0; o > -this.scrollerheight;) this.pages[a][t] = {
x: i.max(c, this.maxscrollx),
y: i.max(o, this.maxscrolly),
width: u,
height: h,
cx: c - n,
cy: o - r
}, o -= h, t++;
c -= u, a++
} else
for(s = this.options.snap, t = s.length, e = -1; a < t; a++)(0 === a || s[a].offsetleft <= s[a - 1].offsetleft) && (l = 0, e++), this.pages[l] || (this.pages[l] = []), c = i.max(-s[a].offsetleft, this.maxscrollx), o = i.max(-s[a].offsettop, this.maxscrolly), n = c - i.round(s[a].offsetwidth / 2), r = o - i.round(s[a].offsetheight / 2), this.pages[l][e] = {
x: c,
y: o,
width: s[a].offsetwidth,
height: s[a].offsetheight,
cx: n,
cy: r
}, c > this.maxscrollx && l++;
this.gotopage(this.currentpage.pagex || 0, this.currentpage.pagey || 0, 0), this.options.snapthreshold % 1 == 0 ? (this.snapthresholdx = this.options.snapthreshold, this.snapthresholdy = this.options.snapthreshold) : (this.snapthresholdx = i.round(this.pages[this.currentpage.pagex][this.currentpage.pagey].width * this.options.snapthreshold), this.snapthresholdy = i.round(this.pages[this.currentpage.pagex][this.currentpage.pagey].height * this.options.snapthreshold))
}
}), this.on("flick", function() {
var t = this.options.snapspeed || i.max(i.max(i.min(i.abs(this.x - this.startx), 1e3), i.min(i.abs(this.y - this.starty), 1e3)), 300);
this.gotopage(this.currentpage.pagex + this.directionx, this.currentpage.pagey + this.directiony, t)
})
},
_nearestsnap: function(t, e) {
if(!this.pages.length) return {
x: 0,
y: 0,
pagex: 0,
pagey: 0
};
var n = 0,
r = this.pages.length,
o = 0;
if(i.abs(t - this.absstartx) < this.snapthresholdx && i.abs(e - this.absstarty) < this.snapthresholdy) return this.currentpage;
for(t > 0 ? t = 0 : t < this.maxscrollx && (t = this.maxscrollx), e > 0 ? e = 0 : e < this.maxscrolly && (e = this.maxscrolly); n < r; n++)
if(t >= this.pages[n][0].cx) {
t = this.pages[n][0].x;
break
}
for(r = this.pages[n].length; o < r; o++)
if(e >= this.pages[0][o].cy) {
e = this.pages[0][o].y;
break
}
return n == this.currentpage.pagex && (n += this.directionx, n < 0 ? n = 0 : n >= this.pages.length && (n = this.pages.length - 1), t = this.pages[n][0].x), o == this.currentpage.pagey && (o += this.directiony, o < 0 ? o = 0 : o >= this.pages[0].length && (o = this.pages[0].length - 1), e = this.pages[0][o].y), {
x: t,
y: e,
pagex: n,
pagey: o
}
},
gotopage: function(t, e, n, r) {
r = r || this.options.bounceeasing, t >= this.pages.length ? t = this.pages.length - 1 : t < 0 && (t = 0), e >= this.pages[t].length ? e = this.pages[t].length - 1 : e < 0 && (e = 0);
var o = this.pages[t][e].x,
s = this.pages[t][e].y;
n = void 0 === n ? this.options.snapspeed || i.max(i.max(i.min(i.abs(o - this.x), 1e3), i.min(i.abs(s - this.y), 1e3)), 300) : n, this.currentpage = {
x: o,
y: s,
pagex: t,
pagey: e
}, this.scrollto(o, s, n, r)
},
next: function(t, e) {
var n = this.currentpage.pagex,
i = this.currentpage.pagey;
n++, n >= this.pages.length && this.hasverticalscroll && (n = 0, i++), this.gotopage(n, i, t, e)
},
prev: function(t, e) {
var n = this.currentpage.pagex,
i = this.currentpage.pagey;
n--, n < 0 && this.hasverticalscroll && (n = 0, i--), this.gotopage(n, i, t, e)
},
_initkeys: function(e) {
var n, i = {
pageup: 33,
pagedown: 34,
end: 35,
home: 36,
left: 37,
up: 38,
right: 39,
down: 40
};
if("object" == typeof this.options.keybindings)
for(n in this.options.keybindings) "string" == typeof this.options.keybindings[n] && (this.options.keybindings[n] = this.options.keybindings[n].touppercase().charcodeat(0));
else this.options.keybindings = {};
for(n in i) this.options.keybindings[n] = this.options.keybindings[n] || i[n];
l.addevent(t, "keydown", this), this.on("destroy", function() {
l.removeevent(t, "keydown", this)
})
},
_key: function(t) {
if(this.enabled) {
var e, n = this.options.snap,
r = n ? this.currentpage.pagex : this.x,
o = n ? this.currentpage.pagey : this.y,
s = l.gettime(),
a = this.keytime || 0;
switch(this.options.usetransition && this.isintransition && (e = this.getcomputedposition(), this._translate(i.round(e.x), i.round(e.y)), this.isintransition = !1), this.keyacceleration = s - a < 200 ? i.min(this.keyacceleration + .25, 50) : 0, t.keycode) {
case this.options.keybindings.pageup:
this.hashorizontalscroll && !this.hasverticalscroll ? r += n ? 1 : this.wrapperwidth : o += n ? 1 : this.wrapperheight;
break;
case this.options.keybindings.pagedown:
this.hashorizontalscroll && !this.hasverticalscroll ? r -= n ? 1 : this.wrapperwidth : o -= n ? 1 : this.wrapperheight;
break;
case this.options.keybindings.end:
r = n ? this.pages.length - 1 : this.maxscrollx, o = n ? this.pages[0].length - 1 : this.maxscrolly;
break;
case this.options.keybindings.home:
r = 0, o = 0;
break;
case this.options.keybindings.left:
r += n ? -1 : 5 + this.keyacceleration >> 0;
break;
case this.options.keybindings.up:
o += n ? 1 : 5 + this.keyacceleration >> 0;
break;
case this.options.keybindings.right:
r -= n ? -1 : 5 + this.keyacceleration >> 0;
break;
case this.options.keybindings.down:
o -= n ? 1 : 5 + this.keyacceleration >> 0;
break;
default:
return
}
if(n) return void this.gotopage(r, o);
r > 0 ? (r = 0, this.keyacceleration = 0) : r < this.maxscrollx && (r = this.maxscrollx, this.keyacceleration = 0), o > 0 ? (o = 0, this.keyacceleration = 0) : o < this.maxscrolly && (o = this.maxscrolly, this.keyacceleration = 0), this.scrollto(r, o, 0), this.keytime = s
}
},
_animate: function(t, e, n, i) {
function r() {
var p, d, f, g = l.gettime();
if(g >= h) return o.isanimating = !1, o._translate(t, e), void(o.resetposition(o.options.bouncetime) || o._execevent("scrollend"));
g = (g - u) / n, f = i(g), p = (t - s) * f + s, d = (e - c) * f + c, o._translate(p, d), o.isanimating && a(r)
}
var o = this,
s = this.x,
c = this.y,
u = l.gettime(),
h = u + n;
this.isanimating = !0, r()
},
handleevent: function(t) {
switch(t.type) {
case "touchstart":
case "pointerdown":
case "mspointerdown":
case "mousedown":
this._start(t);
break;
case "touchmove":
case "pointermove":
case "mspointermove":
case "mousemove":
this._move(t);
break;
case "touchend":
case "pointerup":
case "mspointerup":
case "mouseup":
case "touchcancel":
case "pointercancel":
case "mspointercancel":
case "mousecancel":
this._end(t);
break;
case "orientationchange":
case "resize":
this._resize();
break;
case "transitionend":
case "webkittransitionend":
case "otransitionend":
case "mstransitionend":
this._transitionend(t);
break;
case "wheel":
case "dommousescroll":
case "mousewheel":
this._wheel(t);
break;
case "keydown":
this._key(t);
break;
case "click":
this.enabled && !t._constructed && (t.preventdefault(), t.stoppropagation())
}
}
}, s.prototype = {
handleevent: function(t) {
switch(t.type) {
case "touchstart":
case "pointerdown":
case "mspointerdown":
case "mousedown":
this._start(t);
break;
case "touchmove":
case "pointermove":
case "mspointermove":
case "mousemove":
this._move(t);
break;
case "touchend":
case "pointerup":
case "mspointerup":
case "mouseup":
case "touchcancel":
case "pointercancel":
case "mspointercancel":
case "mousecancel":
this._end(t)
}
},
destroy: function() {
this.options.fadescrollbars && (cleartimeout(this.fadetimeout), this.fadetimeout = null), this.options.interactive && (l.removeevent(this.indicator, "touchstart", this), l.removeevent(this.indicator, l.prefixpointerevent("pointerdown"), this), l.removeevent(this.indicator, "mousedown", this), l.removeevent(t, "touchmove", this), l.removeevent(t, l.prefixpointerevent("pointermove"), this), l.removeevent(t, "mousemove", this), l.removeevent(t, "touchend", this), l.removeevent(t, l.prefixpointerevent("pointerup"), this), l.removeevent(t, "mouseup", this)), this.options.defaultscrollbars && this.wrapper.parentnode.removechild(this.wrapper)
},
_start: function(e) {
var n = e.touches ? e.touches[0] : e;
e.preventdefault(), e.stoppropagation(), this.transitiontime(), this.initiated = !0, this.moved = !1, this.lastpointx = n.pagex, this.lastpointy = n.pagey, this.starttime = l.gettime(), this.options.disabletouch || l.addevent(t, "touchmove", this), this.options.disablepointer || l.addevent(t, l.prefixpointerevent("pointermove"), this), this.options.disablemouse || l.addevent(t, "mousemove", this), this.scroller._execevent("beforescrollstart")
},
_move: function(t) {
var e, n, i, r, o = t.touches ? t.touches[0] : t;
l.gettime();
this.moved || this.scroller._execevent("scrollstart"), this.moved = !0, e = o.pagex - this.lastpointx, this.lastpointx = o.pagex, n = o.pagey - this.lastpointy, this.lastpointy = o.pagey, i = this.x + e, r = this.y + n, this._pos(i, r), t.preventdefault(), t.stoppropagation()
},
_end: function(e) {
if(this.initiated) {
if(this.initiated = !1, e.preventdefault(), e.stoppropagation(), l.removeevent(t, "touchmove", this), l.removeevent(t, l.prefixpointerevent("pointermove"), this), l.removeevent(t, "mousemove", this), this.scroller.options.snap) {
var n = this.scroller._nearestsnap(this.scroller.x, this.scroller.y),
r = this.options.snapspeed || i.max(i.max(i.min(i.abs(this.scroller.x - n.x), 1e3), i.min(i.abs(this.scroller.y - n.y), 1e3)), 300);
this.scroller.x == n.x && this.scroller.y == n.y || (this.scroller.directionx = 0, this.scroller.directiony = 0, this.scroller.currentpage = n, this.scroller.scrollto(n.x, n.y, r, this.scroller.options.bounceeasing))
}
this.moved && this.scroller._execevent("scrollend")
}
},
transitiontime: function(t) {
t = t || 0;
var e = l.style.transitionduration;
if(this.indicatorstyle[e] = t + "ms", !t && l.isbadandroid) {
this.indicatorstyle[e] = "0.0001ms";
var n = this;
a(function() {
"0.0001ms" === n.indicatorstyle[e] && (n.indicatorstyle[e] = "0s")
})
}
},
transitiontimingfunction: function(t) {
this.indicatorstyle[l.style.transitiontimingfunction] = t
},
refresh: function() {
this.transitiontime(), this.options.listenx && !this.options.listeny ? this.indicatorstyle.display = this.scroller.hashorizontalscroll ? "block" : "none" : this.options.listeny && !this.options.listenx ? this.indicatorstyle.display = this.scroller.hasverticalscroll ? "block" : "none" : this.indicatorstyle.display = this.scroller.hashorizontalscroll || this.scroller.hasverticalscroll ? "block" : "none", this.scroller.hashorizontalscroll && this.scroller.hasverticalscroll ? (l.addclass(this.wrapper, "iscrollbothscrollbars"), l.removeclass(this.wrapper, "iscrolllonescrollbar"), this.options.defaultscrollbars && this.options.customstyle && (this.options.listenx ? this.wrapper.style.right = "8px" : this.wrapper.style.bottom = "8px")) : (l.removeclass(this.wrapper, "iscrollbothscrollbars"), l.addclass(this.wrapper, "iscrolllonescrollbar"), this.options.defaultscrollbars && this.options.customstyle && (this.options.listenx ? this.wrapper.style.right = "2px" : this.wrapper.style.bottom = "2px"));
this.wrapper.offsetheight;
this.options.listenx && (this.wrapperwidth = this.wrapper.clientwidth, this.options.resize ? (this.indicatorwidth = i.max(i.round(this.wrapperwidth * this.wrapperwidth / (this.scroller.scrollerwidth || this.wrapperwidth || 1)), 8), this.indicatorstyle.width = this.indicatorwidth + "px") : this.indicatorwidth = this.indicator.clientwidth, this.maxposx = this.wrapperwidth - this.indicatorwidth, "clip" == this.options.shrink ? (this.minboundaryx = 8 - this.indicatorwidth, this.maxboundaryx = this.wrapperwidth - 8) : (this.minboundaryx = 0, this.maxboundaryx = this.maxposx), this.sizeratiox = this.options.speedratiox || this.scroller.maxscrollx && this.maxposx / this.scroller.maxscrollx), this.options.listeny && (this.wrapperheight = this.wrapper.clientheight, this.options.resize ? (this.indicatorheight = i.max(i.round(this.wrapperheight * this.wrapperheight / (this.scroller.scrollerheight || this.wrapperheight || 1)), 8), this.indicatorstyle.height = this.indicatorheight + "px") : this.indicatorheight = this.indicator.clientheight, this.maxposy = this.wrapperheight - this.indicatorheight, "clip" == this.options.shrink ? (this.minboundaryy = 8 - this.indicatorheight, this.maxboundaryy = this.wrapperheight - 8) : (this.minboundaryy = 0, this.maxboundaryy = this.maxposy), this.maxposy = this.wrapperheight - this.indicatorheight, this.sizeratioy = this.options.speedratioy || this.scroller.maxscrolly && this.maxposy / this.scroller.maxscrolly), this.updateposition()
},
updateposition: function() {
var t = this.options.listenx && i.round(this.sizeratiox * this.scroller.x) || 0,
e = this.options.listeny && i.round(this.sizeratioy * this.scroller.y) || 0;
this.options.ignoreboundaries || (t < this.minboundaryx ? ("scale" == this.options.shrink && (this.width = i.max(this.indicatorwidth + t, 8), this.indicatorstyle.width = this.width + "px"), t = this.minboundaryx) : t > this.maxboundaryx ? "scale" == this.options.shrink ? (this.width = i.max(this.indicatorwidth - (t - this.maxposx), 8), this.indicatorstyle.width = this.width + "px", t = this.maxposx + this.indicatorwidth - this.width) : t = this.maxboundaryx : "scale" == this.options.shrink && this.width != this.indicatorwidth && (this.width = this.indicatorwidth, this.indicatorstyle.width = this.width + "px"), e < this.minboundaryy ? ("scale" == this.options.shrink && (this.height = i.max(this.indicatorheight + 3 * e, 8), this.indicatorstyle.height = this.height + "px"), e = this.minboundaryy) : e > this.maxboundaryy ? "scale" == this.options.shrink ? (this.height = i.max(this.indicatorheight - 3 * (e - this.maxposy), 8), this.indicatorstyle.height = this.height + "px", e = this.maxposy + this.indicatorheight - this.height) : e = this.maxboundaryy : "scale" == this.options.shrink && this.height != this.indicatorheight && (this.height = this.indicatorheight, this.indicatorstyle.height = this.height + "px")), this.x = t, this.y = e, this.scroller.options.usetransform ? this.indicatorstyle[l.style.transform] = "translate(" + t + "px," + e + "px)" + this.scroller.translatez : (this.indicatorstyle.left = t + "px", this.indicatorstyle.top = e + "px")
},
_pos: function(t, e) {
t < 0 ? t = 0 : t > this.maxposx && (t = this.maxposx), e < 0 ? e = 0 : e > this.maxposy && (e = this.maxposy), t = this.options.listenx ? i.round(t / this.sizeratiox) : this.scroller.x, e = this.options.listeny ? i.round(e / this.sizeratioy) : this.scroller.y, this.scroller.scrollto(t, e)
},
fade: function(t, e) {
if(!e || this.visible) {
cleartimeout(this.fadetimeout), this.fadetimeout = null;
var n = t ? 250 : 500,
i = t ? 0 : 300;
t = t ? "1" : "0", this.wrapperstyle[l.style.transitionduration] = n + "ms", this.fadetimeout = settimeout(function(t) {
this.wrapperstyle.opacity = t, this.visible = +t
}.bind(this, t), i)
}
}
}, r.utils = l, void 0 !== e && e.exports ? e.exports = r : "function" == typeof define && define.amd ? define(function() {
return r
}) : t.iscroll = r
}(window, document, math)
}, {}],
4: [function(t, e, n) {
! function(i) {
"use strict";
"function" == typeof define && define.amd ? define(["jquery"], i) : "object" == typeof n ? e.exports = i(t("jquery")) : i(jquery)
}(function(t) {
"use strict";
var e = void 0 !== document.ontouchstart,
n = {
init: function(e) {
return e = t.extend({
iscroll: {
mousewheel: !0,
preventdefault: !1
},
showoverlay: !0
}, e), n.settings = {
state: !1,
events: {
opened: "drawer.opened",
closed: "drawer.closed"
},
dropdownevents: {
opened: "shown.bs.dropdown",
closed: "hidden.bs.dropdown"
}
}, n.settings.class = t.extend({
nav: "drawer-nav",
toggle: "drawer-toggle",
overlay: "drawer-overlay",
open: "drawer-open",
close: "drawer-close",
dropdown: "drawer-dropdown"
}, e.class), this.each(function() {
var i = this,
r = t(this);
r.data("drawer") || (e = t.extend({}, e), r.data("drawer", {
options: e
}), n.refresh.call(i), e.showoverlay && n.addoverlay.call(i), t("." + n.settings.class.toggle).on("click.drawer", function() {
return n.toggle.call(i), i.iscroll.refresh()
}), t(window).on("resize.drawer", function() {
return n.close.call(i), i.iscroll.refresh()
}), t("." + n.settings.class.dropdown).on(n.settings.dropdownevents.opened + " " + n.settings.dropdownevents.closed, function() {
return i.iscroll.refresh()
}))
})
},
refresh: function() {
this.iscroll = new iscroll("." + n.settings.class.nav, t(this).data("drawer").options.iscroll)
},
addoverlay: function() {
var e = t(this),
i = t("
").addclass(n.settings.class.overlay + " " + n.settings.class.toggle);
return e.append(i)
},
toggle: function() {
var t = this;
return n.settings.state ? n.close.call(t) : n.open.call(t)
},
open: function() {
var i = t(this);
return e && i.on("touchmove.drawer", function(t) {
t.preventdefault()
}), i.removeclass(n.settings.class.close).addclass(n.settings.class.open).drawercallback(function() {
n.settings.state = !0, i.trigger(n.settings.events.opened)
})
},
close: function() {
var i = t(this);
return e && i.off("touchmove.drawer"), i.removeclass(n.settings.class.open).addclass(n.settings.class.close).drawercallback(function() {
n.settings.state = !1, i.trigger(n.settings.events.closed)
})
},
destroy: function() {
return this.each(function() {
var e = this,
i = t(this);
t("." + n.settings.class.toggle).off("click.drawer"), t(window).off("resize.drawer"), t("." + n.settings.class.dropdown).off(n.settings.dropdownevents.opened + " " + n.settings.dropdownevents.closed), e.iscroll.destroy(), i.removedata("drawer").find("." + n.settings.class.overlay).remove()
})
}
};
t.fn.drawercallback = function(e) {
var n = "transitionend webkittransitionend";
return this.each(function() {
var i = t(this);
i.on(n, function() {
return i.off(n), e.call(this)
})
})
}, t.fn.drawer = function(e) {
return n[e] ? n[e].apply(this, array.prototype.slice.call(arguments, 1)) : "object" != typeof e && e ? void t.error("method " + e + " does not exist on jquery.drawer") : n.init.apply(this, arguments)
}
})
}, {
jquery: 5
}],
5: [function(t, e, n) {
! function(t, n) {
"object" == typeof e && "object" == typeof e.exports ? e.exports = t.document ? n(t, !0) : function(t) {
if(!t.document) throw new error("jquery requires a window with a document");
return n(t)
} : n(t)
}("undefined" != typeof window ? window : this, function(t, e) {
function n(t) {
var e = !!t && "length" in t && t.length,
n = rt.type(t);
return "function" !== n && !rt.iswindow(t) && ("array" === n || 0 === e || "number" == typeof e && e > 0 && e - 1 in t)
}
function i(t, e, n) {
if(rt.isfunction(e)) return rt.grep(t, function(t, i) {
return !!e.call(t, i, t) !== n
});
if(e.nodetype) return rt.grep(t, function(t) {
return t === e !== n
});
if("string" == typeof e) {
if(ht.test(e)) return rt.filter(e, t, n);
e = rt.filter(e, t)
}
return rt.grep(t, function(t) {
return j.call(e, t) > -1 !== n
})
}
function r(t, e) {
for(;
(t = t[e]) && 1 !== t.nodetype;);
return t
}
function o(t) {
var e = {};
return rt.each(t.match(mt) || [], function(t, n) {
e[n] = !0
}), e
}
function s() {
k.removeeventlistener("domcontentloaded", s), t.removeeventlistener("load", s), rt.ready()
}
function a() {
this.expando = rt.expando + a.uid++
}
function l(t, e, n) {
var i;
if(void 0 === n && 1 === t.nodetype)
if(i = "data-" + e.replace(st, "-$&").tolowercase(), "string" == typeof(n = t.getattribute(i))) {
try {
n = "true" === n || "false" !== n && ("null" === n ? null : +n + "" === n ? +n : tt.test(n) ? rt.parsejson(n) : n)
} catch(t) {}
wt.set(t, e, n)
} else n = void 0;
return n
}
function c(t, e, n, i) {
var r, o = 1,
s = 20,
a = i ? function() {
return i.cur()
} : function() {
return rt.css(t, e, "")
},
l = a(),
c = n && n[3] || (rt.cssnumber[e] ? "" : "px"),
u = (rt.cssnumber[e] || "px" !== c && +l) && kt.exec(rt.css(t, e));
if(u && u[3] !== c) {
c = c || u[3], n = n || [], u = +l || 1;
do {
o = o || ".5", u /= o, rt.style(t, e, u + c)
} while (o !== (o = a() / l) && 1 !== o && --s)
}
return n && (u = +u || +l || 0, r = n[1] ? u + (n[1] + 1) * n[2] : +n[2], i && (i.unit = c, i.start = u, i.end = r)), r
}
function u(t, e) {
var n = void 0 !== t.getelementsbytagname ? t.getelementsbytagname(e || "*") : void 0 !== t.queryselectorall ? t.queryselectorall(e || "*") : [];
return void 0 === e || e && rt.nodename(t, e) ? rt.merge([t], n) : n
}
function h(t, e) {
for(var n = 0, i = t.length; n < i; n++) bt.set(t[n], "globaleval", !e || bt.get(e[n], "globaleval"))
}
function p(t, e, n, i, r) {
for(var o, s, a, l, c, p, d = e.createdocumentfragment(), f = [], g = 0, m = t.length; g < m; g++)
if((o = t[g]) || 0 === o)
if("object" === rt.type(o)) rt.merge(f, o.nodetype ? [o] : o);
else if(ht.test(o)) {
for(s = s || d.appendchild(e.createelement("div")), a = (pt.exec(o) || ["", ""])[1].tolowercase(), l = _t[a] || _t._default, s.innerhtml = l[1] + rt.htmlprefilter(o) + l[2], p = l[0]; p--;) s = s.lastchild;
rt.merge(f, s.childnodes), s = d.firstchild, s.textcontent = ""
} else f.push(e.createtextnode(o));
for(d.textcontent = "", g = 0; o = f[g++];)
if(i && rt.inarray(o, i) > -1) r && r.push(o);
else if(c = rt.contains(o.ownerdocument, o), s = u(d.appendchild(o), "script"), c && h(s), n)
for(p = 0; o = s[p++];) nt.test(o.type || "") && n.push(o);
return d
}
function d() {
return !0
}
function f() {
return !1
}
function g() {
try {
return k.activeelement
} catch(t) {}
}
function m(t, e, n, i, r, o) {
var s, a;
if("object" == typeof e) {
"string" != typeof n && (i = i || n, n = void 0);
for(a in e) m(t, a, n, i, e[a], o);
return t
}
if(null == i && null == r ? (r = n, i = n = void 0) : null == r && ("string" == typeof n ? (r = i, i = void 0) : (r = i, i = n, n = void 0)), !1 === r) r = f;
else if(!r) return t;
return 1 === o && (s = r, r = function(t) {
return rt().off(t), s.apply(this, arguments)
}, r.guid = s.guid || (s.guid = rt.guid++)), t.each(function() {
rt.event.add(this, e, r, i, n)
})
}
function v(t, e) {
return rt.nodename(t, "table") && rt.nodename(11 !== e.nodetype ? e : e.firstchild, "tr") ? t.getelementsbytagname("tbody")[0] || t.appendchild(t.ownerdocument.createelement("tbody")) : t
}
function y(t) {
return t.type = (null !== t.getattribute("type")) + "/" + t.type, t
}
function x(t) {
var e = yt.exec(t.type);
return e ? t.type = e[1] : t.removeattribute("type"), t
}
function b(t, e) {
var n, i, r, o, s, a, l, c;
if(1 === e.nodetype) {
if(bt.hasdata(t) && (o = bt.access(t), s = bt.set(e, o), c = o.events)) {
delete s.handle, s.events = {};
for(r in c)
for(n = 0, i = c[r].length; n < i; n++) rt.event.add(e, r, c[r][n])
}
wt.hasdata(t) && (a = wt.access(t), l = rt.extend({}, a), wt.set(e, l))
}
}
function w(t, e) {
var n = e.nodename.tolowercase();
"input" === n && at.test(t.type) ? e.checked = t.checked : "input" !== n && "textarea" !== n || (e.defaultvalue = t.defaultvalue)
}
function t(t, e, n, i) {
e = q.apply([], e);
var r, o, s, a, l, c, h = 0,
d = t.length,
f = d - 1,
g = e[0],
m = rt.isfunction(g);
if(m || d > 1 && "string" == typeof g && !it.checkclone && qt.test(g)) return t.each(function(r) {
var o = t.eq(r);
m && (e[0] = g.call(this, r, o.html())), t(o, e, n, i)
});
if(d && (r = p(e, t[0].ownerdocument, !1, t, i), o = r.firstchild, 1 === r.childnodes.length && (r = o), o || i)) {
for(s = rt.map(u(r, "script"), y), a = s.length; h < d; h++) l = r, h !== f && (l = rt.clone(l, !0, !0), a && rt.merge(s, u(l, "script"))), n.call(t[h], l, h);
if(a)
for(c = s[s.length - 1].ownerdocument, rt.map(s, x), h = 0; h < a; h++) l = s[h], nt.test(l.type || "") && !bt.access(l, "globaleval") && rt.contains(c, l) && (l.src ? rt._evalurl && rt._evalurl(l.src) : rt.globaleval(l.textcontent.replace(wt, "")))
}
return t
}
function s(t, e, n) {
for(var i, r = e ? rt.filter(e, t) : t, o = 0; null != (i = r[o]); o++) n || 1 !== i.nodetype || rt.cleandata(u(i)), i.parentnode && (n && rt.contains(i.ownerdocument, i) && h(u(i, "script")), i.parentnode.removechild(i));
return t
}
function e(t, e) {
var n = rt(e.createelement(t)).appendto(e.body),
i = rt.css(n[0], "display");
return n.detach(), i
}
function k(t) {
var e = k,
n = mt[t];
return n || (n = e(t, e), "none" !== n && n || (it = (it || rt("
")).appendto(e.documentelement), e = it[0].contentdocument, e.write(), e.close(), n = e(t, e), it.detach()), mt[t] = n), n
}
function c(t, e, n) {
var i, r, o, s, a = t.style;
return n = n || ft(t), s = n ? n.getpropertyvalue(e) || n[e] : void 0, "" !== s && void 0 !== s || rt.contains(t.ownerdocument, t) || (s = rt.style(t, e)), n && !it.pixelmarginright() && rt.test(s) && bt.test(e) && (i = a.width, r = a.minwidth, o = a.maxwidth, a.minwidth = a.maxwidth = a.width = s, s = n.width, a.width = i, a.minwidth = r, a.maxwidth = o), void 0 !== s ? s + "" : s
}
function d(t, e) {
return {
get: function() {
return t() ? void delete this.get : (this.get = e).apply(this, arguments)
}
}
}
function a(t) {
if(t in qt) return t;
for(var e = t[0].touppercase() + t.slice(1), n = gt.length; n--;)
if((t = gt[n] + e) in qt) return t
}
function p(t, e, n) {
var i = kt.exec(e);
return i ? math.max(0, i[2] - (n || 0)) + (i[3] || "px") : e
}
function n(t, e, n, i, r) {
for(var o = n === (i ? "border" : "content") ? 4 : "width" === e ? 1 : 0, s = 0; o < 4; o += 2) "margin" === n && (s += rt.css(t, n + ct[o], !0, r)), i ? ("content" === n && (s -= rt.css(t, "padding" + ct[o], !0, r)), "margin" !== n && (s -= rt.css(t, "border" + ct[o] + "width", !0, r))) : (s += rt.css(t, "padding" + ct[o], !0, r), "padding" !== n && (s += rt.css(t, "border" + ct[o] + "width", !0, r)));
return s
}
function _(t, e, n) {
var i = !0,
r = "width" === e ? t.offsetwidth : t.offsetheight,
o = ft(t),
s = "border-box" === rt.css(t, "boxsizing", !1, o);
if(r <= 0 || null == r) {
if(r = c(t, e, o), (r < 0 || null == r) && (r = t.style[e]), rt.test(r)) return r;
i = s && (it.boxsizingreliable() || r === t.style[e]), r = parsefloat(r) || 0
}
return r + n(t, e, n || (s ? "border" : "content"), i, o) + "px"
}
function h(t, e) {
for(var n, i, r, o = [], s = 0, a = t.length; s < a; s++) i = t[s], i.style && (o[s] = bt.get(i, "olddisplay"), n = i.style.display, e ? (o[s] || "none" !== n || (i.style.display = ""), "" === i.style.display && dt(i) && (o[s] = bt.access(i, "olddisplay", k(i.nodename)))) : (r = dt(i), "none" === n && r || bt.set(i, "olddisplay", r ? n : rt.css(i, "display"))));
for(s = 0; s < a; s++) i = t[s], i.style && (e && "none" !== i.style.display && "" !== i.style.display || (i.style.display = e ? o[s] || "" : "none"));
return t
}
function j(t, e, n, i, r) {
return new j.prototype.init(t, e, n, i, r)
}
function l() {
return t.settimeout(function() {
zt = void 0
}), zt = rt.now()
}
function x(t, e) {
var n, i = 0,
r = {
height: t
};
for(e = e ? 1 : 0; i < 4; i += 2 - e) n = ct[i], r["margin" + n] = r["padding" + n] = t;
return e && (r.opacity = r.width = t), r
}
function o(t, e, n) {
for(var i, r = (w.tweeners[e] || []).concat(w.tweeners["*"]), o = 0, s = r.length; o < s; o++)
if(i = r[o].call(n, e, t)) return i
}
function q(t, e, n) {
var i, r, o, s, a, l, c, u = this,
h = {},
p = t.style,
d = t.nodetype && dt(t),
f = bt.get(t, "fxshow");
n.queue || (a = rt._queuehooks(t, "fx"), null == a.unqueued && (a.unqueued = 0, l = a.empty.fire, a.empty.fire = function() {
a.unqueued || l()
}), a.unqueued++, u.always(function() {
u.always(function() {
a.unqueued--, rt.queue(t, "fx").length || a.empty.fire()
})
})), 1 === t.nodetype && ("height" in e || "width" in e) && (n.overflow = [p.overflow, p.overflowx, p.overflowy], c = rt.css(t, "display"), "inline" === ("none" === c ? bt.get(t, "olddisplay") || k(t.nodename) : c) && "none" === rt.css(t, "float") && (p.display = "inline-block")), n.overflow && (p.overflow = "hidden", u.always(function() {
p.overflow = n.overflow[0], p.overflowx = n.overflow[1], p.overflowy = n.overflow[2]
}));
for(i in e)
if(r = e[i], te.exec(r)) {
if(delete e[i], o = o || "toggle" === r, r === (d ? "hide" : "show")) {
if("show" !== r || !f || void 0 === f[i]) continue;
d = !0
}
h[i] = f && f[i] || rt.style(t, i)
} else c = void 0;
if(rt.isemptyobject(h)) "inline" === ("none" === c ? k(t.nodename) : c) && (p.display = c);
else {
f ? "hidden" in f && (d = f.hidden) : f = bt.access(t, "fxshow", {}), o && (f.hidden = !d), d ? rt(t).show() : u.done(function() {
rt(t).hide()
}), u.done(function() {
var e;
bt.remove(t, "fxshow");
for(e in h) rt.style(t, e, h[e])
});
for(i in h) s = o(d ? f[i] : 0, i, u), i in f || (f[i] = s.start, d && (s.end = s.start, s.start = "width" === i || "height" === i ? 1 : 0))
}
}
function y(t, e) {
var n, i, r, o, s;
for(n in t)
if(i = rt.camelcase(n), r = e[i], o = t[n], rt.isarray(o) && (r = o[1], o = t[n] = o[0]), n !== i && (t[i] = o, delete t[n]), (s = rt.csshooks[i]) && "expand" in s) {
o = s.expand(o), delete t[i];
for(n in o) n in t || (t[n] = o[n], e[n] = r)
} else e[i] = r
}
function w(t, e, n) {
var i, r, o = 0,
s = w.prefilters.length,
a = rt.deferred().always(function() {
delete l.elem
}),
l = function() {
if(r) return !1;
for(var e = zt || l(), n = math.max(0, c.starttime + c.duration - e), i = n / c.duration || 0, o = 1 - i, s = 0, l = c.tweens.length; s < l; s++) c.tweens[s].run(o);
return a.notifywith(t, [c, o, n]), o < 1 && l ? n : (a.resolvewith(t, [c]), !1)
},
c = a.promise({
elem: t,
props: rt.extend({}, e),
opts: rt.extend(!0, {
specialeasing: {},
easing: rt.easing._default
}, n),
originalproperties: e,
originaloptions: n,
starttime: zt || l(),
duration: n.duration,
tweens: [],
createtween: function(e, n) {
var i = rt.tween(t, c.opts, e, n, c.opts.specialeasing[e] || c.opts.easing);
return c.tweens.push(i), i
},
stop: function(e) {
var n = 0,
i = e ? c.tweens.length : 0;
if(r) return this;
for(r = !0; n < i; n++) c.tweens[n].run(1);
return e ? (a.notifywith(t, [c, 1, 0]), a.resolvewith(t, [c, e])) : a.rejectwith(t, [c, e]), this
}
}),
u = c.props;
for(y(u, c.opts.specialeasing); o < s; o++)
if(i = w.prefilters[o].call(c, t, u, c.opts)) return rt.isfunction(i.stop) && (rt._queuehooks(c.elem, c.opts.queue).stop = rt.proxy(i.stop, i)), i;
return rt.map(u, o, c), rt.isfunction(c.opts.start) && c.opts.start.call(t, c), rt.fx.timer(rt.extend(l, {
elem: t,
anim: c,
queue: c.opts.queue
})), c.progress(c.opts.progress).done(c.opts.done, c.opts.complete).fail(c.opts.fail).always(c.opts.always)
}
function i(t) {
return t.getattribute && t.getattribute("class") || ""
}
function m(t) {
return function(e, n) {
"string" != typeof e && (n = e, e = "*");
var i, r = 0,
o = e.tolowercase().match(mt) || [];
if(rt.isfunction(n))
for(; i = o[r++];) "+" === i[0] ? (i = i.slice(1) || "*", (t[i] = t[i] || []).unshift(n)) : (t[i] = t[i] || []).push(n)
}
}
function b(t, e, n, i) {
function r(a) {
var l;
return o[a] = !0, rt.each(t[a] || [], function(t, a) {
var c = a(e, n, i);
return "string" != typeof c || s || o[c] ? s ? !(l = c) : void 0 : (e.datatypes.unshift(c), r(c), !1)
}), l
}
var o = {},
s = t === ge;
return r(e.datatypes[0]) || !o["*"] && r("*")
}
function r(t, e) {
var n, i, r = rt.ajaxsettings.flatoptions || {};
for(n in e) void 0 !== e[n] && ((r[n] ? t : i || (i = {}))[n] = e[n]);
return i && rt.extend(!0, t, i), t
}
function f(t, e, n) {
for(var i, r, o, s, a = t.contents, l = t.datatypes;
"*" === l[0];) l.shift(), void 0 === i && (i = t.mimetype || e.getresponseheader("content-type"));
if(i)
for(r in a)
if(a[r] && a[r].test(i)) {
l.unshift(r);
break
}
if(l[0] in n) o = l[0];
else {
for(r in n) {
if(!l[0] || t.converters[r + " " + l[0]]) {
o = r;
break
}
s || (s = r)
}
o = o || s
}
if(o) return o !== l[0] && l.unshift(o), n[o]
}
function z(t, e, n, i) {
var r, o, s, a, l, c = {},
u = t.datatypes.slice();
if(u[1])
for(s in t.converters) c[s.tolowercase()] = t.converters[s];
for(o = u.shift(); o;)
if(t.responsefields[o] && (n[t.responsefields[o]] = e), !l && i && t.datafilter && (e = t.datafilter(e, t.datatype)), l = o, o = u.shift())
if("*" === o) o = l;
else if("*" !== l && l !== o) {
if(!(s = c[l + " " + o] || c["* " + o]))
for(r in c)
if(a = r.split(" "), a[1] === o && (s = c[l + " " + a[0]] || c["* " + a[0]])) {
!0 === s ? s = c[r] : !0 !== c[r] && (o = a[0], u.unshift(a[1]));
break
}
if(!0 !== s)
if(s && t.throws) e = s(e);
else try {
e = s(e)
} catch(t) {
return {
state: "parsererror",
error: s ? t : "no conversion from " + l + " to " + o
}
}
}
return {
state: "success",
data: e
}
}
function $(t, e, n, i) {
var r;
if(rt.isarray(e)) rt.each(e, function(e, r) {
n || ye.test(t) ? i(t, r) : $(t + "[" + ("object" == typeof r && null != r ? e : "") + "]", r, n, i)
});
else if(n || "object" !== rt.type(e)) i(t, e);
else
for(r in e) $(t + "[" + r + "]", e[r], n, i)
}
function u(t) {
return rt.iswindow(t) ? t : 9 === t.nodetype && t.defaultview
}
var v = [],
k = t.document,
g = v.slice,
q = v.concat,
z = v.push,
j = v.indexof,
tt = {},
et = tt.tostring,
nt = tt.hasownproperty,
it = {},
rt = function(t, e) {
return new rt.fn.init(t, e)
},
ot = function(t, e) {
return e.touppercase()
};
rt.fn = rt.prototype = {
jquery: "2.2.4",
constructor: rt,
selector: "",
length: 0,
toarray: function() {
return g.call(this)
},
get: function(t) {
return null != t ? t < 0 ? this[t + this.length] : this[t] : g.call(this)
},
pushstack: function(t) {
var e = rt.merge(this.constructor(), t);
return e.prevobject = this, e.context = this.context, e
},
each: function(t) {
return rt.each(this, t)
},
map: function(t) {
return this.pushstack(rt.map(this, function(e, n) {
return t.call(e, n, e)
}))
},
slice: function() {
return this.pushstack(g.apply(this, arguments))
},
first: function() {
return this.eq(0)
},
last: function() {
return this.eq(-1)
},
eq: function(t) {
var e = this.length,
n = +t + (t < 0 ? e : 0);
return this.pushstack(n >= 0 && n < e ? [this[n]] : [])
},
end: function() {
return this.prevobject || this.constructor()
},
push: z,
sort: v.sort,
splice: v.splice
}, rt.extend = rt.fn.extend = function() {
var t, e, n, i, r, o, s = arguments[0] || {},
a = 1,
l = arguments.length,
c = !1;
for("boolean" == typeof s && (c = s, s = arguments[a] || {}, a++), "object" == typeof s || rt.isfunction(s) || (s = {}), a === l && (s = this, a--); a < l; a++)
if(null != (t = arguments[a]))
for(e in t) n = s[e], i = t[e], s !== i && (c && i && (rt.isplainobject(i) || (r = rt.isarray(i))) ? (r ? (r = !1, o = n && rt.isarray(n) ? n : []) : o = n && rt.isplainobject(n) ? n : {}, s[e] = rt.extend(c, o, i)) : void 0 !== i && (s[e] = i));
return s
}, rt.extend({
expando: "jquery" + ("2.2.4" + math.random()).replace(/\d/g, ""),
isready: !0,
error: function(t) {
throw new error(t)
},
noop: function() {},
isfunction: function(t) {
return "function" === rt.type(t)
},
isarray: array.isarray,
iswindow: function(t) {
return null != t && t === t.window
},
isnumeric: function(t) {
var e = t && t.tostring();
return !rt.isarray(t) && e - parsefloat(e) + 1 >= 0
},
isplainobject: function(t) {
var e;
if("object" !== rt.type(t) || t.nodetype || rt.iswindow(t)) return !1;
if(t.constructor && !nt.call(t, "constructor") && !nt.call(t.constructor.prototype || {}, "isprototypeof")) return !1;
for(e in t);
return void 0 === e || nt.call(t, e)
},
isemptyobject: function(t) {
var e;
for(e in t) return !1;
return !0
},
type: function(t) {
return null == t ? t + "" : "object" == typeof t || "function" == typeof t ? tt[et.call(t)] || "object" : typeof t
},
globaleval: function(t) {
var e, n = eval;
(t = rt.trim(t)) && (1 === t.indexof("use strict") ? (e = k.createelement("script"), e.text = t, k.head.appendchild(e).parentnode.removechild(e)) : n(t))
},
camelcase: function(t) {
return t.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, ot)
},
nodename: function(t, e) {
return t.nodename && t.nodename.tolowercase() === e.tolowercase()
},
each: function(t, e) {
var i, r = 0;
if(n(t))
for(i = t.length; r < i && !1 !== e.call(t[r], r, t[r]); r++);
else
for(r in t)
if(!1 === e.call(t[r], r, t[r])) break;
return t
},
trim: function(t) {
return null == t ? "" : (t + "").replace(/^[\s\ufeff\xa0]+|[\s\ufeff\xa0]+$/g, "")
},
makearray: function(t, e) {
var i = e || [];
return null != t && (n(object(t)) ? rt.merge(i, "string" == typeof t ? [t] : t) : z.call(i, t)), i
},
inarray: function(t, e, n) {
return null == e ? -1 : j.call(e, t, n)
},
merge: function(t, e) {
for(var n = +e.length, i = 0, r = t.length; i < n; i++) t[r++] = e[i];
return t.length = r, t
},
grep: function(t, e, n) {
for(var i = [], r = 0, o = t.length, s = !n; r < o; r++) !e(t[r], r) !== s && i.push(t[r]);
return i
},
map: function(t, e, i) {
var r, o, s = 0,
a = [];
if(n(t))
for(r = t.length; s < r; s++) null != (o = e(t[s], s, i)) && a.push(o);
else
for(s in t) null != (o = e(t[s], s, i)) && a.push(o);
return q.apply([], a)
},
guid: 1,
proxy: function(t, e) {
var n, i, r;
if("string" == typeof e && (n = t[e], e = t, t = n), rt.isfunction(t)) return i = g.call(arguments, 2), r = function() {
return t.apply(e || this, i.concat(g.call(arguments)))
}, r.guid = t.guid = t.guid || rt.guid++, r
},
now: date.now,
support: it
}), "function" == typeof symbol && (rt.fn[symbol.iterator] = v[symbol.iterator]), rt.each("boolean number string function array date regexp object error symbol".split(" "), function(t, e) {
tt["[object " + e + "]"] = e.tolowercase()
});
var st = function(t) {
function e(t, e, n, i) {
var r, o, s, a, c, h, p, d, f = e && e.ownerdocument,
g = e ? e.nodetype : 9;
if(n = n || [], "string" != typeof t || !t || 1 !== g && 9 !== g && 11 !== g) return n;
if(!i && ((e ? e.ownerdocument || e : y) !== n && p(e), e = e || n, h)) {
if(11 !== g && (h = gt.exec(t)))
if(r = h[1]) {
if(9 === g) {
if(!(s = e.getelementbyid(r))) return n;
if(s.id === r) return n.push(s), n
} else if(f && (s = f.getelementbyid(r)) && o(e, s) && s.id === r) return n.push(s), n
} else {
if(h[2]) return g.apply(n, e.getelementsbytagname(t)), n;
if((r = h[3]) && x.getelementsbyclassname && e.getelementsbyclassname) return g.apply(n, e.getelementsbyclassname(r)), n
}
if(x.qsa && !r[t + " "] && (!j || !j.test(t))) {
if(1 !== g) f = e, d = t;
else if("object" !== e.nodename.tolowercase()) {
for((a = e.getattribute("id")) ? a = a.replace(vt, "\\$&") : e.setattribute("id", a = q), p = s(t), o = p.length, c = ut.test(a) ? "#" + a : "[id='" + a + "']"; o--;) p[o] = c + " " + u(p[o]);
d = p.join(","), f = mt.test(t) && l(e.parentnode) || e
}
if(d) try {
return g.apply(n, f.queryselectorall(d)), n
} catch(t) {} finally {
a === q && e.removeattribute("id")
}
}
}
return k(t.replace(ot, "$1"), e, n, i)
}
function n() {
function t(n, i) {
return e.push(n + " ") > b.cachelength && delete t[e.shift()], t[n + " "] = i
}
var e = [];
return t
}
function i(t) {
return t[q] = !0, t
}
function r(t) {
var e = n.createelement("div");
try {
return !!t(e)
} catch(t) {
return !1
} finally {
e.parentnode && e.parentnode.removechild(e), e = null
}
}
function o(t, e) {
for(var n = t.split("|"), i = n.length; i--;) b.attrhandle[n[i]] = e
}
function s(t, e) {
var n = e && t,
i = n && 1 === t.nodetype && 1 === e.nodetype && (~e.sourceindex || z) - (~t.sourceindex || z);
if(i) return i;
if(n)
for(; n = n.nextsibling;)
if(n === e) return -1;
return t ? 1 : -1
}
function a(t) {
return i(function(e) {
return e = +e, i(function(n, i) {
for(var r, o = t([], n.length, e), s = o.length; s--;) n[r = o[s]] && (n[r] = !(i[r] = n[r]))
})
})
}
function l(t) {
return t && void 0 !== t.getelementsbytagname && t
}
function c() {}
function u(t) {
for(var e = 0, n = t.length, i = ""; e < n; e++) i += t[e].value;
return i
}
function h(t, e, n) {
var i = e.dir,
r = n && "parentnode" === i,
o = i++;
return e.first ? function(e, n, o) {
for(; e = e[i];)
if(1 === e.nodetype || r) return t(e, n, o)
} : function(e, n, s) {
var a, l, c, u = [w, o];
if(s) {
for(; e = e[i];)
if((1 === e.nodetype || r) && t(e, n, s)) return !0
} else
for(; e = e[i];)
if(1 === e.nodetype || r) {
if(c = e[q] || (e[q] = {}), l = c[e.uniqueid] || (c[e.uniqueid] = {}), (a = l[i]) && a[0] === w && a[1] === o) return u[2] = a[2];
if(l[i] = u, u[2] = t(e, n, s)) return !0
}
}
}
function p(t) {
return t.length > 1 ? function(e, n, i) {
for(var r = t.length; r--;)
if(!t[r](e, n, i)) return !1;
return !0
} : t[0]
}
function d(t, n, i) {
for(var r = 0, o = n.length; r < o; r++) e(t, n[r], i);
return i
}
function f(t, e, n, i, r) {
for(var o, s = [], a = 0, l = t.length, c = null != e; a < l; a++)(o = t[a]) && (n && !n(o, i, r) || (s.push(o), c && e.push(a)));
return s
}
function g(t, e, n, r, o, s) {
return r && !r[q] && (r = g(r)), o && !o[q] && (o = g(o, s)), i(function(i, s, a, l) {
var c, u, h, p = [],
g = [],
m = s.length,
v = i || d(e || "*", a.nodetype ? [a] : a, []),
y = !t || !i && e ? v : f(v, p, t, a, l),
x = n ? o || (i ? t : m || r) ? [] : s : y;
if(n && n(y, x, a, l), r)
for(c = f(x, g), r(c, [], a, l), u = c.length; u--;)(h = c[u]) && (x[g[u]] = !(y[g[u]] = h));
if(i) {
if(o || t) {
if(o) {
for(c = [], u = x.length; u--;)(h = x[u]) && c.push(y[u] = h);
o(null, x = [], c, l)
}
for(u = x.length; u--;)(h = x[u]) && (c = o ? z(i, h) : p[u]) > -1 && (i[c] = !(s[c] = h))
}
} else x = f(x === s ? x.splice(m, x.length) : x), o ? o(null, s, x, l) : g.apply(s, x)
})
}
function m(t) {
for(var e, n, i, r = t.length, o = b.relative[t[0].type], s = o || b.relative[" "], a = o ? 1 : 0, l = h(function(t) {
return t === e
}, s, !0), c = h(function(t) {
return z(e, t) > -1
}, s, !0), d = [function(t, n, i) {
var r = !o && (i || n !== c) || ((e = n).nodetype ? l(t, n, i) : c(t, n, i));
return e = null, r
}]; a < r; a++)
if(n = b.relative[t[a].type]) d = [h(p(d), n)];
else {
if(n = b.filter[t[a].type].apply(null, t[a].matches), n[q]) {
for(i = ++a; i < r && !b.relative[t[i].type]; i++);
return g(a > 1 && p(d), a > 1 && u(t.slice(0, a - 1).concat({
value: " " === t[a - 2].type ? "*" : ""
})).replace(ot, "$1"), n, a < i && m(t.slice(a, i)), i < r && m(t = t.slice(i)), i < r && u(t))
}
d.push(n)
}
return p(d)
}
function v(t, n) {
var r = n.length > 0,
o = t.length > 0,
s = function(i, s, a, l, c) {
var u, h, p, d = 0,
g = "0",
m = i && [],
v = [],
y = c,
x = i || o && b.find.tag("*", c),
w = w += null == y ? 1 : math.random() || .1,
t = x.length;
for(c && (c = s === n || s || c); g !== t && null != (u = x[g]); g++) {
if(o && u) {
for(h = 0, s || u.ownerdocument === n || (p(u), a = !h); p = t[h++];)
if(p(u, s || n, a)) {
l.push(u);
break
}
c && (w = w)
}
r && ((u = !p && u) && d--, i && m.push(u))
}
if(d += g, r && g !== d) {
for(h = 0; p = n[h++];) p(m, v, s, a);
if(i) {
if(d > 0)
for(; g--;) m[g] || v[g] || (v[g] = v.call(l));
v = f(v)
}
g.apply(l, v), c && !i && v.length > 0 && d + n.length > 1 && e.uniquesort(l)
}
return c && (w = w, c = y), m
};
return r ? i(s) : s
}
var y, x, b, w, t, s, e, k, c, d, a, p, n, _, h, j, l, x, o, q = "sizzle" + 1 * new date,
y = t.document,
w = 0,
i = 0,
m = n(),
b = n(),
r = n(),
f = function(t, e) {
return t === e && (a = !0), 0
},
z = 1 << 31,
$ = {}.hasownproperty,
u = [],
v = u.pop,
k = u.push,
g = u.push,
q = u.slice,
z = function(t, e) {
for(var n = 0, i = t.length; n < i; n++)
if(t[n] === e) return n;
return -1
},
j = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
tt = "[\\x20\\t\\r\\n\\f]",
et = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
nt = "\\[" + tt + "*(" + et + ")(?:" + tt + "*([*^$|!~]?=)" + tt + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + et + "))|)" + tt + "*\\]",
it = ":(" + et + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + nt + ")*)|.*)\\)|)",
rt = new regexp(tt + "+", "g"),
ot = new regexp("^" + tt + "+|((?:^|[^\\\\])(?:\\\\.)*)" + tt + "+$", "g"),
st = new regexp("^" + tt + "*," + tt + "*"),
at = new regexp("^" + tt + "*([>+~]|" + tt + ")" + tt + "*"),
lt = new regexp("=" + tt + "*([^\\]'\"]*?)" + tt + "*\\]", "g"),
ct = new regexp(it),
ut = new regexp("^" + et + "$"),
ht = {
id: new regexp("^#(" + et + ")"),
class: new regexp("^\\.(" + et + ")"),
tag: new regexp("^(" + et + "|[*])"),
attr: new regexp("^" + nt),
pseudo: new regexp("^" + it),
child: new regexp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + tt + "*(even|odd|(([+-]|)(\\d*)n|)" + tt + "*(?:([+-]|)" + tt + "*(\\d+)|))" + tt + "*\\)|)", "i"),
bool: new regexp("^(?:" + j + ")$", "i"),
needscontext: new regexp("^" + tt + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + tt + "*((?:-\\d)?\\d*)" + tt + "*\\)|)(?=[^-]|$)", "i")
},
pt = /^(?:input|select|textarea|button)$/i,
dt = /^h\d$/i,
ft = /^[^{]+\{\s*\[native \w/,
gt = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
mt = /[+~]/,
vt = /'|\\/g,
yt = new regexp("\\\\([\\da-f]{1,6}" + tt + "?|(" + tt + ")|.)", "ig"),
xt = function(t, e, n) {
var i = "0x" + e - 65536;
return i !== i || n ? e : i < 0 ? string.fromcharcode(i + 65536) : string.fromcharcode(i >> 10 | 55296, 1023 & i | 56320)
},
bt = function() {
p()
};
try {
g.apply(u = q.call(y.childnodes), y.childnodes), u[y.childnodes.length].nodetype
} catch(t) {
g = {
apply: u.length ? function(t, e) {
k.apply(t, q.call(e))
} : function(t, e) {
for(var n = t.length, i = 0; t[n++] = e[i++];);
t.length = n - 1
}
}
}
x = e.support = {}, t = e.isxml = function(t) {
var e = t && (t.ownerdocument || t).documentelement;
return !!e && "html" !== e.nodename
}, p = e.setdocument = function(t) {
var e, n, i = t ? t.ownerdocument || t : y;
return i !== n && 9 === i.nodetype && i.documentelement ? (n = i, _ = n.documentelement, h = !t(n), (n = n.defaultview) && n.top !== n && (n.addeventlistener ? n.addeventlistener("unload", bt, !1) : n.attachevent && n.attachevent("onunload", bt)), x.attributes = r(function(t) {
return t.classname = "i", !t.getattribute("classname")
}), x.getelementsbytagname = r(function(t) {
return t.appendchild(n.createcomment("")), !t.getelementsbytagname("*").length
}), x.getelementsbyclassname = ft.test(n.getelementsbyclassname), x.getbyid = r(function(t) {
return _.appendchild(t).id = q, !n.getelementsbyname || !n.getelementsbyname(q).length
}), x.getbyid ? (b.find.id = function(t, e) {
if(void 0 !== e.getelementbyid && h) {
var n = e.getelementbyid(t);
return n ? [n] : []
}
}, b.filter.id = function(t) {
var e = t.replace(yt, xt);
return function(t) {
return t.getattribute("id") === e
}
}) : (delete b.find.id, b.filter.id = function(t) {
var e = t.replace(yt, xt);
return function(t) {
var n = void 0 !== t.getattributenode && t.getattributenode("id");
return n && n.value === e
}
}), b.find.tag = x.getelementsbytagname ? function(t, e) {
return void 0 !== e.getelementsbytagname ? e.getelementsbytagname(t) : x.qsa ? e.queryselectorall(t) : void 0
} : function(t, e) {
var n, i = [],
r = 0,
o = e.getelementsbytagname(t);
if("*" === t) {
for(; n = o[r++];) 1 === n.nodetype && i.push(n);
return i
}
return o
}, b.find.class = x.getelementsbyclassname && function(t, e) {
if(void 0 !== e.getelementsbyclassname && h) return e.getelementsbyclassname(t)
}, l = [], j = [], (x.qsa = ft.test(n.queryselectorall)) && (r(function(t) {
_.appendchild(t).innerhtml = "
", t.queryselectorall("[msallowcapture^='']").length && j.push("[*^$]=" + tt + "*(?:''|\"\")"), t.queryselectorall("[selected]").length || j.push("\\[" + tt + "*(?:value|" + j + ")"), t.queryselectorall("[id~=" + q + "-]").length || j.push("~="), t.queryselectorall(":checked").length || j.push(":checked"), t.queryselectorall("a#" + q + "+*").length || j.push(".#.+[+~]")
}), r(function(t) {
var e = n.createelement("input");
e.setattribute("type", "hidden"), t.appendchild(e).setattribute("name", "d"), t.queryselectorall("[name=d]").length && j.push("name" + tt + "*[*^$|!~]?="), t.queryselectorall(":enabled").length || j.push(":enabled", ":disabled"), t.queryselectorall("*,:x"), j.push(",.*:")
})), (x.matchesselector = ft.test(x = _.matches || _.webkitmatchesselector || _.mozmatchesselector || _.omatchesselector || _.msmatchesselector)) && r(function(t) {
x.disconnectedmatch = x.call(t, "div"), x.call(t, "[s!='']:x"), l.push("!=", it)
}), j = j.length && new regexp(j.join("|")), l = l.length && new regexp(l.join("|")), e = ft.test(_.comparedocumentposition), o = e || ft.test(_.contains) ? function(t, e) {
var n = 9 === t.nodetype ? t.documentelement : t,
i = e && e.parentnode;
return t === i || !(!i || 1 !== i.nodetype || !(n.contains ? n.contains(i) : t.comparedocumentposition && 16 & t.comparedocumentposition(i)))
} : function(t, e) {
if(e)
for(; e = e.parentnode;)
if(e === t) return !0;
return !1
}, f = e ? function(t, e) {
if(t === e) return a = !0, 0;
var n = !t.comparedocumentposition - !e.comparedocumentposition;
return n || (n = (t.ownerdocument || t) === (e.ownerdocument || e) ? t.comparedocumentposition(e) : 1, 1 & n || !x.sortdetached && e.comparedocumentposition(t) === n ? t === n || t.ownerdocument === y && o(y, t) ? -1 : e === n || e.ownerdocument === y && o(y, e) ? 1 : d ? z(d, t) - z(d, e) : 0 : 4 & n ? -1 : 1)
} : function(t, e) {
if(t === e) return a = !0, 0;
var n, i = 0,
r = t.parentnode,
o = e.parentnode,
a = [t],
l = [e];
if(!r || !o) return t === n ? -1 : e === n ? 1 : r ? -1 : o ? 1 : d ? z(d, t) - z(d, e) : 0;
if(r === o) return s(t, e);
for(n = t; n = n.parentnode;) a.unshift(n);
for(n = e; n = n.parentnode;) l.unshift(n);
for(; a[i] === l[i];) i++;
return i ? s(a[i], l[i]) : a[i] === y ? -1 : l[i] === y ? 1 : 0
}, n) : n
}, e.matches = function(t, n) {
return e(t, null, null, n)
}, e.matchesselector = function(t, n) {
if((t.ownerdocument || t) !== n && p(t), n = n.replace(lt, "='$1']"), x.matchesselector && h && !r[n + " "] && (!l || !l.test(n)) && (!j || !j.test(n))) try {
var i = x.call(t, n);
if(i || x.disconnectedmatch || t.document && 11 !== t.document.nodetype) return i
} catch(t) {}
return e(n, n, null, [t]).length > 0
}, e.contains = function(t, e) {
return(t.ownerdocument || t) !== n && p(t), o(t, e)
}, e.attr = function(t, e) {
(t.ownerdocument || t) !== n && p(t);
var n = b.attrhandle[e.tolowercase()],
i = n && $.call(b.attrhandle, e.tolowercase()) ? n(t, e, !h) : void 0;
return void 0 !== i ? i : x.attributes || !h ? t.getattribute(e) : (i = t.getattributenode(e)) && i.specified ? i.value : null
}, e.error = function(t) {
throw new error("syntax error, unrecognized expression: " + t)
}, e.uniquesort = function(t) {
var e, n = [],
i = 0,
r = 0;
if(a = !x.detectduplicates, d = !x.sortstable && t.slice(0), t.sort(f), a) {
for(; e = t[r++];) e === t[r] && (i = n.push(r));
for(; i--;) t.splice(n[i], 1)
}
return d = null, t
}, w = e.gettext = function(t) {
var e, n = "",
i = 0,
r = t.nodetype;
if(r) {
if(1 === r || 9 === r || 11 === r) {
if("string" == typeof t.textcontent) return t.textcontent;
for(t = t.firstchild; t; t = t.nextsibling) n += w(t)
} else if(3 === r || 4 === r) return t.nodevalue
} else
for(; e = t[i++];) n += w(e);
return n
}, b = e.selectors = {
cachelength: 50,
createpseudo: i,
match: ht,
attrhandle: {},
find: {},
relative: {
">": {
dir: "parentnode",
first: !0
},
" ": {
dir: "parentnode"
},
"+": {
dir: "previoussibling",
first: !0
},
"~": {
dir: "previoussibling"
}
},
prefilter: {
attr: function(t) {
return t[1] = t[1].replace(yt, xt), t[3] = (t[3] || t[4] || t[5] || "").replace(yt, xt), "~=" === t[2] && (t[3] = " " + t[3] + " "), t.slice(0, 4)
},
child: function(t) {
return t[1] = t[1].tolowercase(), "nth" === t[1].slice(0, 3) ? (t[3] || e.error(t[0]), t[4] = +(t[4] ? t[5] + (t[6] || 1) : 2 * ("even" === t[3] || "odd" === t[3])), t[5] = +(t[7] + t[8] || "odd" === t[3])) : t[3] && e.error(t[0]), t
},
pseudo: function(t) {
var e, n = !t[6] && t[2];
return ht.child.test(t[0]) ? null : (t[3] ? t[2] = t[4] || t[5] || "" : n && ct.test(n) && (e = s(n, !0)) && (e = n.indexof(")", n.length - e) - n.length) && (t[0] = t[0].slice(0, e), t[2] = n.slice(0, e)), t.slice(0, 3))
}
},
filter: {
tag: function(t) {
var e = t.replace(yt, xt).tolowercase();
return "*" === t ? function() {
return !0
} : function(t) {
return t.nodename && t.nodename.tolowercase() === e
}
},
class: function(t) {
var e = m[t + " "];
return e || (e = new regexp("(^|" + tt + ")" + t + "(" + tt + "|$)")) && m(t, function(t) {
return e.test("string" == typeof t.classname && t.classname || void 0 !== t.getattribute && t.getattribute("class") || "")
})
},
attr: function(t, n, i) {
return function(r) {
var o = e.attr(r, t);
return null == o ? "!=" === n : !n || (o += "", "=" === n ? o === i : "!=" === n ? o !== i : "^=" === n ? i && 0 === o.indexof(i) : "*=" === n ? i && o.indexof(i) > -1 : "$=" === n ? i && o.slice(-i.length) === i : "~=" === n ? (" " + o.replace(rt, " ") + " ").indexof(i) > -1 : "|=" === n && (o === i || o.slice(0, i.length + 1) === i + "-"))
}
},
child: function(t, e, n, i, r) {
var o = "nth" !== t.slice(0, 3),
s = "last" !== t.slice(-4),
a = "of-type" === e;
return 1 === i && 0 === r ? function(t) {
return !!t.parentnode
} : function(e, n, l) {
var c, u, h, p, d, f, g = o !== s ? "nextsibling" : "previoussibling",
m = e.parentnode,
v = a && e.nodename.tolowercase(),
y = !l && !a,
x = !1;
if(m) {
if(o) {
for(; g;) {
for(p = e; p = p[g];)
if(a ? p.nodename.tolowercase() === v : 1 === p.nodetype) return !1;
f = g = "only" === t && !f && "nextsibling"
}
return !0
}
if(f = [s ? m.firstchild : m.lastchild], s && y) {
for(p = m, h = p[q] || (p[q] = {}), u = h[p.uniqueid] || (h[p.uniqueid] = {}), c = u[t] || [], d = c[0] === w && c[1], x = d && c[2], p = d && m.childnodes[d]; p = ++d && p && p[g] || (x = d = 0) || f.pop();)
if(1 === p.nodetype && ++x && p === e) {
u[t] = [w, d, x];
break
}
} else if(y && (p = e, h = p[q] || (p[q] = {}), u = h[p.uniqueid] || (h[p.uniqueid] = {}), c = u[t] || [], d = c[0] === w && c[1], x = d), !1 === x)
for(;
(p = ++d && p && p[g] || (x = d = 0) || f.pop()) && ((a ? p.nodename.tolowercase() !== v : 1 !== p.nodetype) || !++x || (y && (h = p[q] || (p[q] = {}), u = h[p.uniqueid] || (h[p.uniqueid] = {}), u[t] = [w, x]), p !== e)););
return(x -= r) === i || x % i == 0 && x / i >= 0
}
}
},
pseudo: function(t, n) {
var r, o = b.pseudos[t] || b.setfilters[t.tolowercase()] || e.error("unsupported pseudo: " + t);
return o[q] ? o(n) : o.length > 1 ? (r = [t, t, "", n], b.setfilters.hasownproperty(t.tolowercase()) ? i(function(t, e) {
for(var i, r = o(t, n), s = r.length; s--;) i = z(t, r[s]), t[i] = !(e[i] = r[s])
}) : function(t) {
return o(t, 0, r)
}) : o
}
},
pseudos: {
not: i(function(t) {
var e = [],
n = [],
r = e(t.replace(ot, "$1"));
return r[q] ? i(function(t, e, n, i) {
for(var o, s = r(t, null, i, []), a = t.length; a--;)(o = s[a]) && (t[a] = !(e[a] = o))
}) : function(t, i, o) {
return e[0] = t, r(e, null, o, n), e[0] = null, !n.pop()
}
}),
has: i(function(t) {
return function(n) {
return e(t, n).length > 0
}
}),
contains: i(function(t) {
return t = t.replace(yt, xt),
function(e) {
return(e.textcontent || e.innertext || w(e)).indexof(t) > -1
}
}),
lang: i(function(t) {
return ut.test(t || "") || e.error("unsupported lang: " + t), t = t.replace(yt, xt).tolowercase(),
function(e) {
var n;
do {
if(n = h ? e.lang : e.getattribute("xml:lang") || e.getattribute("lang")) return(n = n.tolowercase()) === t || 0 === n.indexof(t + "-")
} while ((e = e.parentnode) && 1 === e.nodetype);
return !1
}
}),
target: function(e) {
var n = t.location && t.location.hash;
return n && n.slice(1) === e.id
},
root: function(t) {
return t === _
},
focus: function(t) {
return t === n.activeelement && (!n.hasfocus || n.hasfocus()) && !!(t.type || t.href || ~t.tabindex)
},
enabled: function(t) {
return !1 === t.disabled
},
disabled: function(t) {
return !0 === t.disabled
},
checked: function(t) {
var e = t.nodename.tolowercase();
return "input" === e && !!t.checked || "option" === e && !!t.selected
},
selected: function(t) {
return t.parentnode && t.parentnode.selectedindex, !0 === t.selected
},
empty: function(t) {
for(t = t.firstchild; t; t = t.nextsibling)
if(t.nodetype < 6) return !1;
return !0
},
parent: function(t) {
return !b.pseudos.empty(t)
},
header: function(t) {
return dt.test(t.nodename)
},
input: function(t) {
return pt.test(t.nodename)
},
button: function(t) {
var e = t.nodename.tolowercase();
return "input" === e && "button" === t.type || "button" === e
},
text: function(t) {
var e;
return "input" === t.nodename.tolowercase() && "text" === t.type && (null == (e = t.getattribute("type")) || "text" === e.tolowercase())
},
first: a(function() {
return [0]
}),
last: a(function(t, e) {
return [e - 1]
}),
eq: a(function(t, e, n) {
return [n < 0 ? n + e : n]
}),
even: a(function(t, e) {
for(var n = 0; n < e; n += 2) t.push(n);
return t
}),
odd: a(function(t, e) {
for(var n = 1; n < e; n += 2) t.push(n);
return t
}),
lt: a(function(t, e, n) {
for(var i = n < 0 ? n + e : n; --i >= 0;) t.push(i);
return t
}),
gt: a(function(t, e, n) {
for(var i = n < 0 ? n + e : n; ++i < e;) t.push(i);
return t
})
}
}, b.pseudos.nth = b.pseudos.eq;
for(y in {
radio: !0,
checkbox: !0,
file: !0,
password: !0,
image: !0
}) b.pseudos[y] = function(t) {
return function(e) {
return "input" === e.nodename.tolowercase() && e.type === t
}
}(y);
for(y in {
submit: !0,
reset: !0
}) b.pseudos[y] = function(t) {
return function(e) {
var n = e.nodename.tolowercase();
return("input" === n || "button" === n) && e.type === t
}
}(y);
return c.prototype = b.filters = b.pseudos, b.setfilters = new c, s = e.tokenize = function(t, n) {
var i, r, o, s, a, l, c, u = b[t + " "];
if(u) return n ? 0 : u.slice(0);
for(a = t, l = [], c = b.prefilter; a;) {
i && !(r = st.exec(a)) || (r && (a = a.slice(r[0].length) || a), l.push(o = [])), i = !1, (r = at.exec(a)) && (i = r.shift(), o.push({
value: i,
type: r[0].replace(ot, " ")
}), a = a.slice(i.length));
for(s in b.filter) !(r = ht[s].exec(a)) || c[s] && !(r = c[s](r)) || (i = r.shift(), o.push({
value: i,
type: s,
matches: r
}), a = a.slice(i.length));
if(!i) break
}
return n ? a.length : a ? e.error(t) : b(t, l).slice(0)
}, e = e.compile = function(t, e) {
var n, i = [],
r = [],
o = r[t + " "];
if(!o) {
for(e || (e = s(t)), n = e.length; n--;) o = m(e[n]), o[q] ? i.push(o) : r.push(o);
o = r(t, v(r, i)), o.selector = t
}
return o
}, k = e.select = function(t, e, n, i) {
var r, o, s, a, c, h = "function" == typeof t && t,
p = !i && s(t = h.selector || t);
if(n = n || [], 1 === p.length) {
if(o = p[0] = p[0].slice(0), o.length > 2 && "id" === (s = o[0]).type && x.getbyid && 9 === e.nodetype && h && b.relative[o[1].type]) {
if(!(e = (b.find.id(s.matches[0].replace(yt, xt), e) || [])[0])) return n;
h && (e = e.parentnode), t = t.slice(o.shift().value.length)
}
for(r = ht.needscontext.test(t) ? 0 : o.length; r-- && (s = o[r], !b.relative[a = s.type]);)
if((c = b.find[a]) && (i = c(s.matches[0].replace(yt, xt), mt.test(o[0].type) && l(e.parentnode) || e))) {
if(o.splice(r, 1), !(t = i.length && u(o))) return g.apply(n, i), n;
break
}
}
return(h || e(t, p))(i, e, !h, n, !e || mt.test(t) && l(e.parentnode) || e), n
}, x.sortstable = q.split("").sort(f).join("") === q, x.detectduplicates = !!a, p(), x.sortdetached = r(function(t) {
return 1 & t.comparedocumentposition(n.createelement("div"))
}), r(function(t) {
return t.innerhtml = "
", "#" === t.firstchild.getattribute("href")
}) || o("type|href|height|width", function(t, e, n) {
if(!n) return t.getattribute(e, "type" === e.tolowercase() ? 1 : 2)
}), x.attributes && r(function(t) {
return t.innerhtml = "
", t.firstchild.setattribute("value", ""), "" === t.firstchild.getattribute("value")
}) || o("value", function(t, e, n) {
if(!n && "input" === t.nodename.tolowercase()) return t.defaultvalue
}), r(function(t) {
return null == t.getattribute("disabled")
}) || o(j, function(t, e, n) {
var i;
if(!n) return !0 === t[e] ? e.tolowercase() : (i = t.getattributenode(e)) && i.specified ? i.value : null
}), e
}(t);
rt.find = st, rt.expr = st.selectors, rt.expr[":"] = rt.expr.pseudos, rt.uniquesort = rt.unique = st.uniquesort, rt.text = st.gettext, rt.isxmldoc = st.isxml, rt.contains = st.contains;
var at = function(t, e, n) {
for(var i = [], r = void 0 !== n;
(t = t[e]) && 9 !== t.nodetype;)
if(1 === t.nodetype) {
if(r && rt(t).is(n)) break;
i.push(t)
}
return i
},
lt = function(t, e) {
for(var n = []; t; t = t.nextsibling) 1 === t.nodetype && t !== e && n.push(t);
return n
},
ct = rt.expr.match.needscontext,
ut = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
ht = /^.[^:#\[\.,]*$/;
rt.filter = function(t, e, n) {
var i = e[0];
return n && (t = ":not(" + t + ")"), 1 === e.length && 1 === i.nodetype ? rt.find.matchesselector(i, t) ? [i] : [] : rt.find.matches(t, rt.grep(e, function(t) {
return 1 === t.nodetype
}))
}, rt.fn.extend({
find: function(t) {
var e, n = this.length,
i = [],
r = this;
if("string" != typeof t) return this.pushstack(rt(t).filter(function() {
for(e = 0; e < n; e++)
if(rt.contains(r[e], this)) return !0
}));
for(e = 0; e < n; e++) rt.find(t, r[e], i);
return i = this.pushstack(n > 1 ? rt.unique(i) : i), i.selector = this.selector ? this.selector + " " + t : t, i
},
filter: function(t) {
return this.pushstack(i(this, t || [], !1))
},
not: function(t) {
return this.pushstack(i(this, t || [], !0))
},
is: function(t) {
return !!i(this, "string" == typeof t && ct.test(t) ? rt(t) : t || [], !1).length
}
});
var pt, dt = /^(?:\s*(<[\w\w]+>)[^>]*|#([\w-]*))$/;
(rt.fn.init = function(t, e, n) {
var i, r;
if(!t) return this;
if(n = n || pt, "string" == typeof t) {
if(!(i = "<" === t[0] && ">" === t[t.length - 1] && t.length >= 3 ? [null, t, null] : dt.exec(t)) || !i[1] && e) return !e || e.jquery ? (e || n).find(t) : this.constructor(e).find(t);
if(i[1]) {
if(e = e instanceof rt ? e[0] : e, rt.merge(this, rt.parsehtml(i[1], e && e.nodetype ? e.ownerdocument || e : k, !0)), ut.test(i[1]) && rt.isplainobject(e))
for(i in e) rt.isfunction(this[i]) ? this[i](e[i]) : this.attr(i, e[i]);
return this
}
return r = k.getelementbyid(i[2]), r && r.parentnode && (this.length = 1, this[0] = r), this.context = k, this.selector = t, this
}
return t.nodetype ? (this.context = this[0] = t, this.length = 1, this) : rt.isfunction(t) ? void 0 !== n.ready ? n.ready(t) : t(rt) : (void 0 !== t.selector && (this.selector = t.selector, this.context = t.context), rt.makearray(t, this))
}).prototype = rt.fn, pt = rt(k);
var ft = /^(?:parents|prev(?:until|all))/,
gt = {
children: !0,
contents: !0,
next: !0,
prev: !0
};
rt.fn.extend({
has: function(t) {
var e = rt(t, this),
n = e.length;
return this.filter(function() {
for(var t = 0; t < n; t++)
if(rt.contains(this, e[t])) return !0
})
},
closest: function(t, e) {
for(var n, i = 0, r = this.length, o = [], s = ct.test(t) || "string" != typeof t ? rt(t, e || this.context) : 0; i < r; i++)
for(n = this[i]; n && n !== e; n = n.parentnode)
if(n.nodetype < 11 && (s ? s.index(n) > -1 : 1 === n.nodetype && rt.find.matchesselector(n, t))) {
o.push(n);
break
}
return this.pushstack(o.length > 1 ? rt.uniquesort(o) : o)
},
index: function(t) {
return t ? "string" == typeof t ? j.call(rt(t), this[0]) : j.call(this, t.jquery ? t[0] : t) : this[0] && this[0].parentnode ? this.first().prevall().length : -1
},
add: function(t, e) {
return this.pushstack(rt.uniquesort(rt.merge(this.get(), rt(t, e))))
},
addback: function(t) {
return this.add(null == t ? this.prevobject : this.prevobject.filter(t))
}
}), rt.each({
parent: function(t) {
var e = t.parentnode;
return e && 11 !== e.nodetype ? e : null
},
parents: function(t) {
return at(t, "parentnode")
},
parentsuntil: function(t, e, n) {
return at(t, "parentnode", n)
},
next: function(t) {
return r(t, "nextsibling")
},
prev: function(t) {
return r(t, "previoussibling")
},
nextall: function(t) {
return at(t, "nextsibling")
},
prevall: function(t) {
return at(t, "previoussibling")
},
nextuntil: function(t, e, n) {
return at(t, "nextsibling", n)
},
prevuntil: function(t, e, n) {
return at(t, "previoussibling", n)
},
siblings: function(t) {
return lt((t.parentnode || {}).firstchild, t)
},
children: function(t) {
return lt(t.firstchild)
},
contents: function(t) {
return t.contentdocument || rt.merge([], t.childnodes)
}
}, function(t, e) {
rt.fn[t] = function(n, i) {
var r = rt.map(this, e, n);
return "until" !== t.slice(-5) && (i = n), i && "string" == typeof i && (r = rt.filter(i, r)), this.length > 1 && (gt[t] || rt.uniquesort(r), ft.test(t) && r.reverse()), this.pushstack(r)
}
});
var mt = /\s+/g;
rt.callbacks = function(t) {
t = "string" == typeof t ? o(t) : rt.extend({}, t);
var e, n, i, r, s = [],
a = [],
l = -1,
c = function() {
for(r = t.once, i = e = !0; a.length; l = -1)
for(n = a.shift(); ++l < s.length;) !1 === s[l].apply(n[0], n[1]) && t.stoponfalse && (l = s.length, n = !1);
t.memory || (n = !1), e = !1, r && (s = n ? [] : "")
},
u = {
add: function() {
return s && (n && !e && (l = s.length - 1, a.push(n)), function e(n) {
rt.each(n, function(n, i) {
rt.isfunction(i) ? t.unique && u.has(i) || s.push(i) : i && i.length && "string" !== rt.type(i) && e(i)
})
}(arguments), n && !e && c()), this
},
remove: function() {
return rt.each(arguments, function(t, e) {
for(var n;
(n = rt.inarray(e, s, n)) > -1;) s.splice(n, 1), n <= l && l--
}), this
},
has: function(t) {
return t ? rt.inarray(t, s) > -1 : s.length > 0
},
empty: function() {
return s && (s = []), this
},
disable: function() {
return r = a = [], s = n = "", this
},
disabled: function() {
return !s
},
lock: function() {
return r = a = [], n || (s = n = ""), this
},
locked: function() {
return !!r
},
firewith: function(t, n) {
return r || (n = n || [], n = [t, n.slice ? n.slice() : n], a.push(n), e || c()), this
},
fire: function() {
return u.firewith(this, arguments), this
},
fired: function() {
return !!i
}
};
return u
}, rt.extend({
deferred: function(t) {
var e = [
["resolve", "done", rt.callbacks("once memory"), "resolved"],
["reject", "fail", rt.callbacks("once memory"), "rejected"],
["notify", "progress", rt.callbacks("memory")]
],
n = "pending",
i = {
state: function() {
return n
},
always: function() {
return r.done(arguments).fail(arguments), this
},
then: function() {
var t = arguments;
return rt.deferred(function(n) {
rt.each(e, function(e, o) {
var s = rt.isfunction(t[e]) && t[e];
r[o[1]](function() {
var t = s && s.apply(this, arguments);
t && rt.isfunction(t.promise) ? t.promise().progress(n.notify).done(n.resolve).fail(n.reject) : n[o[0] + "with"](this === i ? n.promise() : this, s ? [t] : arguments)
})
}), t = null
}).promise()
},
promise: function(t) {
return null != t ? rt.extend(t, i) : i
}
},
r = {};
return i.pipe = i.then, rt.each(e, function(t, o) {
var s = o[2],
a = o[3];
i[o[1]] = s.add, a && s.add(function() {
n = a
}, e[1 ^ t][2].disable, e[2][2].lock), r[o[0]] = function() {
return r[o[0] + "with"](this === r ? i : this, arguments), this
}, r[o[0] + "with"] = s.firewith
}), i.promise(r), t && t.call(r, r), r
},
when: function(t) {
var e, n, i, r = 0,
o = g.call(arguments),
s = o.length,
a = 1 !== s || t && rt.isfunction(t.promise) ? s : 0,
l = 1 === a ? t : rt.deferred(),
c = function(t, n, i) {
return function(r) {
n[t] = this, i[t] = arguments.length > 1 ? g.call(arguments) : r, i === e ? l.notifywith(n, i) : --a || l.resolvewith(n, i)
}
};
if(s > 1)
for(e = new array(s), n = new array(s), i = new array(s); r < s; r++) o[r] && rt.isfunction(o[r].promise) ? o[r].promise().progress(c(r, n, e)).done(c(r, i, o)).fail(l.reject) : --a;
return a || l.resolvewith(i, o), l.promise()
}
});
var vt;
rt.fn.ready = function(t) {
return rt.ready.promise().done(t), this
}, rt.extend({
isready: !1,
readywait: 1,
holdready: function(t) {
t ? rt.readywait++ : rt.ready(!0)
},
ready: function(t) {
(!0 === t ? --rt.readywait : rt.isready) || (rt.isready = !0, !0 !== t && --rt.readywait > 0 || (vt.resolvewith(k, [rt]), rt.fn.triggerhandler && (rt(k).triggerhandler("ready"), rt(k).off("ready"))))
}
}), rt.ready.promise = function(e) {
return vt || (vt = rt.deferred(), "complete" === k.readystate || "loading" !== k.readystate && !k.documentelement.doscroll ? t.settimeout(rt.ready) : (k.addeventlistener("domcontentloaded", s), t.addeventlistener("load", s))), vt.promise(e)
}, rt.ready.promise();
var yt = function(t, e, n, i, r, o, s) {
var a = 0,
l = t.length,
c = null == n;
if("object" === rt.type(n)) {
r = !0;
for(a in n) yt(t, e, a, n[a], !0, o, s)
} else if(void 0 !== i && (r = !0, rt.isfunction(i) || (s = !0), c && (s ? (e.call(t, i), e = null) : (c = e, e = function(t, e, n) {
return c.call(rt(t), n)
})), e))
for(; a < l; a++) e(t[a], n, s ? i : i.call(t[a], a, e(t[a], n)));
return r ? t : c ? e.call(t) : l ? e(t[0], n) : o
},
xt = function(t) {
return 1 === t.nodetype || 9 === t.nodetype || !+t.nodetype
};
a.uid = 1, a.prototype = {
register: function(t, e) {
var n = e || {};
return t.nodetype ? t[this.expando] = n : object.defineproperty(t, this.expando, {
value: n,
writable: !0,
configurable: !0
}), t[this.expando]
},
cache: function(t) {
if(!xt(t)) return {};
var e = t[this.expando];
return e || (e = {}, xt(t) && (t.nodetype ? t[this.expando] = e : object.defineproperty(t, this.expando, {
value: e,
configurable: !0
}))), e
},
set: function(t, e, n) {
var i, r = this.cache(t);
if("string" == typeof e) r[e] = n;
else
for(i in e) r[i] = e[i];
return r
},
get: function(t, e) {
return void 0 === e ? this.cache(t) : t[this.expando] && t[this.expando][e]
},
access: function(t, e, n) {
var i;
return void 0 === e || e && "string" == typeof e && void 0 === n ? (i = this.get(t, e), void 0 !== i ? i : this.get(t, rt.camelcase(e))) : (this.set(t, e, n), void 0 !== n ? n : e)
},
remove: function(t, e) {
var n, i, r, o = t[this.expando];
if(void 0 !== o) {
if(void 0 === e) this.register(t);
else {
rt.isarray(e) ? i = e.concat(e.map(rt.camelcase)) : (r = rt.camelcase(e), e in o ? i = [e, r] : (i = r, i = i in o ? [i] : i.match(mt) || [])), n = i.length;
for(; n--;) delete o[i[n]]
}(void 0 === e || rt.isemptyobject(o)) && (t.nodetype ? t[this.expando] = void 0 : delete t[this.expando])
}
},
hasdata: function(t) {
var e = t[this.expando];
return void 0 !== e && !rt.isemptyobject(e)
}
};
var bt = new a,
wt = new a,
tt = /^(?:\{[\w\w]*\}|\[[\w\w]*\])$/,
st = /[a-z]/g;
rt.extend({
hasdata: function(t) {
return wt.hasdata(t) || bt.hasdata(t)
},
data: function(t, e, n) {
return wt.access(t, e, n)
},
removedata: function(t, e) {
wt.remove(t, e)
},
_data: function(t, e, n) {
return bt.access(t, e, n)
},
_removedata: function(t, e) {
bt.remove(t, e)
}
}), rt.fn.extend({
data: function(t, e) {
var n, i, r, o = this[0],
s = o && o.attributes;
if(void 0 === t) {
if(this.length && (r = wt.get(o), 1 === o.nodetype && !bt.get(o, "hasdataattrs"))) {
for(n = s.length; n--;) s[n] && (i = s[n].name, 0 === i.indexof("data-") && (i = rt.camelcase(i.slice(5)), l(o, i, r[i])));
bt.set(o, "hasdataattrs", !0)
}
return r
}
return "object" == typeof t ? this.each(function() {
wt.set(this, t)
}) : yt(this, function(e) {
var n, i;
if(o && void 0 === e) {
if(void 0 !== (n = wt.get(o, t) || wt.get(o, t.replace(st, "-$&").tolowercase()))) return n;
if(i = rt.camelcase(t), void 0 !== (n = wt.get(o, i))) return n;
if(void 0 !== (n = l(o, i, void 0))) return n
} else i = rt.camelcase(t), this.each(function() {
var n = wt.get(this, i);
wt.set(this, i, e), t.indexof("-") > -1 && void 0 !== n && wt.set(this, t, e)
})
}, null, e, arguments.length > 1, null, !0)
},
removedata: function(t) {
return this.each(function() {
wt.remove(this, t)
})
}
}), rt.extend({
queue: function(t, e, n) {
var i;
if(t) return e = (e || "fx") + "queue", i = bt.get(t, e), n && (!i || rt.isarray(n) ? i = bt.access(t, e, rt.makearray(n)) : i.push(n)), i || []
},
dequeue: function(t, e) {
e = e || "fx";
var n = rt.queue(t, e),
i = n.length,
r = n.shift(),
o = rt._queuehooks(t, e),
s = function() {
rt.dequeue(t, e)
};
"inprogress" === r && (r = n.shift(), i--), r && ("fx" === e && n.unshift("inprogress"), delete o.stop, r.call(t, s, o)), !i && o && o.empty.fire()
},
_queuehooks: function(t, e) {
var n = e + "queuehooks";
return bt.get(t, n) || bt.access(t, n, {
empty: rt.callbacks("once memory").add(function() {
bt.remove(t, [e + "queue", n])
})
})
}
}), rt.fn.extend({
queue: function(t, e) {
var n = 2;
return "string" != typeof t && (e = t, t = "fx", n--), arguments.length < n ? rt.queue(this[0], t) : void 0 === e ? this : this.each(function() {
var n = rt.queue(this, t, e);
rt._queuehooks(this, t), "fx" === t && "inprogress" !== n[0] && rt.dequeue(this, t)
})
},
dequeue: function(t) {
return this.each(function() {
rt.dequeue(this, t)
})
},
clearqueue: function(t) {
return this.queue(t || "fx", [])
},
promise: function(t, e) {
var n, i = 1,
r = rt.deferred(),
o = this,
s = this.length,
a = function() {
--i || r.resolvewith(o, [o])
};
for("string" != typeof t && (e = t, t = void 0), t = t || "fx"; s--;)(n = bt.get(o[s], t + "queuehooks")) && n.empty && (i++, n.empty.add(a));
return a(), r.promise(e)
}
});
var et = /[+-]?(?:\d*\.|)\d+(?:[ee][+-]?\d+|)/.source,
kt = new regexp("^(?:([+-])=|)(" + et + ")([a-z%]*)$", "i"),
ct = ["top", "right", "bottom", "left"],
dt = function(t, e) {
return t = e || t, "none" === rt.css(t, "display") || !rt.contains(t.ownerdocument, t)
},
at = /^(?:checkbox|radio)$/i,
pt = /<([\w:-]+)/,
nt = /^$|\/(?:java|ecma)script/i,
_t = {
option: [1, "
"],
thead: [1, "
"],
col: [2, "
"],
tr: [2, "
"],
td: [3, "
"],
_default: [0, "", ""]
};
_t.optgroup = _t.option, _t.tbody = _t.tfoot = _t.colgroup = _t.caption = _t.thead, _t.th = _t.td;
var ht = /<|?\w+;/;
! function() {
var t = k.createdocumentfragment(),
e = t.appendchild(k.createelement("div")),
n = k.createelement("input");
n.setattribute("type", "radio"), n.setattribute("checked", "checked"), n.setattribute("name", "t"), e.appendchild(n), it.checkclone = e.clonenode(!0).clonenode(!0).lastchild.checked, e.innerhtml = "
", it.noclonechecked = !!e.clonenode(!0).lastchild.defaultvalue
}();
var jt = /^key/,
lt = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
xt = /^([^.]*)(?:\.(.+)|)/;
rt.event = {
global: {},
add: function(t, e, n, i, r) {
var o, s, a, l, c, u, h, p, d, f, g, m = bt.get(t);
if(m)
for(n.handler && (o = n, n = o.handler, r = o.selector), n.guid || (n.guid = rt.guid++), (l = m.events) || (l = m.events = {}), (s = m.handle) || (s = m.handle = function(e) {
return void 0 !== rt && rt.event.triggered !== e.type ? rt.event.dispatch.apply(t, arguments) : void 0
}), e = (e || "").match(mt) || [""], c = e.length; c--;) a = xt.exec(e[c]) || [], d = g = a[1], f = (a[2] || "").split(".").sort(), d && (h = rt.event.special[d] || {}, d = (r ? h.delegatetype : h.bindtype) || d, h = rt.event.special[d] || {}, u = rt.extend({
type: d,
origtype: g,
data: i,
handler: n,
guid: n.guid,
selector: r,
needscontext: r && rt.expr.match.needscontext.test(r),
namespace: f.join(".")
}, o), (p = l[d]) || (p = l[d] = [], p.delegatecount = 0, h.setup && !1 !== h.setup.call(t, i, f, s) || t.addeventlistener && t.addeventlistener(d, s)), h.add && (h.add.call(t, u), u.handler.guid || (u.handler.guid = n.guid)), r ? p.splice(p.delegatecount++, 0, u) : p.push(u), rt.event.global[d] = !0)
},
remove: function(t, e, n, i, r) {
var o, s, a, l, c, u, h, p, d, f, g, m = bt.hasdata(t) && bt.get(t);
if(m && (l = m.events)) {
for(e = (e || "").match(mt) || [""], c = e.length; c--;)
if(a = xt.exec(e[c]) || [], d = g = a[1], f = (a[2] || "").split(".").sort(), d) {
for(h = rt.event.special[d] || {}, d = (i ? h.delegatetype : h.bindtype) || d, p = l[d] || [], a = a[2] && new regexp("(^|\\.)" + f.join("\\.(?:.*\\.|)") + "(\\.|$)"), s = o = p.length; o--;) u = p[o], !r && g !== u.origtype || n && n.guid !== u.guid || a && !a.test(u.namespace) || i && i !== u.selector && ("**" !== i || !u.selector) || (p.splice(o, 1), u.selector && p.delegatecount--, h.remove && h.remove.call(t, u));
s && !p.length && (h.teardown && !1 !== h.teardown.call(t, f, m.handle) || rt.removeevent(t, d, m.handle), delete l[d])
} else
for(d in l) rt.event.remove(t, d + e[c], n, i, !0);
rt.isemptyobject(l) && bt.remove(t, "handle events")
}
},
dispatch: function(t) {
t = rt.event.fix(t);
var e, n, i, r, o, s = [],
a = g.call(arguments),
l = (bt.get(this, "events") || {})[t.type] || [],
c = rt.event.special[t.type] || {};
if(a[0] = t, t.delegatetarget = this, !c.predispatch || !1 !== c.predispatch.call(this, t)) {
for(s = rt.event.handlers.call(this, t, l), e = 0;
(r = s[e++]) && !t.ispropagationstopped();)
for(t.currenttarget = r.elem, n = 0;
(o = r.handlers[n++]) && !t.isimmediatepropagationstopped();) t.rnamespace && !t.rnamespace.test(o.namespace) || (t.handleobj = o, t.data = o.data, void 0 !== (i = ((rt.event.special[o.origtype] || {}).handle || o.handler).apply(r.elem, a)) && !1 === (t.result = i) && (t.preventdefault(), t.stoppropagation()));
return c.postdispatch && c.postdispatch.call(this, t), t.result
}
},
handlers: function(t, e) {
var n, i, r, o, s = [],
a = e.delegatecount,
l = t.target;
if(a && l.nodetype && ("click" !== t.type || isnan(t.button) || t.button < 1))
for(; l !== this; l = l.parentnode || this)
if(1 === l.nodetype && (!0 !== l.disabled || "click" !== t.type)) {
for(i = [], n = 0; n < a; n++) o = e[n], r = o.selector + " ", void 0 === i[r] && (i[r] = o.needscontext ? rt(r, this).index(l) > -1 : rt.find(r, this, null, [l]).length), i[r] && i.push(o);
i.length && s.push({
elem: l,
handlers: i
})
}
return a < e.length && s.push({
elem: this,
handlers: e.slice(a)
}), s
},
props: "altkey bubbles cancelable ctrlkey currenttarget detail eventphase metakey relatedtarget shiftkey target timestamp view which".split(" "),
fixhooks: {},
keyhooks: {
props: "char charcode key keycode".split(" "),
filter: function(t, e) {
return null == t.which && (t.which = null != e.charcode ? e.charcode : e.keycode), t
}
},
mousehooks: {
props: "button buttons clientx clienty offsetx offsety pagex pagey screenx screeny toelement".split(" "),
filter: function(t, e) {
var n, i, r, o = e.button;
return null == t.pagex && null != e.clientx && (n = t.target.ownerdocument || k, i = n.documentelement, r = n.body, t.pagex = e.clientx + (i && i.scrollleft || r && r.scrollleft || 0) - (i && i.clientleft || r && r.clientleft || 0), t.pagey = e.clienty + (i && i.scrolltop || r && r.scrolltop || 0) - (i && i.clienttop || r && r.clienttop || 0)), t.which || void 0 === o || (t.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0), t
}
},
fix: function(t) {
if(t[rt.expando]) return t;
var e, n, i, r = t.type,
o = t,
s = this.fixhooks[r];
for(s || (this.fixhooks[r] = s = lt.test(r) ? this.mousehooks : jt.test(r) ? this.keyhooks : {}), i = s.props ? this.props.concat(s.props) : this.props, t = new rt.event(o), e = i.length; e--;) n = i[e], t[n] = o[n];
return t.target || (t.target = k), 3 === t.target.nodetype && (t.target = t.target.parentnode), s.filter ? s.filter(t, o) : t
},
special: {
load: {
nobubble: !0
},
focus: {
trigger: function() {
if(this !== g() && this.focus) return this.focus(), !1
},
delegatetype: "focusin"
},
blur: {
trigger: function() {
if(this === g() && this.blur) return this.blur(), !1
},
delegatetype: "focusout"
},
click: {
trigger: function() {
if("checkbox" === this.type && this.click && rt.nodename(this, "input")) return this.click(), !1
},
_default: function(t) {
return rt.nodename(t.target, "a")
}
},
beforeunload: {
postdispatch: function(t) {
void 0 !== t.result && t.originalevent && (t.originalevent.returnvalue = t.result)
}
}
}
}, rt.removeevent = function(t, e, n) {
t.removeeventlistener && t.removeeventlistener(e, n)
}, rt.event = function(t, e) {
if(!(this instanceof rt.event)) return new rt.event(t, e);
t && t.type ? (this.originalevent = t, this.type = t.type, this.isdefaultprevented = t.defaultprevented || void 0 === t.defaultprevented && !1 === t.returnvalue ? d : f) : this.type = t, e && rt.extend(this, e), this.timestamp = t && t.timestamp || rt.now(), this[rt.expando] = !0
}, rt.event.prototype = {
constructor: rt.event,
isdefaultprevented: f,
ispropagationstopped: f,
isimmediatepropagationstopped: f,
issimulated: !1,
preventdefault: function() {
var t = this.originalevent;
this.isdefaultprevented = d, t && !this.issimulated && t.preventdefault()
},
stoppropagation: function() {
var t = this.originalevent;
this.ispropagationstopped = d, t && !this.issimulated && t.stoppropagation()
},
stopimmediatepropagation: function() {
var t = this.originalevent;
this.isimmediatepropagationstopped = d, t && !this.issimulated && t.stopimmediatepropagation(), this.stoppropagation()
}
}, rt.each({
mouseenter: "mouseover",
mouseleave: "mouseout",
pointerenter: "pointerover",
pointerleave: "pointerout"
}, function(t, e) {
rt.event.special[t] = {
delegatetype: e,
bindtype: e,
handle: function(t) {
var n, i = this,
r = t.relatedtarget,
o = t.handleobj;
return r && (r === i || rt.contains(i, r)) || (t.type = o.origtype, n = o.handler.apply(this, arguments), t.type = e), n
}
}
}), rt.fn.extend({
on: function(t, e, n, i) {
return m(this, t, e, n, i)
},
one: function(t, e, n, i) {
return m(this, t, e, n, i, 1)
},
off: function(t, e, n) {
var i, r;
if(t && t.preventdefault && t.handleobj) return i = t.handleobj, rt(t.delegatetarget).off(i.namespace ? i.origtype + "." + i.namespace : i.origtype, i.selector, i.handler), this;
if("object" == typeof t) {
for(r in t) this.off(r, e, t[r]);
return this
}
return !1 !== e && "function" != typeof e || (n = e, e = void 0), !1 === n && (n = f), this.each(function() {
rt.event.remove(this, t, n, e)
})
}
});
var ot = /