(function($) { /*! * Bootstrap-select v1.13.2 (https://developer.snapappointments.com/bootstrap-select) * * Copyright 2012-2018 SnapAppointments, LLC * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) */ ! function(e, t) { void 0 === e && void 0 !== window && (e = window), "function" == typeof define && define.amd ? define(["jquery"], function(e) { return t(e) }) : "object" == typeof module && module.exports ? module.exports = t(require("jquery")) : t(e.jQuery) }(this, function(e) { ! function(F) { "use strict"; var e, a, t, i = document.createElement("_"); if (i.classList.toggle("c3", !1), i.classList.contains("c3")) { var s = DOMTokenList.prototype.toggle; DOMTokenList.prototype.toggle = function(e, t) { return 1 in arguments && !this.contains(e) == !t ? t : s.call(this, e) } } function S(e) { var t, i = [], s = e && e.options; if (e.multiple) for (var n = 0, o = s.length; n < o; n++)(t = s[n]).selected && i.push(t.value || t.text); else i = e.value; return i } String.prototype.startsWith || (e = function() { try { var e = {}, t = Object.defineProperty, i = t(e, e, e) && t } catch (e) {} return i }(), a = {}.toString, t = function(e) { if (null == this) throw new TypeError; var t = String(this); if (e && "[object RegExp]" == a.call(e)) throw new TypeError; var i = t.length, s = String(e), n = s.length, o = 1 < arguments.length ? arguments[1] : void 0, l = o ? Number(o) : 0; l != l && (l = 0); var r = Math.min(Math.max(l, 0), i); if (i < n + r) return !1; for (var c = -1; ++c < n;) if (t.charCodeAt(r + c) != s.charCodeAt(c)) return !1; return !0 }, e ? e(String.prototype, "startsWith", { value: t, configurable: !0, writable: !0 }) : String.prototype.startsWith = t), Object.keys || (Object.keys = function(e, t, i) { for (t in i = [], e) i.hasOwnProperty.call(e, t) && i.push(t); return i }); var n = { useDefault: !1, _set: F.valHooks.select.set }; F.valHooks.select.set = function(e, t) { return t && !n.useDefault && F(e).data("selected", !0), n._set.apply(this, arguments) }; var y = null, o = function() { try { return new Event("change"), !0 } catch (e) { return !1 } }(); function $(e, t, i, s) { for (var n = ["content", "subtext", "tokens"], o = !1, l = 0; l < n.length; l++) { var r = n[l], c = e[r]; if (c && (c = c.toString(), "content" === r && (c = c.replace(/<[^>]+>/g, "")), s && (c = d(c)), c = c.toUpperCase(), o = "contains" === i ? 0 <= c.indexOf(t) : c.startsWith(t))) break } return o } function O(e) { return parseInt(e, 10) || 0 } function d(e) { return F.each([{ re: /[\xC0-\xC6]/g, ch: "A" }, { re: /[\xE0-\xE6]/g, ch: "a" }, { re: /[\xC8-\xCB]/g, ch: "E" }, { re: /[\xE8-\xEB]/g, ch: "e" }, { re: /[\xCC-\xCF]/g, ch: "I" }, { re: /[\xEC-\xEF]/g, ch: "i" }, { re: /[\xD2-\xD6]/g, ch: "O" }, { re: /[\xF2-\xF6]/g, ch: "o" }, { re: /[\xD9-\xDC]/g, ch: "U" }, { re: /[\xF9-\xFC]/g, ch: "u" }, { re: /[\xC7-\xE7]/g, ch: "c" }, { re: /[\xD1]/g, ch: "N" }, { re: /[\xF1]/g, ch: "n" }], function() { e = e ? e.replace(this.re, this.ch) : "" }), e } F.fn.triggerNative = function(e) { var t, i = this[0]; i.dispatchEvent ? (o ? t = new Event(e, { bubbles: !0 }) : (t = document.createEvent("Event")).initEvent(e, !0, !1), i.dispatchEvent(t)) : i.fireEvent ? ((t = document.createEventObject()).eventType = e, i.fireEvent("on" + e, t)) : this.trigger(e) }; var l = function(t) { var i = function(e) { return t[e] }, e = "(?:" + Object.keys(t).join("|") + ")", s = RegExp(e), n = RegExp(e, "g"); return function(e) { return e = null == e ? "" : "" + e, s.test(e) ? e.replace(n, i) : e } }, G = l({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "`": "`" }), f = l({ "&": "&", "<": "<", ">": ">", """: '"', "'": "'", "`": "`" }), E = { 32: " ", 48: "0", 49: "1", 50: "2", 51: "3", 52: "4", 53: "5", 54: "6", 55: "7", 56: "8", 57: "9", 59: ";", 65: "A", 66: "B", 67: "C", 68: "D", 69: "E", 70: "F", 71: "G", 72: "H", 73: "I", 74: "J", 75: "K", 76: "L", 77: "M", 78: "N", 79: "O", 80: "P", 81: "Q", 82: "R", 83: "S", 84: "T", 85: "U", 86: "V", 87: "W", 88: "X", 89: "Y", 90: "Z", 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7", 104: "8", 105: "9" }, C = 27, z = 13, T = 32, D = 9, H = 38, L = 40, _ = { success: !1, major: "3" }; try { _.full = (F.fn.dropdown.Constructor.VERSION || "").split(" ")[0].split("."), _.major = _.full[0], _.success = !0 } catch (e) { console.warn("There was an issue retrieving Bootstrap's version. Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.", e) } var q = { DISABLED: "disabled", DIVIDER: "divider", SHOW: "open", DROPUP: "dropup", MENU: "dropdown-menu", MENURIGHT: "dropdown-menu-right", MENULEFT: "dropdown-menu-left", BUTTONCLASS: "btn-default", POPOVERHEADER: "popover-title" }, N = { MENU: "." + q.MENU }; "4" === _.major && (q.DIVIDER = "dropdown-divider", q.SHOW = "show", q.BUTTONCLASS = "btn-light", q.POPOVERHEADER = "popover-header"); var A = new RegExp(H + "|" + L), P = new RegExp("^" + D + "$|" + C), c = (new RegExp(z + "|" + T), function(e, t) { var i = this; n.useDefault || (F.valHooks.select.set = n._set, n.useDefault = !0), this.$element = F(e), this.$newElement = null, this.$button = null, this.$menu = null, this.options = t, this.selectpicker = { main: { map: { newIndex: {}, originalIndex: {} } }, current: { map: {} }, search: { map: {} }, view: {}, keydown: { keyHistory: "", resetKeyHistory: { start: function() { return setTimeout(function() { i.selectpicker.keydown.keyHistory = "" }, 800) } } } }, null === this.options.title && (this.options.title = this.$element.attr("title")); var s = this.options.windowPadding; "number" == typeof s && (this.options.windowPadding = [s, s, s, s]), this.val = c.prototype.val, this.render = c.prototype.render, this.refresh = c.prototype.refresh, this.setStyle = c.prototype.setStyle, this.selectAll = c.prototype.selectAll, this.deselectAll = c.prototype.deselectAll, this.destroy = c.prototype.destroy, this.remove = c.prototype.remove, this.show = c.prototype.show, this.hide = c.prototype.hide, this.init() }); function r(e) { var o, l = arguments, r = e; if ([].shift.apply(l), !_.success) { try { _.full = (F.fn.dropdown.Constructor.VERSION || "").split(" ")[0].split(".") } catch (e) { _.full = c.BootstrapVersion.split(" ")[0].split(".") } _.major = _.full[0], _.success = !0, "4" === _.major && (q.DIVIDER = "dropdown-divider", q.SHOW = "show", q.BUTTONCLASS = "btn-light", c.DEFAULTS.style = q.BUTTONCLASS = "btn-light", q.POPOVERHEADER = "popover-header") } var t = this.each(function() { var e = F(this); if (e.is("select")) { var t = e.data("selectpicker"), i = "object" == typeof r && r; if (t) { if (i) for (var s in i) i.hasOwnProperty(s) && (t.options[s] = i[s]) } else { var n = F.extend({}, c.DEFAULTS, F.fn.selectpicker.defaults || {}, e.data(), i); n.template = F.extend({}, c.DEFAULTS.template, F.fn.selectpicker.defaults ? F.fn.selectpicker.defaults.template : {}, e.data().template, i.template), e.data("selectpicker", t = new c(this, n)) } "string" == typeof r && (o = t[r] instanceof Function ? t[r].apply(t, l) : t.options[r]) } }); return void 0 !== o ? o : t } c.VERSION = "1.13.2", c.BootstrapVersion = _.major, c.DEFAULTS = { noneSelectedText: "Nothing selected", noneResultsText: "No results matched {0}", countSelectedText: function(e, t) { return 1 == e ? "{0} item selected" : "{0} items selected" }, maxOptionsText: function(e, t) { return [1 == e ? "Limit reached ({n} item max)" : "Limit reached ({n} items max)", 1 == t ? "Group limit reached ({n} item max)" : "Group limit reached ({n} items max)"] }, selectAllText: "Select All", deselectAllText: "Deselect All", doneButton: !1, doneButtonText: "Close", multipleSeparator: ", ", styleBase: "btn", style: q.BUTTONCLASS, size: 20, title: null, selectedTextFormat: "values", width: !1, container: !1, hideDisabled: !1, showSubtext: !1, showIcon: !0, showContent: !0, dropupAuto: !1, header: !1, liveSearch: !1, liveSearchPlaceholder: null, liveSearchNormalize: !1, liveSearchStyle: "contains", actionsBox: !1, iconBase: "glyphicon", tickIcon: "glyphicon-ok", showTick: !1, template: { caret: '' }, maxOptions: !1, mobile: !1, selectOnTab: !1, dropdownAlignRight: !1, windowPadding: 100, virtualScroll: 300, display: !1 }, "4" === _.major && (c.DEFAULTS.style = "btn-light", c.DEFAULTS.iconBase = "", c.DEFAULTS.tickIcon = "bs-ok-default"), c.prototype = { constructor: c, init: function() { var i = this, e = this.$element.attr("id"); this.$element.addClass("bs-select-hidden"), this.multiple = this.$element.prop("multiple"), this.autofocus = this.$element.prop("autofocus"), this.$newElement = this.createDropdown(), this.createLi(), this.$element.after(this.$newElement).prependTo(this.$newElement), this.$button = this.$newElement.children("button"), this.$menu = this.$newElement.children(N.MENU), this.$menuInner = this.$menu.children(".inner"), this.$searchbox = this.$menu.find("input"), this.$element.removeClass("bs-select-hidden"), !0 === this.options.dropdownAlignRight && this.$menu.addClass(q.MENURIGHT), void 0 !== e && this.$button.attr("data-id", e), this.checkDisabled(), this.clickListener(), this.options.liveSearch && this.liveSearchListener(), this.render(), this.setStyle(), this.setWidth(), this.options.container ? this.selectPosition() : this.$element.on("hide.bs.select", function() { if (i.isVirtual()) { var e = i.$menuInner[0], t = e.firstChild.cloneNode(!1); e.replaceChild(t, e.firstChild), e.scrollTop = 0 } }), this.$menu.data("this", this), this.$newElement.data("this", this), this.options.mobile && this.mobile(), this.$newElement.on({ "hide.bs.dropdown": function(e) { i.$menuInner.attr("aria-expanded", !1), i.$element.trigger("hide.bs.select", e) }, "hidden.bs.dropdown": function(e) { i.$element.trigger("hidden.bs.select", e) }, "show.bs.dropdown": function(e) { i.$menuInner.attr("aria-expanded", !0), i.$element.trigger("show.bs.select", e) }, "shown.bs.dropdown": function(e) { i.$element.trigger("shown.bs.select", e) } }), i.$element[0].hasAttribute("required") && this.$element.on("invalid", function() { i.$button.addClass("bs-invalid"), i.$element.on({ "shown.bs.select": function() { i.$element.val(i.$element.val()).off("shown.bs.select") }, "rendered.bs.select": function() { this.validity.valid && i.$button.removeClass("bs-invalid"), i.$element.off("rendered.bs.select") } }), i.$button.on("blur.bs.select", function() { i.$element.focus().blur(), i.$button.off("blur.bs.select") }) }), setTimeout(function() { i.$element.trigger("loaded.bs.select") }) }, createDropdown: function() { var e = this.multiple || this.options.showTick ? " show-tick" : "", t = this.autofocus ? " autofocus" : "", i = this.options.header ? '
' + this.options.header + "
" : "", s = this.options.liveSearch ? '' : "", n = this.multiple && this.options.actionsBox ? '
" : "", o = this.multiple && this.options.doneButton ? '
" : "", l = '"; return F(l) }, setPositionData: function() { this.selectpicker.view.canHighlight = []; for (var e = 0; e < this.selectpicker.current.data.length; e++) { var t = this.selectpicker.current.data[e], i = !0; "divider" === t.type ? (i = !1, t.height = this.sizeInfo.dividerHeight) : "optgroup-label" === t.type ? (i = !1, t.height = this.sizeInfo.dropdownHeaderHeight) : t.height = this.sizeInfo.liHeight, t.disabled && (i = !1), this.selectpicker.view.canHighlight.push(i), t.position = (0 === e ? 0 : this.selectpicker.current.data[e - 1].position) + t.height } }, isVirtual: function() { return !1 !== this.options.virtualScroll && this.selectpicker.main.elements.length >= this.options.virtualScroll || !0 === this.options.virtualScroll }, createView: function(C, e) { e = e || 0; var O = this; this.selectpicker.current = C ? this.selectpicker.search : this.selectpicker.main; var z, T, D = []; function i(e, t) { var i, s, n, o, l, r, c, a, d, h = O.selectpicker.current.elements.length, p = [], u = void 0, f = !0, m = O.isVirtual(); O.selectpicker.view.scrollTop = e, !0 === m && O.sizeInfo.hasScrollBar && O.$menu[0].offsetWidth > O.sizeInfo.totalMenuWidth && (O.sizeInfo.menuWidth = O.$menu[0].offsetWidth, O.sizeInfo.totalMenuWidth = O.sizeInfo.menuWidth + O.sizeInfo.scrollBarWidth, O.$menu.css("min-width", O.sizeInfo.menuWidth)), i = Math.ceil(O.sizeInfo.menuInnerHeight / O.sizeInfo.liHeight * 1.5), s = Math.round(h / i) || 1; for (var v = 0; v < s; v++) { var g = (v + 1) * i; if (v === s - 1 && (g = h), p[v] = [v * i + (v ? 1 : 0), g], !h) break; void 0 === u && e <= O.selectpicker.current.data[g - 1].position - O.sizeInfo.menuInnerHeight && (u = v) } if (void 0 === u && (u = 0), l = [O.selectpicker.view.position0, O.selectpicker.view.position1], n = Math.max(0, u - 1), o = Math.min(s - 1, u + 1), O.selectpicker.view.position0 = Math.max(0, p[n][0]) || 0, O.selectpicker.view.position1 = Math.min(h, p[o][1]) || 0, r = l[0] !== O.selectpicker.view.position0 || l[1] !== O.selectpicker.view.position1, void 0 !== O.activeIndex && (T = O.selectpicker.current.elements[O.selectpicker.current.map.newIndex[O.prevActiveIndex]], D = O.selectpicker.current.elements[O.selectpicker.current.map.newIndex[O.activeIndex]], z = O.selectpicker.current.elements[O.selectpicker.current.map.newIndex[O.selectedIndex]], t && (O.activeIndex !== O.selectedIndex && (D.classList.remove("active"), D.firstChild && D.firstChild.classList.remove("active")), O.activeIndex = void 0), O.activeIndex && O.activeIndex !== O.selectedIndex && z && z.length && (z.classList.remove("active"), z.firstChild && z.firstChild.classList.remove("active"))), void 0 !== O.prevActiveIndex && O.prevActiveIndex !== O.activeIndex && O.prevActiveIndex !== O.selectedIndex && T && T.length && (T.classList.remove("active"), T.firstChild && T.firstChild.classList.remove("active")), (t || r) && (c = O.selectpicker.view.visibleElements ? O.selectpicker.view.visibleElements.slice() : [], O.selectpicker.view.visibleElements = O.selectpicker.current.elements.slice(O.selectpicker.view.position0, O.selectpicker.view.position1), O.setOptionStatus(), (C || !1 === m && t) && (a = c, d = O.selectpicker.view.visibleElements, f = !(a.length === d.length && a.every(function(e, t) { return e === d[t] }))), (t || !0 === m) && f)) { var b, w, x = O.$menuInner[0], I = document.createDocumentFragment(), k = x.firstChild.cloneNode(!1), $ = !0 === m ? O.selectpicker.view.visibleElements : O.selectpicker.current.elements; x.replaceChild(k, x.firstChild); v = 0; for (var E = $.length; v < E; v++) I.appendChild($[v]); !0 === m && (b = 0 === O.selectpicker.view.position0 ? 0 : O.selectpicker.current.data[O.selectpicker.view.position0 - 1].position, w = O.selectpicker.view.position1 > h - 1 ? 0 : O.selectpicker.current.data[h - 1].position - O.selectpicker.current.data[O.selectpicker.view.position1 - 1].position, x.firstChild.style.marginTop = b + "px", x.firstChild.style.marginBottom = w + "px"), x.firstChild.appendChild(I) } if (O.prevActiveIndex = O.activeIndex, O.options.liveSearch) { if (C && t) { var S, y = 0; O.selectpicker.view.canHighlight[y] || (y = 1 + O.selectpicker.view.canHighlight.slice(1).indexOf(!0)), S = O.selectpicker.view.visibleElements[y], O.selectpicker.view.currentActive && (O.selectpicker.view.currentActive.classList.remove("active"), O.selectpicker.view.currentActive.firstChild && O.selectpicker.view.currentActive.firstChild.classList.remove("active")), S && (S.classList.add("active"), S.firstChild && S.firstChild.classList.add("active")), O.activeIndex = O.selectpicker.current.map.originalIndex[y] } } else O.$menuInner.focus() } this.setPositionData(), i(e, !0), this.$menuInner.off("scroll.createView").on("scroll.createView", function(e, t) { O.noScroll || i(this.scrollTop, t), O.noScroll = !1 }), F(window).off("resize.createView").on("resize.createView", function() { i(O.$menuInner[0].scrollTop) }) }, createLi: function() { var z, T = this, D = [], H = 0, L = 0, N = [], A = 0, P = 0, R = -1; this.selectpicker.view.titleOption || (this.selectpicker.view.titleOption = document.createElement("option")); var W = { span: document.createElement("span"), subtext: document.createElement("small"), a: document.createElement("a"), li: document.createElement("li"), whitespace: document.createTextNode(" ") }, e = W.span.cloneNode(!1), B = document.createDocumentFragment(); e.className = T.options.iconBase + " " + T.options.tickIcon + " check-mark", W.a.appendChild(e), W.a.setAttribute("role", "option"), W.subtext.className = "text-muted", W.text = W.span.cloneNode(!1), W.text.className = "text"; var M = function(e, t, i, s) { var n = W.li.cloneNode(!1); return e && (1 === e.nodeType || 11 === e.nodeType ? n.appendChild(e) : n.innerHTML = e), void 0 !== i && "" !== i && (n.className = i), null != s && n.classList.add("optgroup-" + s), n }, U = function(e, t, i) { var s = W.a.cloneNode(!0); return e && (11 === e.nodeType ? s.appendChild(e) : s.insertAdjacentHTML("beforeend", e)), void 0 !== t & "" !== t && (s.className = t), "4" === _.major && s.classList.add("dropdown-item"), i && s.setAttribute("style", i), s }, V = function(e) { var t, i, s = W.text.cloneNode(!1); if (e.optionContent) s.innerHTML = e.optionContent; else { if (s.textContent = e.text, e.optionIcon) { var n = W.whitespace.cloneNode(!1); (i = W.span.cloneNode(!1)).className = T.options.iconBase + " " + e.optionIcon, B.appendChild(i), B.appendChild(n) } e.optionSubtext && ((t = W.subtext.cloneNode(!1)).innerHTML = e.optionSubtext, s.appendChild(t)) } return B.appendChild(s), B }; if (this.options.title && !this.multiple) { R--; var t = this.$element[0], i = !1, s = !this.selectpicker.view.titleOption.parentNode; if (s) this.selectpicker.view.titleOption.className = "bs-title-option", this.selectpicker.view.titleOption.value = "", i = void 0 === F(t.options[t.selectedIndex]).attr("selected") && void 0 === this.$element.data("selected"); (s || 0 !== this.selectpicker.view.titleOption.index) && t.insertBefore(this.selectpicker.view.titleOption, t.firstChild), i && (t.selectedIndex = 0) } var j = this.$element.find("option"); j.each(function(e) { var t = F(this); if (R++, !t.hasClass("bs-title-option")) { var i, s, n = t.data(), o = this.className || "", l = G(this.style.cssText), r = n.content, c = this.textContent, a = n.tokens, d = n.subtext, h = n.icon, p = t.parent(), u = p[0], f = "OPTGROUP" === u.tagName, m = f && u.disabled, v = this.disabled || m, g = this.previousElementSibling && "OPTGROUP" === this.previousElementSibling.tagName, b = p.data(); if (!0 === n.hidden || T.options.hideDisabled && (v && !f || m)) { i = n.prevHiddenIndex, t.next().data("prevHiddenIndex", void 0 !== i ? i : e), R--, g || void 0 !== i && (y = j[i].previousElementSibling) && "OPTGROUP" === y.tagName && !y.disabled && (g = !0), g && "divider" !== N[N.length - 1].type && (R++, D.push(M(!1, 0, q.DIVIDER, A + "div")), N.push({ type: "divider", optID: A })) } else { if (f && !0 !== n.divider) { if (T.options.hideDisabled && v) { if (void 0 === b.allOptionsDisabled) { var w = p.children(); p.data("allOptionsDisabled", w.filter(":disabled").length === w.length) } if (p.data("allOptionsDisabled")) return void R-- } var x = " " + u.className || ""; if (!this.previousElementSibling) { A += 1; var I = u.label, k = G(I), $ = b.subtext, E = b.icon; 0 !== e && 0 < D.length && (R++, D.push(M(!1, 0, q.DIVIDER, A + "div")), N.push({ type: "divider", optID: A })), R++; var S = function(e) { var t, i, s = W.text.cloneNode(!1); if (s.innerHTML = e.labelEscaped, e.labelIcon) { var n = W.whitespace.cloneNode(!1); (i = W.span.cloneNode(!1)).className = T.options.iconBase + " " + e.labelIcon, B.appendChild(i), B.appendChild(n) } return e.labelSubtext && ((t = W.subtext.cloneNode(!1)).textContent = e.labelSubtext, s.appendChild(t)), B.appendChild(s), B }({ labelEscaped: k, labelSubtext: $, labelIcon: E }); D.push(M(S, 0, "dropdown-header" + x, A)), N.push({ content: k, subtext: $, type: "optgroup-label", optID: A }), P = R - 1 } if (T.options.hideDisabled && v || !0 === n.hidden) return void R--; s = V({ text: c, optionContent: r, optionSubtext: d, optionIcon: h }), D.push(M(U(s, "opt " + o + x, l), 0, "", A)), N.push({ content: r || c, subtext: d, tokens: a, type: "option", optID: A, headerIndex: P, lastIndex: P + u.childElementCount, originalIndex: e, data: n }), H++ } else if (!0 === n.divider) D.push(M(!1, 0, q.DIVIDER)), N.push({ type: "divider", originalIndex: e, data: n }); else { var y; if (!g && T.options.hideDisabled) if (void 0 !== (i = n.prevHiddenIndex))(y = j[i].previousElementSibling) && "OPTGROUP" === y.tagName && !y.disabled && (g = !0); g && "divider" !== N[N.length - 1].type && (R++, D.push(M(!1, 0, q.DIVIDER, A + "div")), N.push({ type: "divider", optID: A })), s = V({ text: c, optionContent: r, optionSubtext: d, optionIcon: h }), D.push(M(U(s, o, l))), N.push({ content: r || c, subtext: d, tokens: a, type: "option", originalIndex: e, data: n }), H++ } T.selectpicker.main.map.newIndex[e] = R, T.selectpicker.main.map.originalIndex[R] = e; var C = N[N.length - 1]; C.disabled = v; var O = 0; C.content && (O += C.content.length), C.subtext && (O += C.subtext.length), h && (O += 1), L < O && (L = O, z = D[D.length - 1]) } } }), this.selectpicker.main.elements = D, this.selectpicker.main.data = N, this.selectpicker.current = this.selectpicker.main, this.selectpicker.view.widestOption = z, this.selectpicker.view.availableOptionsCount = H }, findLis: function() { return this.$menuInner.find(".inner > li") }, render: function() { var e = this, t = this.$element.find("option"), i = [], s = []; this.togglePlaceholder(), this.tabIndex(); for (var n = 0, o = this.selectpicker.main.elements.length; n < o; n++) { var l = t[this.selectpicker.main.map.originalIndex[n]]; if (l && l.selected && (i.push(l), s.length < 100 && "count" !== e.options.selectedTextFormat || 1 === i.length)) { if (e.options.hideDisabled && (l.disabled || "OPTGROUP" === l.parentNode.tagName && l.parentNode.disabled)) return; var r, c, a = this.selectpicker.main.data[n].data, d = a.icon && e.options.showIcon ? ' ' : ""; r = e.options.showSubtext && a.subtext && !e.multiple ? ' ' + a.subtext + "" : "", c = l.title ? l.title : a.content && e.options.showContent ? a.content.toString() : d + l.innerHTML.trim() + r, s.push(c) } } var h = this.multiple ? s.join(this.options.multipleSeparator) : s[0]; if (50 < i.length && (h += "..."), this.multiple && -1 !== this.options.selectedTextFormat.indexOf("count")) { var p = this.options.selectedTextFormat.split(">"); if (1 < p.length && i.length > p[1] || 1 === p.length && 2 <= i.length) { var u = this.selectpicker.view.availableOptionsCount; h = ("function" == typeof this.options.countSelectedText ? this.options.countSelectedText(i.length, u) : this.options.countSelectedText).replace("{0}", i.length.toString()).replace("{1}", u.toString()) } } null == this.options.title && (this.options.title = this.$element.attr("title")), "static" == this.options.selectedTextFormat && (h = this.options.title), h || (h = void 0 !== this.options.title ? this.options.title : this.options.noneSelectedText), this.$button[0].title = f(h.replace(/<[^>]*>?/g, "").trim()), this.$button.find(".filter-option-inner-inner")[0].innerHTML = h, this.$element.trigger("rendered.bs.select") }, setStyle: function(e, t) { this.$element.attr("class") && this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, "")); var i = e || this.options.style; "add" == t ? this.$button.addClass(i) : "remove" == t ? this.$button.removeClass(i) : (this.$button.removeClass(this.options.style), this.$button.addClass(i)) }, liHeight: function(e) { if (e || !1 !== this.options.size && !this.sizeInfo) { this.sizeInfo || (this.sizeInfo = {}); var t = document.createElement("div"), i = document.createElement("div"), s = document.createElement("div"), n = document.createElement("ul"), o = document.createElement("li"), l = document.createElement("li"), r = document.createElement("li"), c = document.createElement("a"), a = document.createElement("span"), d = this.options.header && 0 < this.$menu.find("." + q.POPOVERHEADER).length ? this.$menu.find("." + q.POPOVERHEADER)[0].cloneNode(!0) : null, h = this.options.liveSearch ? document.createElement("div") : null, p = this.options.actionsBox && this.multiple && 0 < this.$menu.find(".bs-actionsbox").length ? this.$menu.find(".bs-actionsbox")[0].cloneNode(!0) : null, u = this.options.doneButton && this.multiple && 0 < this.$menu.find(".bs-donebutton").length ? this.$menu.find(".bs-donebutton")[0].cloneNode(!0) : null; if (this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth, a.className = "text", c.className = "dropdown-item " + this.$element.find("option")[0].className, t.className = this.$menu[0].parentNode.className + " " + q.SHOW, t.style.width = this.sizeInfo.selectWidth + "px", "auto" === this.options.width && (i.style.minWidth = 0), i.className = q.MENU + " " + q.SHOW, s.className = "inner " + q.SHOW, n.className = q.MENU + " inner " + ("4" === _.major ? q.SHOW : ""), o.className = q.DIVIDER, l.className = "dropdown-header", a.appendChild(document.createTextNode("Inner text")), c.appendChild(a), r.appendChild(c), l.appendChild(a.cloneNode(!0)), this.selectpicker.view.widestOption && n.appendChild(this.selectpicker.view.widestOption.cloneNode(!0)), n.appendChild(r), n.appendChild(o), n.appendChild(l), d && i.appendChild(d), h) { var f = document.createElement("input"); h.className = "bs-searchbox", f.className = "form-control", h.appendChild(f), i.appendChild(h) } p && i.appendChild(p), s.appendChild(n), i.appendChild(s), u && i.appendChild(u), t.appendChild(i), document.body.appendChild(t); var m, v = c.offsetHeight, g = l ? l.offsetHeight : 0, b = d ? d.offsetHeight : 0, w = h ? h.offsetHeight : 0, x = p ? p.offsetHeight : 0, I = u ? u.offsetHeight : 0, k = F(o).outerHeight(!0), $ = !!window.getComputedStyle && window.getComputedStyle(i), E = i.offsetWidth, S = $ ? null : F(i), y = { vert: O($ ? $.paddingTop : S.css("paddingTop")) + O($ ? $.paddingBottom : S.css("paddingBottom")) + O($ ? $.borderTopWidth : S.css("borderTopWidth")) + O($ ? $.borderBottomWidth : S.css("borderBottomWidth")), horiz: O($ ? $.paddingLeft : S.css("paddingLeft")) + O($ ? $.paddingRight : S.css("paddingRight")) + O($ ? $.borderLeftWidth : S.css("borderLeftWidth")) + O($ ? $.borderRightWidth : S.css("borderRightWidth")) }, C = { vert: y.vert + O($ ? $.marginTop : S.css("marginTop")) + O($ ? $.marginBottom : S.css("marginBottom")) + 2, horiz: y.horiz + O($ ? $.marginLeft : S.css("marginLeft")) + O($ ? $.marginRight : S.css("marginRight")) + 2 }; s.style.overflowY = "scroll", m = i.offsetWidth - E, document.body.removeChild(t), this.sizeInfo.liHeight = v, this.sizeInfo.dropdownHeaderHeight = g, this.sizeInfo.headerHeight = b, this.sizeInfo.searchHeight = w, this.sizeInfo.actionsHeight = x, this.sizeInfo.doneButtonHeight = I, this.sizeInfo.dividerHeight = k, this.sizeInfo.menuPadding = y, this.sizeInfo.menuExtras = C, this.sizeInfo.menuWidth = E, this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth, this.sizeInfo.scrollBarWidth = m, this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight, this.setPositionData() } }, getSelectPosition: function() { var e, t = F(window), i = this.$newElement.offset(), s = F(this.options.container); this.options.container && !s.is("body") ? ((e = s.offset()).top += parseInt(s.css("borderTopWidth")), e.left += parseInt(s.css("borderLeftWidth"))) : e = { top: 0, left: 0 }; var n = this.options.windowPadding; this.sizeInfo.selectOffsetTop = i.top - e.top - t.scrollTop(), this.sizeInfo.selectOffsetBot = t.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - e.top - n[2], this.sizeInfo.selectOffsetLeft = i.left - e.left - t.scrollLeft(), this.sizeInfo.selectOffsetRight = t.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - e.left - n[1], this.sizeInfo.selectOffsetTop -= n[0], this.sizeInfo.selectOffsetLeft -= n[3] }, setMenuSize: function(e) { this.getSelectPosition(); var t, i, s, n, o, l, r, c = this.sizeInfo.selectWidth, a = this.sizeInfo.liHeight, d = this.sizeInfo.headerHeight, h = this.sizeInfo.searchHeight, p = this.sizeInfo.actionsHeight, u = this.sizeInfo.doneButtonHeight, f = this.sizeInfo.dividerHeight, m = this.sizeInfo.menuPadding, v = 0; if (this.options.dropupAuto && (r = a * this.selectpicker.current.elements.length + m.vert, this.$newElement.toggleClass(q.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && r + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot)), "auto" === this.options.size) n = 3 < this.selectpicker.current.elements.length ? 3 * this.sizeInfo.liHeight + this.sizeInfo.menuExtras.vert - 2 : 0, i = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert, s = n + d + h + p + u, l = Math.max(n - m.vert, 0), this.$newElement.hasClass(q.DROPUP) && (i = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert), t = (o = i) - d - h - p - u - m.vert; else if (this.options.size && "auto" != this.options.size && this.selectpicker.current.elements.length > this.options.size) { for (var g = 0; g < this.options.size; g++) "divider" === this.selectpicker.current.data[g].type && v++; t = (i = a * this.options.size + v * f + m.vert) - m.vert, o = i + d + h + p + u, s = l = "" } "auto" === this.options.dropdownAlignRight && this.$menu.toggleClass(q.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < this.$menu[0].offsetWidth - c), this.$menu.css({ "max-height": o + "px", overflow: "hidden", "min-height": s + "px" }), this.$menuInner.css({ "max-height": t + "px", "overflow-y": "auto", "min-height": l + "px" }), this.sizeInfo.menuInnerHeight = t, this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight && (this.sizeInfo.hasScrollBar = !0, this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth, this.$menu.css("min-width", this.sizeInfo.totalMenuWidth)), this.dropdown && this.dropdown._popper && this.dropdown._popper.update() }, setSize: function(e) { if (this.liHeight(e), this.options.header && this.$menu.css("padding-top", 0), !1 !== this.options.size) { var t, i = this, s = F(window), n = 0; this.setMenuSize(), "auto" === this.options.size ? (this.$searchbox.off("input.setMenuSize propertychange.setMenuSize").on("input.setMenuSize propertychange.setMenuSize", function() { return i.setMenuSize() }), s.off("resize.setMenuSize scroll.setMenuSize").on("resize.setMenuSize scroll.setMenuSize", function() { return i.setMenuSize() })) : this.options.size && "auto" != this.options.size && this.selectpicker.current.elements.length > this.options.size && (this.$searchbox.off("input.setMenuSize propertychange.setMenuSize"), s.off("resize.setMenuSize scroll.setMenuSize")), e ? n = this.$menuInner[0].scrollTop : i.multiple || "number" == typeof(t = i.selectpicker.main.map.newIndex[i.$element[0].selectedIndex]) && !1 !== i.options.size && (n = (n = i.sizeInfo.liHeight * t) - i.sizeInfo.menuInnerHeight / 2 + i.sizeInfo.liHeight / 2), i.createView(!1, n) } }, setWidth: function() { var i = this; "auto" === this.options.width ? requestAnimationFrame(function() { i.$menu.css("min-width", "0"), i.liHeight(), i.setMenuSize(); var e = i.$newElement.clone().appendTo("body"), t = e.css("width", "auto").children("button").outerWidth(); e.remove(), i.sizeInfo.selectWidth = Math.max(i.sizeInfo.totalMenuWidth, t), i.$newElement.css("width", i.sizeInfo.selectWidth + "px") }) : "fit" === this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", "").addClass("fit-width")) : this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", this.options.width)) : (this.$menu.css("min-width", ""), this.$newElement.css("width", "")), this.$newElement.hasClass("fit-width") && "fit" !== this.options.width && this.$newElement.removeClass("fit-width") }, selectPosition: function() { this.$bsContainer = F('
'); var s, n, o, l = this, r = F(this.options.container), e = function(e) { var t = {}, i = l.options.display || F.fn.dropdown.Constructor.Default.display; l.$bsContainer.addClass(e.attr("class").replace(/form-control|fit-width/gi, "")).toggleClass(q.DROPUP, e.hasClass(q.DROPUP)), s = e.offset(), r.is("body") ? n = { top: 0, left: 0 } : ((n = r.offset()).top += parseInt(r.css("borderTopWidth")) - r.scrollTop(), n.left += parseInt(r.css("borderLeftWidth")) - r.scrollLeft()), o = e.hasClass(q.DROPUP) ? 0 : e[0].offsetHeight, (_.major < 4 || "static" === i) && (t.top = s.top - n.top + o, t.left = s.left - n.left), t.width = e[0].offsetWidth, l.$bsContainer.css(t) }; this.$button.on("click.bs.dropdown.data-api", function() { l.isDisabled() || (e(l.$newElement), l.$bsContainer.appendTo(l.options.container).toggleClass(q.SHOW, !l.$button.hasClass(q.SHOW)).append(l.$menu)) }), F(window).on("resize scroll", function() { e(l.$newElement) }), this.$element.on("hide.bs.select", function() { l.$menu.data("height", l.$menu.height()), l.$bsContainer.detach() }) }, setOptionStatus: function() { var e = this, t = this.$element.find("option"); if (e.noScroll = !1, e.selectpicker.view.visibleElements && e.selectpicker.view.visibleElements.length) for (var i = 0; i < e.selectpicker.view.visibleElements.length; i++) { var s = e.selectpicker.current.map.originalIndex[i + e.selectpicker.view.position0], n = t[s]; if (n) { var o = this.selectpicker.main.map.newIndex[s], l = this.selectpicker.main.elements[o]; e.setDisabled(s, n.disabled || "OPTGROUP" === n.parentNode.tagName && n.parentNode.disabled, o, l), e.setSelected(s, n.selected, o, l) } } }, setSelected: function(e, t, i, s) { var n, o, l, r = void 0 !== this.activeIndex, c = this.activeIndex === e || t && !this.multiple && !r; i || (i = this.selectpicker.main.map.newIndex[e]), s || (s = this.selectpicker.main.elements[i]), l = s.firstChild, t && (this.selectedIndex = e), s.classList.toggle("selected", t), s.classList.toggle("active", c), c && (this.selectpicker.view.currentActive = s, this.activeIndex = e), l && (l.classList.toggle("selected", t), l.classList.toggle("active", c), l.setAttribute("aria-selected", t)), c || !r && t && void 0 !== this.prevActiveIndex && (n = this.selectpicker.main.map.newIndex[this.prevActiveIndex], (o = this.selectpicker.main.elements[n]).classList.toggle("selected", t), o.classList.remove("active"), o.firstChild && (o.firstChild.classList.toggle("selected", t), o.firstChild.classList.remove("active"))) }, setDisabled: function(e, t, i, s) { var n; i || (i = this.selectpicker.main.map.newIndex[e]), s || (s = this.selectpicker.main.elements[i]), n = s.firstChild, s.classList.toggle(q.DISABLED, t), n && ("4" === _.major && n.classList.toggle(q.DISABLED, t), n.setAttribute("aria-disabled", t), t ? n.setAttribute("tabindex", -1) : n.setAttribute("tabindex", 0)) }, isDisabled: function() { return this.$element[0].disabled }, checkDisabled: function() { var e = this; this.isDisabled() ? (this.$newElement.addClass(q.DISABLED), this.$button.addClass(q.DISABLED).attr("tabindex", -1).attr("aria-disabled", !0)) : (this.$button.hasClass(q.DISABLED) && (this.$newElement.removeClass(q.DISABLED), this.$button.removeClass(q.DISABLED).attr("aria-disabled", !1)), -1 != this.$button.attr("tabindex") || this.$element.data("tabindex") || this.$button.removeAttr("tabindex")), this.$button.click(function() { return !e.isDisabled() }) }, togglePlaceholder: function() { var e = this.$element[0], t = e.selectedIndex, i = -1 === t; i || e.options[t].value || (i = !0), this.$button.toggleClass("bs-placeholder", i) }, tabIndex: function() { this.$element.data("tabindex") !== this.$element.attr("tabindex") && -98 !== this.$element.attr("tabindex") && "-98" !== this.$element.attr("tabindex") && (this.$element.data("tabindex", this.$element.attr("tabindex")), this.$button.attr("tabindex", this.$element.data("tabindex"))), this.$element.attr("tabindex", -98) }, clickListener: function() { var E = this, t = F(document); function e() { E.options.liveSearch ? E.$searchbox.focus() : E.$menuInner.focus() } function i() { E.dropdown && E.dropdown._popper && E.dropdown._popper.state.isCreated ? e() : requestAnimationFrame(i) } t.data("spaceSelect", !1), this.$button.on("keyup", function(e) { /(32)/.test(e.keyCode.toString(10)) && t.data("spaceSelect") && (e.preventDefault(), t.data("spaceSelect", !1)) }), this.$newElement.on("show.bs.dropdown", function() { 3 < _.major && !E.dropdown && (E.dropdown = E.$button.data("bs.dropdown"), E.dropdown._menu = E.$menu[0]) }), this.$button.on("click.bs.dropdown.data-api", function() { E.$newElement.hasClass(q.SHOW) || E.setSize() }), this.$element.on("shown.bs.select", function() { E.$menuInner[0].scrollTop !== E.selectpicker.view.scrollTop && (E.$menuInner[0].scrollTop = E.selectpicker.view.scrollTop), 3 < _.major ? requestAnimationFrame(i) : e() }), this.$menuInner.on("click", "li a", function(e, t) { var i = F(this), s = E.isVirtual() ? E.selectpicker.view.position0 : 0, n = E.selectpicker.current.map.originalIndex[i.parent().index() + s], o = S(E.$element[0]), l = E.$element.prop("selectedIndex"), r = !0; if (E.multiple && 1 !== E.options.maxOptions && e.stopPropagation(), e.preventDefault(), !E.isDisabled() && !i.parent().hasClass(q.DISABLED)) { var c = E.$element.find("option"), a = c.eq(n), d = a.prop("selected"), h = a.parent("optgroup"), p = h.find("option"), u = E.options.maxOptions, f = h.data("maxOptions") || !1; if (n === E.activeIndex && (t = !0), t || (E.prevActiveIndex = E.activeIndex, E.activeIndex = void 0), E.multiple) { if (a.prop("selected", !d), E.setSelected(n, !d), i.blur(), !1 !== u || !1 !== f) { var m = u < c.filter(":selected").length, v = f < h.find("option:selected").length; if (u && m || f && v) if (u && 1 == u) { c.prop("selected", !1), a.prop("selected", !0); for (var g = 0; g < c.length; g++) E.setSelected(g, !1); E.setSelected(n, !0) } else if (f && 1 == f) { h.find("option:selected").prop("selected", !1), a.prop("selected", !0); for (g = 0; g < p.length; g++) { var b = p[g]; E.setSelected(c.index(b), !1) } E.setSelected(n, !0) } else { var w = "string" == typeof E.options.maxOptionsText ? [E.options.maxOptionsText, E.options.maxOptionsText] : E.options.maxOptionsText, x = "function" == typeof w ? w(u, f) : w, I = x[0].replace("{n}", u), k = x[1].replace("{n}", f), $ = F('
'); x[2] && (I = I.replace("{var}", x[2][1 < u ? 0 : 1]), k = k.replace("{var}", x[2][1 < f ? 0 : 1])), a.prop("selected", !1), E.$menu.append($), u && m && ($.append(F("
" + I + "
")), r = !1, E.$element.trigger("maxReached.bs.select")), f && v && ($.append(F("
" + k + "
")), r = !1, E.$element.trigger("maxReachedGrp.bs.select")), setTimeout(function() { E.setSelected(n, !1) }, 10), $.delay(750).fadeOut(300, function() { F(this).remove() }) } } } else c.prop("selected", !1), a.prop("selected", !0), E.setSelected(n, !0); !E.multiple || E.multiple && 1 === E.options.maxOptions ? E.$button.focus() : E.options.liveSearch && E.$searchbox.focus(), r && (o != S(E.$element[0]) && E.multiple || l != E.$element.prop("selectedIndex") && !E.multiple) && (y = [n, a.prop("selected"), o], E.$element.triggerNative("change")) } }), this.$menu.on("click", "li." + q.DISABLED + " a, ." + q.POPOVERHEADER + ", ." + q.POPOVERHEADER + " :not(.close)", function(e) { e.currentTarget == this && (e.preventDefault(), e.stopPropagation(), E.options.liveSearch && !F(e.target).hasClass("close") ? E.$searchbox.focus() : E.$button.focus()) }), this.$menuInner.on("click", ".divider, .dropdown-header", function(e) { e.preventDefault(), e.stopPropagation(), E.options.liveSearch ? E.$searchbox.focus() : E.$button.focus() }), this.$menu.on("click", "." + q.POPOVERHEADER + " .close", function() { E.$button.click() }), this.$searchbox.on("click", function(e) { e.stopPropagation() }), this.$menu.on("click", ".actions-btn", function(e) { E.options.liveSearch ? E.$searchbox.focus() : E.$button.focus(), e.preventDefault(), e.stopPropagation(), F(this).hasClass("bs-select-all") ? E.selectAll() : E.deselectAll() }), this.$element.on({ change: function() { E.render(), E.$element.trigger("changed.bs.select", y), y = null }, focus: function() { E.$button.focus() } }) }, liveSearchListener: function() { var u = this, f = document.createElement("li"); this.$button.on("click.bs.dropdown.data-api", function() { u.$searchbox.val() && u.$searchbox.val("") }), this.$searchbox.on("click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api", function(e) { e.stopPropagation() }), this.$searchbox.on("input propertychange", function() { var e = u.$searchbox.val(); if (u.selectpicker.search.map.newIndex = {}, u.selectpicker.search.map.originalIndex = {}, u.selectpicker.search.elements = [], u.selectpicker.search.data = [], e) { var t = [], i = e.toUpperCase(), s = {}, n = [], o = u._searchStyle(), l = u.options.liveSearchNormalize; u._$lisSelected = u.$menuInner.find(".selected"); for (var r = 0; r < u.selectpicker.main.data.length; r++) { var c = u.selectpicker.main.data[r]; s[r] || (s[r] = $(c, i, o, l)), s[r] && void 0 !== c.headerIndex && -1 === n.indexOf(c.headerIndex) && (0 < c.headerIndex && (s[c.headerIndex - 1] = !0, n.push(c.headerIndex - 1)), s[c.headerIndex] = !0, n.push(c.headerIndex), s[c.lastIndex + 1] = !0), s[r] && "optgroup-label" !== c.type && n.push(r) } r = 0; for (var a = n.length; r < a; r++) { var d = n[r], h = n[r - 1], p = (c = u.selectpicker.main.data[d], u.selectpicker.main.data[h]); ("divider" !== c.type || "divider" === c.type && p && "divider" !== p.type && a - 1 !== r) && (u.selectpicker.search.data.push(c), t.push(u.selectpicker.main.elements[d]), c.hasOwnProperty("originalIndex") && (u.selectpicker.search.map.newIndex[c.originalIndex] = t.length - 1, u.selectpicker.search.map.originalIndex[t.length - 1] = c.originalIndex)) } u.activeIndex = void 0, u.noScroll = !0, u.$menuInner.scrollTop(0), u.selectpicker.search.elements = t, u.createView(!0), t.length || (f.className = "no-results", f.innerHTML = u.options.noneResultsText.replace("{0}", '"' + G(e) + '"'), u.$menuInner[0].firstChild.appendChild(f)) } else u.$menuInner.scrollTop(0), u.createView(!1) }) }, _searchStyle: function() { return this.options.liveSearchStyle || "contains" }, val: function(e) { return void 0 !== e ? (this.$element.val(e).triggerNative("change"), this.$element) : this.$element.val() }, changeAll: function(e) { if (this.multiple) { void 0 === e && (e = !0); var t = this.$element.find("option"), i = 0, s = 0, n = S(this.$element[0]); this.$element.addClass("bs-select-hidden"); for (var o = 0; o < this.selectpicker.current.elements.length; o++) { var l = this.selectpicker.current.data[o], r = t[this.selectpicker.current.map.originalIndex[o]]; r && !r.disabled && "divider" !== l.type && (r.selected && i++, r.selected = e, r.selected && s++) } this.$element.removeClass("bs-select-hidden"), i !== s && (this.setOptionStatus(), this.togglePlaceholder(), y = [null, null, n], this.$element.triggerNative("change")) } }, selectAll: function() { return this.changeAll(!0) }, deselectAll: function() { return this.changeAll(!1) }, toggle: function(e) { (e = e || window.event) && e.stopPropagation(), this.$button.trigger("click.bs.dropdown.data-api") }, keydown: function(e) { var t, i, s, n, o, l = F(this), r = l.hasClass("dropdown-toggle"), c = (r ? l.closest(".dropdown") : l.closest(N.MENU)).data("this"), a = c.findLis(), d = !1, h = e.which === D && !r && !c.options.selectOnTab, p = A.test(e.which) || h, u = c.$menuInner[0].scrollTop, f = c.isVirtual(), m = !0 === f ? c.selectpicker.view.position0 : 0; if (!(i = c.$newElement.hasClass(q.SHOW)) && (p || 48 <= e.which && e.which <= 57 || 96 <= e.which && e.which <= 105 || 65 <= e.which && e.which <= 90) && c.$button.trigger("click.bs.dropdown.data-api"), e.which === C && i && (e.preventDefault(), c.$button.trigger("click.bs.dropdown.data-api").focus()), p) { if (!a.length) return; void 0 === (t = !0 === f ? a.index(a.filter(".active")) : c.selectpicker.current.map.newIndex[c.activeIndex]) && (t = -1), -1 !== t && ((s = c.selectpicker.current.elements[t + m]).classList.remove("active"), s.firstChild && s.firstChild.classList.remove("active")), e.which === H ? (-1 !== t && t--, t + m < 0 && (t += a.length), c.selectpicker.view.canHighlight[t + m] || -1 === (t = c.selectpicker.view.canHighlight.slice(0, t + m).lastIndexOf(!0) - m) && (t = a.length - 1)) : (e.which === L || h) && (++t + m >= c.selectpicker.view.canHighlight.length && (t = 0), c.selectpicker.view.canHighlight[t + m] || (t = t + 1 + c.selectpicker.view.canHighlight.slice(t + m + 1).indexOf(!0))), e.preventDefault(); var v = m + t; e.which === H ? 0 === m && t === a.length - 1 ? (c.$menuInner[0].scrollTop = c.$menuInner[0].scrollHeight, v = c.selectpicker.current.elements.length - 1) : d = (o = (n = c.selectpicker.current.data[v]).position - n.height) < u : (e.which === L || h) && (0 === t ? v = c.$menuInner[0].scrollTop = 0 : d = u < (o = (n = c.selectpicker.current.data[v]).position - c.sizeInfo.menuInnerHeight)), (s = c.selectpicker.current.elements[v]) && (s.classList.add("active"), s.firstChild && s.firstChild.classList.add("active")), c.activeIndex = c.selectpicker.current.map.originalIndex[v], c.selectpicker.view.currentActive = s, d && (c.$menuInner[0].scrollTop = o), c.options.liveSearch ? c.$searchbox.focus() : l.focus() } else if (!l.is("input") && !P.test(e.which) || e.which === T && c.selectpicker.keydown.keyHistory) { var g, b, w = []; e.preventDefault(), c.selectpicker.keydown.keyHistory += E[e.which], c.selectpicker.keydown.resetKeyHistory.cancel && clearTimeout(c.selectpicker.keydown.resetKeyHistory.cancel), c.selectpicker.keydown.resetKeyHistory.cancel = c.selectpicker.keydown.resetKeyHistory.start(), b = c.selectpicker.keydown.keyHistory, /^(.)\1+$/.test(b) && (b = b.charAt(0)); for (var x = 0; x < c.selectpicker.current.data.length; x++) { var I = c.selectpicker.current.data[x]; $(I, b, "startsWith", !0) && c.selectpicker.view.canHighlight[x] && (I.index = x, w.push(I.originalIndex)) } if (w.length) { var k = 0; a.removeClass("active").find("a").removeClass("active"), 1 === b.length && (-1 === (k = w.indexOf(c.activeIndex)) || k === w.length - 1 ? k = 0 : k++), g = c.selectpicker.current.map.newIndex[w[k]], 0 < u - (n = c.selectpicker.current.data[g]).position ? (o = n.position - n.height, d = !0) : (o = n.position - c.sizeInfo.menuInnerHeight, d = n.position > u + c.sizeInfo.menuInnerHeight), (s = c.selectpicker.current.elements[g]).classList.add("active"), s.firstChild && s.firstChild.classList.add("active"), c.activeIndex = w[k], s.firstChild.focus(), d && (c.$menuInner[0].scrollTop = o), l.focus() } } i && (e.which === T && !c.selectpicker.keydown.keyHistory || e.which === z || e.which === D && c.options.selectOnTab) && (e.which !== T && e.preventDefault(), c.options.liveSearch && e.which === T || (c.$menuInner.find(".active a").trigger("click", !0), l.focus(), c.options.liveSearch || (e.preventDefault(), F(document).data("spaceSelect", !0)))) }, mobile: function() { this.$element.addClass("mobile-device") }, refresh: function() { var e = F.extend({}, this.options, this.$element.data()); this.options = e, this.selectpicker.main.map.newIndex = {}, this.selectpicker.main.map.originalIndex = {}, this.createLi(), this.checkDisabled(), this.render(), this.setStyle(), this.setWidth(), this.setSize(!0), this.$element.trigger("refreshed.bs.select") }, hide: function() { this.$newElement.hide() }, show: function() { this.$newElement.show() }, remove: function() { this.$newElement.remove(), this.$element.remove() }, destroy: function() { this.$newElement.before(this.$element).remove(), this.$bsContainer ? this.$bsContainer.remove() : this.$menu.remove(), this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker") } }; var h = F.fn.selectpicker; F.fn.selectpicker = r, F.fn.selectpicker.Constructor = c, F.fn.selectpicker.noConflict = function() { return F.fn.selectpicker = h, this }, F(document).off("keydown.bs.dropdown.data-api").on("keydown.bs.select", '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bs-searchbox input', c.prototype.keydown).on("focusin.modal", '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bs-searchbox input', function(e) { e.stopPropagation() }), F(window).on("load.bs.select.data-api", function() { F(".selectpicker").each(function() { var e = F(this); r.call(e, e.data()) }) }) }(e) }); $.fn.selectpicker.Constructor.BootstrapVersion = '4' }(jQuery)); /*! Magnific Popup - v1.1.0 - 2016-02-20 * http://dimsemenov.com/plugins/magnific-popup/ * Copyright (c) 2016 Dmitry Semenov; */ ! function(a) { "function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == typeof exports ? require("jquery") : window.jQuery || window.Zepto) }(function(a) { var b, c, d, e, f, g, h = "Close", i = "BeforeClose", j = "AfterClose", k = "BeforeAppend", l = "MarkupParse", m = "Open", n = "Change", o = "mfp", p = "." + o, q = "mfp-ready", r = "mfp-removing", s = "mfp-prevent-close", t = function() {}, u = !!window.jQuery, v = a(window), w = function(a, c) { b.ev.on(o + a + p, c) }, x = function(b, c, d, e) { var f = document.createElement("div"); return f.className = "mfp-" + b, d && (f.innerHTML = d), e ? c && c.appendChild(f) : (f = a(f), c && f.appendTo(c)), f }, y = function(c, d) { b.ev.triggerHandler(o + c, d), b.st.callbacks && (c = c.charAt(0).toLowerCase() + c.slice(1), b.st.callbacks[c] && b.st.callbacks[c].apply(b, a.isArray(d) ? d : [d])) }, z = function(c) { return c === g && b.currTemplate.closeBtn || (b.currTemplate.closeBtn = a(b.st.closeMarkup.replace("%title%", b.st.tClose)), g = c), b.currTemplate.closeBtn }, A = function() { a.magnificPopup.instance || (b = new t, b.init(), a.magnificPopup.instance = b) }, B = function() { var a = document.createElement("p").style, b = ["ms", "O", "Moz", "Webkit"]; if (void 0 !== a.transition) return !0; for (; b.length;) if (b.pop() + "Transition" in a) return !0; return !1 }; t.prototype = { constructor: t, init: function() { var c = navigator.appVersion; b.isLowIE = b.isIE8 = document.all && !document.addEventListener, b.isAndroid = /android/gi.test(c), b.isIOS = /iphone|ipad|ipod/gi.test(c), b.supportsTransition = B(), b.probablyMobile = b.isAndroid || b.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent), d = a(document), b.popupsCache = {} }, open: function(c) { var e; if (c.isObj === !1) { b.items = c.items.toArray(), b.index = 0; var g, h = c.items; for (e = 0; e < h.length; e++) if (g = h[e], g.parsed && (g = g.el[0]), g === c.el[0]) { b.index = e; break } } else b.items = a.isArray(c.items) ? c.items : [c.items], b.index = c.index || 0; if (b.isOpen) return void b.updateItemHTML(); b.types = [], f = "", c.mainEl && c.mainEl.length ? b.ev = c.mainEl.eq(0) : b.ev = d, c.key ? (b.popupsCache[c.key] || (b.popupsCache[c.key] = {}), b.currTemplate = b.popupsCache[c.key]) : b.currTemplate = {}, b.st = a.extend(!0, {}, a.magnificPopup.defaults, c), b.fixedContentPos = "auto" === b.st.fixedContentPos ? !b.probablyMobile : b.st.fixedContentPos, b.st.modal && (b.st.closeOnContentClick = !1, b.st.closeOnBgClick = !1, b.st.showCloseBtn = !1, b.st.enableEscapeKey = !1), b.bgOverlay || (b.bgOverlay = x("bg").on("click" + p, function() { b.close() }), b.wrap = x("wrap").attr("tabindex", -1).on("click" + p, function(a) { b._checkIfClose(a.target) && b.close() }), b.container = x("container", b.wrap)), b.contentContainer = x("content"), b.st.preloader && (b.preloader = x("preloader", b.container, b.st.tLoading)); var i = a.magnificPopup.modules; for (e = 0; e < i.length; e++) { var j = i[e]; j = j.charAt(0).toUpperCase() + j.slice(1), b["init" + j].call(b) } y("BeforeOpen"), b.st.showCloseBtn && (b.st.closeBtnInside ? (w(l, function(a, b, c, d) { c.close_replaceWith = z(d.type) }), f += " mfp-close-btn-in") : b.wrap.append(z())), b.st.alignTop && (f += " mfp-align-top"), b.fixedContentPos ? b.wrap.css({ overflow: b.st.overflowY, overflowX: "hidden", overflowY: b.st.overflowY }) : b.wrap.css({ top: v.scrollTop(), position: "absolute" }), (b.st.fixedBgPos === !1 || "auto" === b.st.fixedBgPos && !b.fixedContentPos) && b.bgOverlay.css({ height: d.height(), position: "absolute" }), b.st.enableEscapeKey && d.on("keyup" + p, function(a) { 27 === a.keyCode && b.close() }), v.on("resize" + p, function() { b.updateSize() }), b.st.closeOnContentClick || (f += " mfp-auto-cursor"), f && b.wrap.addClass(f); var k = b.wH = v.height(), n = {}; if (b.fixedContentPos && b._hasScrollBar(k)) { var o = b._getScrollbarSize(); o && (n.marginRight = o) } b.fixedContentPos && (b.isIE7 ? a("body, html").css("overflow", "hidden") : n.overflow = "hidden"); var r = b.st.mainClass; return b.isIE7 && (r += " mfp-ie7"), r && b._addClassToMFP(r), b.updateItemHTML(), y("BuildControls"), a("html").css(n), b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo || a(document.body)), b._lastFocusedEl = document.activeElement, setTimeout(function() { b.content ? (b._addClassToMFP(q), b._setFocus()) : b.bgOverlay.addClass(q), d.on("focusin" + p, b._onFocusIn) }, 16), b.isOpen = !0, b.updateSize(k), y(m), c }, close: function() { b.isOpen && (y(i), b.isOpen = !1, b.st.removalDelay && !b.isLowIE && b.supportsTransition ? (b._addClassToMFP(r), setTimeout(function() { b._close() }, b.st.removalDelay)) : b._close()) }, _close: function() { y(h); var c = r + " " + q + " "; if (b.bgOverlay.detach(), b.wrap.detach(), b.container.empty(), b.st.mainClass && (c += b.st.mainClass + " "), b._removeClassFromMFP(c), b.fixedContentPos) { var e = { marginRight: "" }; b.isIE7 ? a("body, html").css("overflow", "") : e.overflow = "", a("html").css(e) } d.off("keyup" + p + " focusin" + p), b.ev.off(p), b.wrap.attr("class", "mfp-wrap").removeAttr("style"), b.bgOverlay.attr("class", "mfp-bg"), b.container.attr("class", "mfp-container"), !b.st.showCloseBtn || b.st.closeBtnInside && b.currTemplate[b.currItem.type] !== !0 || b.currTemplate.closeBtn && b.currTemplate.closeBtn.detach(), b.st.autoFocusLast && b._lastFocusedEl && a(b._lastFocusedEl).focus(), b.currItem = null, b.content = null, b.currTemplate = null, b.prevHeight = 0, y(j) }, updateSize: function(a) { if (b.isIOS) { var c = document.documentElement.clientWidth / window.innerWidth, d = window.innerHeight * c; b.wrap.css("height", d), b.wH = d } else b.wH = a || v.height(); b.fixedContentPos || b.wrap.css("height", b.wH), y("Resize") }, updateItemHTML: function() { var c = b.items[b.index]; b.contentContainer.detach(), b.content && b.content.detach(), c.parsed || (c = b.parseEl(b.index)); var d = c.type; if (y("BeforeChange", [b.currItem ? b.currItem.type : "", d]), b.currItem = c, !b.currTemplate[d]) { var f = b.st[d] ? b.st[d].markup : !1; y("FirstMarkupParse", f), f ? b.currTemplate[d] = a(f) : b.currTemplate[d] = !0 } e && e !== c.type && b.container.removeClass("mfp-" + e + "-holder"); var g = b["get" + d.charAt(0).toUpperCase() + d.slice(1)](c, b.currTemplate[d]); b.appendContent(g, d), c.preloaded = !0, y(n, c), e = c.type, b.container.prepend(b.contentContainer), y("AfterChange") }, appendContent: function(a, c) { b.content = a, a ? b.st.showCloseBtn && b.st.closeBtnInside && b.currTemplate[c] === !0 ? b.content.find(".mfp-close").length || b.content.append(z()) : b.content = a : b.content = "", y(k), b.container.addClass("mfp-" + c + "-holder"), b.contentContainer.append(b.content) }, parseEl: function(c) { var d, e = b.items[c]; if (e.tagName ? e = { el: a(e) } : (d = e.type, e = { data: e, src: e.src }), e.el) { for (var f = b.types, g = 0; g < f.length; g++) if (e.el.hasClass("mfp-" + f[g])) { d = f[g]; break } e.src = e.el.attr("data-mfp-src"), e.src || (e.src = e.el.attr("href")) } return e.type = d || b.st.type || "inline", e.index = c, e.parsed = !0, b.items[c] = e, y("ElementParse", e), b.items[c] }, addGroup: function(a, c) { var d = function(d) { d.mfpEl = this, b._openClick(d, a, c) }; c || (c = {}); var e = "click.magnificPopup"; c.mainEl = a, c.items ? (c.isObj = !0, a.off(e).on(e, d)) : (c.isObj = !1, c.delegate ? a.off(e).on(e, c.delegate, d) : (c.items = a, a.off(e).on(e, d))) }, _openClick: function(c, d, e) { var f = void 0 !== e.midClick ? e.midClick : a.magnificPopup.defaults.midClick; if (f || !(2 === c.which || c.ctrlKey || c.metaKey || c.altKey || c.shiftKey)) { var g = void 0 !== e.disableOn ? e.disableOn : a.magnificPopup.defaults.disableOn; if (g) if (a.isFunction(g)) { if (!g.call(b)) return !0 } else if (v.width() < g) return !0; c.type && (c.preventDefault(), b.isOpen && c.stopPropagation()), e.el = a(c.mfpEl), e.delegate && (e.items = d.find(e.delegate)), b.open(e) } }, updateStatus: function(a, d) { if (b.preloader) { c !== a && b.container.removeClass("mfp-s-" + c), d || "loading" !== a || (d = b.st.tLoading); var e = { status: a, text: d }; y("UpdateStatus", e), a = e.status, d = e.text, b.preloader.html(d), b.preloader.find("a").on("click", function(a) { a.stopImmediatePropagation() }), b.container.addClass("mfp-s-" + a), c = a } }, _checkIfClose: function(c) { if (!a(c).hasClass(s)) { var d = b.st.closeOnContentClick, e = b.st.closeOnBgClick; if (d && e) return !0; if (!b.content || a(c).hasClass("mfp-close") || b.preloader && c === b.preloader[0]) return !0; if (c === b.content[0] || a.contains(b.content[0], c)) { if (d) return !0 } else if (e && a.contains(document, c)) return !0; return !1 } }, _addClassToMFP: function(a) { b.bgOverlay.addClass(a), b.wrap.addClass(a) }, _removeClassFromMFP: function(a) { this.bgOverlay.removeClass(a), b.wrap.removeClass(a) }, _hasScrollBar: function(a) { return (b.isIE7 ? d.height() : document.body.scrollHeight) > (a || v.height()) }, _setFocus: function() { (b.st.focus ? b.content.find(b.st.focus).eq(0) : b.wrap).focus() }, _onFocusIn: function(c) { return c.target === b.wrap[0] || a.contains(b.wrap[0], c.target) ? void 0 : (b._setFocus(), !1) }, _parseMarkup: function(b, c, d) { var e; d.data && (c = a.extend(d.data, c)), y(l, [b, c, d]), a.each(c, function(c, d) { if (void 0 === d || d === !1) return !0; if (e = c.split("_"), e.length > 1) { var f = b.find(p + "-" + e[0]); if (f.length > 0) { var g = e[1]; "replaceWith" === g ? f[0] !== d[0] && f.replaceWith(d) : "img" === g ? f.is("img") ? f.attr("src", d) : f.replaceWith(a("").attr("src", d).attr("class", f.attr("class"))) : f.attr(e[1], d) } } else b.find(p + "-" + c).html(d) }) }, _getScrollbarSize: function() { if (void 0 === b.scrollbarSize) { var a = document.createElement("div"); a.style.cssText = "width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;", document.body.appendChild(a), b.scrollbarSize = a.offsetWidth - a.clientWidth, document.body.removeChild(a) } return b.scrollbarSize } }, a.magnificPopup = { instance: null, proto: t.prototype, modules: [], open: function(b, c) { return A(), b = b ? a.extend(!0, {}, b) : {}, b.isObj = !0, b.index = c || 0, this.instance.open(b) }, close: function() { return a.magnificPopup.instance && a.magnificPopup.instance.close() }, registerModule: function(b, c) { c.options && (a.magnificPopup.defaults[b] = c.options), a.extend(this.proto, c.proto), this.modules.push(b) }, defaults: { disableOn: 0, key: null, midClick: !1, mainClass: "", preloader: !0, focus: "", closeOnContentClick: !1, closeOnBgClick: !0, closeBtnInside: !0, showCloseBtn: !0, enableEscapeKey: !0, modal: !1, alignTop: !1, removalDelay: 0, prependTo: null, fixedContentPos: "auto", fixedBgPos: "auto", overflowY: "auto", closeMarkup: '', tClose: "Close (Esc)", tLoading: "Loading...", autoFocusLast: !0 } }, a.fn.magnificPopup = function(c) { A(); var d = a(this); if ("string" == typeof c) if ("open" === c) { var e, f = u ? d.data("magnificPopup") : d[0].magnificPopup, g = parseInt(arguments[1], 10) || 0; f.items ? e = f.items[g] : (e = d, f.delegate && (e = e.find(f.delegate)), e = e.eq(g)), b._openClick({ mfpEl: e }, d, f) } else b.isOpen && b[c].apply(b, Array.prototype.slice.call(arguments, 1)); else c = a.extend(!0, {}, c), u ? d.data("magnificPopup", c) : d[0].magnificPopup = c, b.addGroup(d, c); return d }; var C, D, E, F = "inline", G = function() { E && (D.after(E.addClass(C)).detach(), E = null) }; a.magnificPopup.registerModule(F, { options: { hiddenClass: "hide", markup: "", tNotFound: "Content not found" }, proto: { initInline: function() { b.types.push(F), w(h + "." + F, function() { G() }) }, getInline: function(c, d) { if (G(), c.src) { var e = b.st.inline, f = a(c.src); if (f.length) { var g = f[0].parentNode; g && g.tagName && (D || (C = e.hiddenClass, D = x(C), C = "mfp-" + C), E = f.after(D).detach().removeClass(C)), b.updateStatus("ready") } else b.updateStatus("error", e.tNotFound), f = a("
"); return c.inlineElement = f, f } return b.updateStatus("ready"), b._parseMarkup(d, {}, c), d } } }); var H, I = "ajax", J = function() { H && a(document.body).removeClass(H) }, K = function() { J(), b.req && b.req.abort() }; a.magnificPopup.registerModule(I, { options: { settings: null, cursor: "mfp-ajax-cur", tError: 'The content could not be loaded.' }, proto: { initAjax: function() { b.types.push(I), H = b.st.ajax.cursor, w(h + "." + I, K), w("BeforeChange." + I, K) }, getAjax: function(c) { H && a(document.body).addClass(H), b.updateStatus("loading"); var d = a.extend({ url: c.src, success: function(d, e, f) { var g = { data: d, xhr: f }; y("ParseAjax", g), b.appendContent(a(g.data), I), c.finished = !0, J(), b._setFocus(), setTimeout(function() { b.wrap.addClass(q) }, 16), b.updateStatus("ready"), y("AjaxContentAdded") }, error: function() { J(), c.finished = c.loadError = !0, b.updateStatus("error", b.st.ajax.tError.replace("%url%", c.src)) } }, b.st.ajax.settings); return b.req = a.ajax(d), "" } } }); var L, M = function(c) { if (c.data && void 0 !== c.data.title) return c.data.title; var d = b.st.image.titleSrc; if (d) { if (a.isFunction(d)) return d.call(b, c); if (c.el) return c.el.attr(d) || "" } return "" }; a.magnificPopup.registerModule("image", { options: { markup: '
', cursor: "mfp-zoom-out-cur", titleSrc: "title", verticalFit: !0, tError: 'The image could not be loaded.' }, proto: { initImage: function() { var c = b.st.image, d = ".image"; b.types.push("image"), w(m + d, function() { "image" === b.currItem.type && c.cursor && a(document.body).addClass(c.cursor) }), w(h + d, function() { c.cursor && a(document.body).removeClass(c.cursor), v.off("resize" + p) }), w("Resize" + d, b.resizeImage), b.isLowIE && w("AfterChange", b.resizeImage) }, resizeImage: function() { var a = b.currItem; if (a && a.img && b.st.image.verticalFit) { var c = 0; b.isLowIE && (c = parseInt(a.img.css("padding-top"), 10) + parseInt(a.img.css("padding-bottom"), 10)), a.img.css("max-height", b.wH - c) } }, _onImageHasSize: function(a) { a.img && (a.hasSize = !0, L && clearInterval(L), a.isCheckingImgSize = !1, y("ImageHasSize", a), a.imgHidden && (b.content && b.content.removeClass("mfp-loading"), a.imgHidden = !1)) }, findImageSize: function(a) { var c = 0, d = a.img[0], e = function(f) { L && clearInterval(L), L = setInterval(function() { return d.naturalWidth > 0 ? void b._onImageHasSize(a) : (c > 200 && clearInterval(L), c++, void(3 === c ? e(10) : 40 === c ? e(50) : 100 === c && e(500))) }, f) }; e(1) }, getImage: function(c, d) { var e = 0, f = function() { c && (c.img[0].complete ? (c.img.off(".mfploader"), c === b.currItem && (b._onImageHasSize(c), b.updateStatus("ready")), c.hasSize = !0, c.loaded = !0, y("ImageLoadComplete")) : (e++, 200 > e ? setTimeout(f, 100) : g())) }, g = function() { c && (c.img.off(".mfploader"), c === b.currItem && (b._onImageHasSize(c), b.updateStatus("error", h.tError.replace("%url%", c.src))), c.hasSize = !0, c.loaded = !0, c.loadError = !0) }, h = b.st.image, i = d.find(".mfp-img"); if (i.length) { var j = document.createElement("img"); j.className = "mfp-img", c.el && c.el.find("img").length && (j.alt = c.el.find("img").attr("alt")), c.img = a(j).on("load.mfploader", f).on("error.mfploader", g), j.src = c.src, i.is("img") && (c.img = c.img.clone()), j = c.img[0], j.naturalWidth > 0 ? c.hasSize = !0 : j.width || (c.hasSize = !1) } return b._parseMarkup(d, { title: M(c), img_replaceWith: c.img }, c), b.resizeImage(), c.hasSize ? (L && clearInterval(L), c.loadError ? (d.addClass("mfp-loading"), b.updateStatus("error", h.tError.replace("%url%", c.src))) : (d.removeClass("mfp-loading"), b.updateStatus("ready")), d) : (b.updateStatus("loading"), c.loading = !0, c.hasSize || (c.imgHidden = !0, d.addClass("mfp-loading"), b.findImageSize(c)), d) } } }); var N, O = function() { return void 0 === N && (N = void 0 !== document.createElement("p").style.MozTransform), N }; a.magnificPopup.registerModule("zoom", { options: { enabled: !1, easing: "ease-in-out", duration: 300, opener: function(a) { return a.is("img") ? a : a.find("img") } }, proto: { initZoom: function() { var a, c = b.st.zoom, d = ".zoom"; if (c.enabled && b.supportsTransition) { var e, f, g = c.duration, j = function(a) { var b = a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"), d = "all " + c.duration / 1e3 + "s " + c.easing, e = { position: "fixed", zIndex: 9999, left: 0, top: 0, "-webkit-backface-visibility": "hidden" }, f = "transition"; return e["-webkit-" + f] = e["-moz-" + f] = e["-o-" + f] = e[f] = d, b.css(e), b }, k = function() { b.content.css("visibility", "visible") }; w("BuildControls" + d, function() { if (b._allowZoom()) { if (clearTimeout(e), b.content.css("visibility", "hidden"), a = b._getItemToZoom(), !a) return void k(); f = j(a), f.css(b._getOffset()), b.wrap.append(f), e = setTimeout(function() { f.css(b._getOffset(!0)), e = setTimeout(function() { k(), setTimeout(function() { f.remove(), a = f = null, y("ZoomAnimationEnded") }, 16) }, g) }, 16) } }), w(i + d, function() { if (b._allowZoom()) { if (clearTimeout(e), b.st.removalDelay = g, !a) { if (a = b._getItemToZoom(), !a) return; f = j(a) } f.css(b._getOffset(!0)), b.wrap.append(f), b.content.css("visibility", "hidden"), setTimeout(function() { f.css(b._getOffset()) }, 16) } }), w(h + d, function() { b._allowZoom() && (k(), f && f.remove(), a = null) }) } }, _allowZoom: function() { return "image" === b.currItem.type }, _getItemToZoom: function() { return b.currItem.hasSize ? b.currItem.img : !1 }, _getOffset: function(c) { var d; d = c ? b.currItem.img : b.st.zoom.opener(b.currItem.el || b.currItem); var e = d.offset(), f = parseInt(d.css("padding-top"), 10), g = parseInt(d.css("padding-bottom"), 10); e.top -= a(window).scrollTop() - f; var h = { width: d.width(), height: (u ? d.innerHeight() : d[0].offsetHeight) - g - f }; return O() ? h["-moz-transform"] = h.transform = "translate(" + e.left + "px," + e.top + "px)" : (h.left = e.left, h.top = e.top), h } } }); var P = "iframe", Q = "//about:blank", R = function(a) { if (b.currTemplate[P]) { var c = b.currTemplate[P].find("iframe"); c.length && (a || (c[0].src = Q), b.isIE8 && c.css("display", a ? "block" : "none")) } }; a.magnificPopup.registerModule(P, { options: { markup: '
', srcAction: "iframe_src", patterns: { youtube: { index: "youtube.com", id: "v=", src: "//www.youtube.com/embed/%id%?autoplay=1" }, vimeo: { index: "vimeo.com/", id: "/", src: "//player.vimeo.com/video/%id%?autoplay=1" }, gmaps: { index: "//maps.google.", src: "%id%&output=embed" } } }, proto: { initIframe: function() { b.types.push(P), w("BeforeChange", function(a, b, c) { b !== c && (b === P ? R() : c === P && R(!0)) }), w(h + "." + P, function() { R() }) }, getIframe: function(c, d) { var e = c.src, f = b.st.iframe; a.each(f.patterns, function() { return e.indexOf(this.index) > -1 ? (this.id && (e = "string" == typeof this.id ? e.substr(e.lastIndexOf(this.id) + this.id.length, e.length) : this.id.call(this, e)), e = this.src.replace("%id%", e), !1) : void 0 }); var g = {}; return f.srcAction && (g[f.srcAction] = e), b._parseMarkup(d, g, c), b.updateStatus("ready"), d } } }); var S = function(a) { var c = b.items.length; return a > c - 1 ? a - c : 0 > a ? c + a : a }, T = function(a, b, c) { return a.replace(/%curr%/gi, b + 1).replace(/%total%/gi, c) }; a.magnificPopup.registerModule("gallery", { options: { enabled: !1, arrowMarkup: '', preload: [0, 2], navigateByImgClick: !0, arrows: !0, tPrev: "Previous (Left arrow key)", tNext: "Next (Right arrow key)", tCounter: "%curr% of %total%" }, proto: { initGallery: function() { var c = b.st.gallery, e = ".mfp-gallery"; return b.direction = !0, c && c.enabled ? (f += " mfp-gallery", w(m + e, function() { c.navigateByImgClick && b.wrap.on("click" + e, ".mfp-img", function() { return b.items.length > 1 ? (b.next(), !1) : void 0 }), d.on("keydown" + e, function(a) { 37 === a.keyCode ? b.prev() : 39 === a.keyCode && b.next() }) }), w("UpdateStatus" + e, function(a, c) { c.text && (c.text = T(c.text, b.currItem.index, b.items.length)) }), w(l + e, function(a, d, e, f) { var g = b.items.length; e.counter = g > 1 ? T(c.tCounter, f.index, g) : "" }), w("BuildControls" + e, function() { if (b.items.length > 1 && c.arrows && !b.arrowLeft) { var d = c.arrowMarkup, e = b.arrowLeft = a(d.replace(/%title%/gi, c.tPrev).replace(/%dir%/gi, "left")).addClass(s), f = b.arrowRight = a(d.replace(/%title%/gi, c.tNext).replace(/%dir%/gi, "right")).addClass(s); e.click(function() { b.prev() }), f.click(function() { b.next() }), b.container.append(e.add(f)) } }), w(n + e, function() { b._preloadTimeout && clearTimeout(b._preloadTimeout), b._preloadTimeout = setTimeout(function() { b.preloadNearbyImages(), b._preloadTimeout = null }, 16) }), void w(h + e, function() { d.off(e), b.wrap.off("click" + e), b.arrowRight = b.arrowLeft = null })) : !1 }, next: function() { b.direction = !0, b.index = S(b.index + 1), b.updateItemHTML() }, prev: function() { b.direction = !1, b.index = S(b.index - 1), b.updateItemHTML() }, goTo: function(a) { b.direction = a >= b.index, b.index = a, b.updateItemHTML() }, preloadNearbyImages: function() { var a, c = b.st.gallery.preload, d = Math.min(c[0], b.items.length), e = Math.min(c[1], b.items.length); for (a = 1; a <= (b.direction ? e : d); a++) b._preloadItem(b.index + a); for (a = 1; a <= (b.direction ? d : e); a++) b._preloadItem(b.index - a) }, _preloadItem: function(c) { if (c = S(c), !b.items[c].preloaded) { var d = b.items[c]; d.parsed || (d = b.parseEl(c)), y("LazyLoad", d), "image" === d.type && (d.img = a('').on("load.mfploader", function() { d.hasSize = !0 }).on("error.mfploader", function() { d.hasSize = !0, d.loadError = !0, y("LazyLoadError", d) }).attr("src", d.src)), d.preloaded = !0 } } } }); var U = "retina"; a.magnificPopup.registerModule(U, { options: { replaceSrc: function(a) { return a.src.replace(/\.\w+$/, function(a) { return "@2x" + a }) }, ratio: 1 }, proto: { initRetina: function() { if (window.devicePixelRatio > 1) { var a = b.st.retina, c = a.ratio; c = isNaN(c) ? c() : c, c > 1 && (w("ImageHasSize." + U, function(a, b) { b.img.css({ "max-width": b.img[0].naturalWidth / c, width: "100%" }) }), w("ElementParse." + U, function(b, d) { d.src = a.replaceSrc(d, c) })) } } } }), A() }); (function($) { $(document).ready(function() { $("div[id$='edash_icon_class'], div[id^='edash_icon_class'], .edash_icon_class").each(function() { $(this).find(".custom-select").each(function() { $(this).wrap(""); $(this).find("option").each(function() { var $edashIcon = $(this).attr("value"); $(this).attr("data-tokens", $edashIcon).attr("data-icon", $edashIcon).attr("data-subtext", $edashIcon) }); $(this).addClass("selectpicker").attr("data-live-search", "true").attr("data-width", "100%").removeClass("custom-select") }) }) }) }(jQuery)); ! function($) { "use strict"; $.fn.meanmenu = function(e) { var n = { meanMenuTarget: jQuery(this), meanMenuContainer: ".edash-responsive-menu", meanMenuClose: "X", meanMenuCloseSize: "18px", meanMenuOpen: "", meanRevealPosition: "right", meanRevealPositionDistance: "0", meanRevealColour: "", meanScreenWidth: "480", meanNavPush: "", meanShowChildren: !0, meanExpandableChildren: !0, meanExpand: "+", meanContract: "-", meanRemoveAttrs: !1, onePage: !1, meanDisplay: "block", removeElements: "" }; e = $.extend(n, e); var a = window.innerWidth || document.documentElement.clientWidth; return this.each(function() { var n = e.meanMenuTarget, t = e.meanMenuContainer, r = e.meanMenuClose, i = e.meanMenuCloseSize, s = e.meanMenuOpen, u = e.meanRevealPosition, m = e.meanRevealPositionDistance, l = e.meanRevealColour, o = e.meanScreenWidth, c = e.meanNavPush, v = ".meanmenu-reveal", h = e.meanShowChildren, d = e.meanExpandableChildren, y = e.meanExpand, j = e.meanContract, Q = e.meanRemoveAttrs, f = e.onePage, g = e.meanDisplay, p = e.removeElements, C = !1; (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/Blackberry/i) || navigator.userAgent.match(/Windows Phone/i)) && (C = !0), (navigator.userAgent.match(/MSIE 8/i) || navigator.userAgent.match(/MSIE 7/i)) && jQuery("html").css("overflow-y", "scroll"); var w = "", x = function() { if ("center" === u) { var e = window.innerWidth || document.documentElement.clientWidth, n = e / 2 - 22 + "px"; w = "left:" + n + ";right:auto;", C ? jQuery(".meanmenu-reveal").animate({ left: n }) : jQuery(".meanmenu-reveal").css("left", n) } }, A = !1, E = !1; "right" === u && (w = "right:" + m + ";left:auto;"), "left" === u && (w = "left:" + m + ";right:auto;"), x(); var M = "", P = function() { M.html(jQuery(M).is(".meanmenu-reveal.meanclose") ? r : s) }, W = function() { jQuery(".mean-bar,.mean-push").remove(), jQuery(t).removeClass("mean-container"), jQuery(n).css("display", g), A = !1, E = !1, jQuery(p).removeClass("mean-remove") }, b = function() { var e = "background:" + l + ";color:" + l + ";" + w; if (o >= a) { jQuery(p).addClass("mean-remove"), E = !0, jQuery(t).addClass("mean-container"), jQuery(".mean-container").prepend(''); var r = jQuery(n).html(); jQuery(".mean-nav").html(r), Q && jQuery("nav.mean-nav ul, nav.mean-nav ul *").each(function() { jQuery(this).is(".mean-remove") ? jQuery(this).attr("class", "mean-remove") : jQuery(this).removeAttr("class"), jQuery(this).removeAttr("id") }), jQuery(n).before('
'), jQuery(".mean-push").css("margin-top", c), jQuery(n).hide(), jQuery(".meanmenu-reveal").show(), jQuery(v).html(s), M = jQuery(v), jQuery(".mean-nav ul").hide(), h ? d ? (jQuery(".mean-nav ul ul").each(function() { jQuery(this).children().length && jQuery(this, "li:first").parent().append('' + y + "") }), jQuery(".mean-expand").on("click", function(e) { e.preventDefault(), jQuery(this).hasClass("mean-clicked") ? (jQuery(this).text(y), jQuery(this).prev("ul").slideUp(300, function() {})) : (jQuery(this).text(j), jQuery(this).prev("ul").slideDown(300, function() {})), jQuery(this).toggleClass("mean-clicked") })) : jQuery(".mean-nav ul ul").show() : jQuery(".mean-nav ul ul").hide(), jQuery(".mean-nav ul li").last().addClass("mean-last"), M.removeClass("meanclose"), jQuery(M).click(function(e) { e.preventDefault(), A === !1 ? (M.css("text-align", "center"), M.css("text-indent", "0"), M.css("font-size", i), jQuery(".mean-nav ul:first").slideDown(), A = !0) : (jQuery(".mean-nav ul:first").slideUp(), A = !1), M.toggleClass("meanclose"), P(), jQuery(p).addClass("mean-remove") }), f && jQuery(".mean-nav ul > li > a:first-child").on("click", function() { jQuery(".mean-nav ul:first").slideUp(), A = !1, jQuery(M).toggleClass("meanclose").html(s) }) } else W() }; C || jQuery(window).resize(function() { a = window.innerWidth || document.documentElement.clientWidth, a > o, W(), o >= a ? (b(), x()) : W() }), jQuery(window).resize(function() { a = window.innerWidth || document.documentElement.clientWidth, C ? (x(), o >= a ? E === !1 && b() : W()) : (W(), o >= a && (b(), x())) }), b() }) } }(jQuery); (function($) { $.fn.appear = function(fn, options) { var settings = $.extend({ data: undefined, one: !0, accX: 0, accY: 0 }, options); return this.each(function() { var t = $(this); t.appeared = !1; if (!fn) { t.trigger('appear', settings.data); return } var w = $(window); var check = function() { if (!t.is(':visible')) { t.appeared = !1; return } var a = w.scrollLeft(); var b = w.scrollTop(); var o = t.offset(); var x = o.left; var y = o.top; var ax = settings.accX; var ay = settings.accY; var th = t.height(); var wh = w.height(); var tw = t.width(); var ww = w.width(); if (y + th + ay >= b && y <= b + wh + ay && x + tw + ax >= a && x <= a + ww + ax) { if (!t.appeared) t.trigger('appear', settings.data) } else { t.appeared = !1 } }; var modifiedFn = function() { t.appeared = !0; if (settings.one) { w.unbind('scroll', check); var i = $.inArray(check, $.fn.appear.checks); if (i >= 0) $.fn.appear.checks.splice(i, 1) } fn.apply(this, arguments) }; if (settings.one) t.one('appear', settings.data, modifiedFn); else t.bind('appear', settings.data, modifiedFn); w.scroll(check); $.fn.appear.checks.push(check); (check)() }) }; $.extend($.fn.appear, { checks: [], timeout: null, checkAll: function() { var length = $.fn.appear.checks.length; if (length > 0) while (length--)($.fn.appear.checks[length])(); }, run: function() { if ($.fn.appear.timeout) clearTimeout($.fn.appear.timeout); $.fn.appear.timeout = setTimeout($.fn.appear.checkAll, 20) } }); $.each(['append', 'prepend', 'after', 'before', 'attr', 'removeAttr', 'addClass', 'removeClass', 'toggleClass', 'remove', 'css', 'show', 'hide'], function(i, n) { var old = $.fn[n]; if (old) { $.fn[n] = function() { var r = old.apply(this, arguments); $.fn.appear.run(); return r } } }) })(jQuery); /*! odometer 0.4.8 */ (function() { var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G = [].slice; q = '', n = '' + q + "", d = '8' + n + "", g = '', c = "(,ddd).dd", h = /^\(?([^)]*)\)?(?:(.)(d+))?$/, i = 30, f = 2e3, a = 20, j = 2, e = .5, k = 1e3 / i, b = 1e3 / a, o = "transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", y = document.createElement("div").style, p = null != y.transition || null != y.webkitTransition || null != y.mozTransition || null != y.oTransition, w = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame, l = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver, s = function(a) { var b; return b = document.createElement("div"), b.innerHTML = a, b.children[0] }, v = function(a, b) { return a.className = a.className.replace(new RegExp("(^| )" + b.split(" ").join("|") + "( |$)", "gi"), " ") }, r = function(a, b) { return v(a, b), a.className += " " + b }, z = function(a, b) { var c; return null != document.createEvent ? (c = document.createEvent("HTMLEvents"), c.initEvent(b, !0, !0), a.dispatchEvent(c)) : void 0 }, u = function() { var a, b; return null != (a = null != (b = window.performance) && "function" == typeof b.now ? b.now() : void 0) ? a : +new Date }, x = function(a, b) { return null == b && (b = 0), b ? (a *= Math.pow(10, b), a += .5, a = Math.floor(a), a /= Math.pow(10, b)) : Math.round(a) }, A = function(a) { return 0 > a ? Math.ceil(a) : Math.floor(a) }, t = function(a) { return a - x(a) }, C = !1, (B = function() { var a, b, c, d, e; if (!C && null != window.jQuery) { for (C = !0, d = ["html", "text"], e = [], b = 0, c = d.length; c > b; b++) a = d[b], e.push(function(a) { var b; return b = window.jQuery.fn[a], window.jQuery.fn[a] = function(a) { var c; return null == a || null == (null != (c = this[0]) ? c.odometer : void 0) ? b.apply(this, arguments) : this[0].odometer.update(a) } }(a)); return e } })(), setTimeout(B, 0), m = function() { function a(b) { var c, d, e, g, h, i, l, m, n, o, p = this; if (this.options = b, this.el = this.options.el, null != this.el.odometer) return this.el.odometer; this.el.odometer = this, m = a.options; for (d in m) g = m[d], null == this.options[d] && (this.options[d] = g); null == (h = this.options).duration && (h.duration = f), this.MAX_VALUES = this.options.duration / k / j | 0, this.resetFormat(), this.value = this.cleanValue(null != (n = this.options.value) ? n : ""), this.renderInside(), this.render(); try { for (o = ["innerHTML", "innerText", "textContent"], i = 0, l = o.length; l > i; i++) e = o[i], null != this.el[e] && ! function(a) { return Object.defineProperty(p.el, a, { get: function() { var b; return "innerHTML" === a ? p.inside.outerHTML : null != (b = p.inside.innerText) ? b : p.inside.textContent }, set: function(a) { return p.update(a) } }) }(e) } catch (q) { c = q, this.watchForMutations() } } return a.prototype.renderInside = function() { return this.inside = document.createElement("div"), this.inside.className = "odometer-inside", this.el.innerHTML = "", this.el.appendChild(this.inside) }, a.prototype.watchForMutations = function() { var a, b = this; if (null != l) try { return null == this.observer && (this.observer = new l(function(a) { var c; return c = b.el.innerText, b.renderInside(), b.render(b.value), b.update(c) })), this.watchMutations = !0, this.startWatchingMutations() } catch (c) { a = c } }, a.prototype.startWatchingMutations = function() { return this.watchMutations ? this.observer.observe(this.el, { childList: !0 }) : void 0 }, a.prototype.stopWatchingMutations = function() { var a; return null != (a = this.observer) ? a.disconnect() : void 0 }, a.prototype.cleanValue = function(a) { var b; return "string" == typeof a && (a = a.replace(null != (b = this.format.radix) ? b : ".", ""), a = a.replace(/[.,]/g, ""), a = a.replace("", "."), a = parseFloat(a, 10) || 0), x(a, this.format.precision) }, a.prototype.bindTransitionEnd = function() { var a, b, c, d, e, f, g = this; if (!this.transitionEndBound) { for (this.transitionEndBound = !0, b = !1, e = o.split(" "), f = [], c = 0, d = e.length; d > c; c++) a = e[c], f.push(this.el.addEventListener(a, function() { return b ? !0 : (b = !0, setTimeout(function() { return g.render(), b = !1, z(g.el, "odometerdone") }, 0), !0) }, !1)); return f } }, a.prototype.resetFormat = function() { var a, b, d, e, f, g, i, j; if (a = null != (i = this.options.format) ? i : c, a || (a = "d"), d = h.exec(a), !d) throw new Error("Odometer: Unparsable digit format"); return j = d.slice(1, 4), g = j[0], f = j[1], b = j[2], e = (null != b ? b.length : void 0) || 0, this.format = { repeating: g, radix: f, precision: e } }, a.prototype.render = function(a) { var b, c, d, e, f, g, h; for (null == a && (a = this.value), this.stopWatchingMutations(), this.resetFormat(), this.inside.innerHTML = "", f = this.options.theme, b = this.el.className.split(" "), e = [], g = 0, h = b.length; h > g; g++) c = b[g], c.length && ((d = /^odometer-theme-(.+)$/.exec(c)) ? f = d[1] : /^odometer(-|$)/.test(c) || e.push(c)); return e.push("odometer"), p || e.push("odometer-no-transitions"), f ? e.push("odometer-theme-" + f) : e.push("odometer-auto-theme"), this.el.className = e.join(" "), this.ribbons = {}, this.formatDigits(a), this.startWatchingMutations() }, a.prototype.formatDigits = function(a) { var b, c, d, e, f, g, h, i, j, k; if (this.digits = [], this.options.formatFunction) for (d = this.options.formatFunction(a), j = d.split("").reverse(), f = 0, h = j.length; h > f; f++) c = j[f], c.match(/0-9/) ? (b = this.renderDigit(), b.querySelector(".odometer-value").innerHTML = c, this.digits.push(b), this.insertDigit(b)) : this.addSpacer(c); else for (e = !this.format.precision || !t(a) || !1, k = a.toString().split("").reverse(), g = 0, i = k.length; i > g; g++) b = k[g], "." === b && (e = !0), this.addDigit(b, e) }, a.prototype.update = function(a) { var b, c = this; return a = this.cleanValue(a), (b = a - this.value) ? (v(this.el, "odometer-animating-up odometer-animating-down odometer-animating"), b > 0 ? r(this.el, "odometer-animating-up") : r(this.el, "odometer-animating-down"), this.stopWatchingMutations(), this.animate(a), this.startWatchingMutations(), setTimeout(function() { return c.el.offsetHeight, r(c.el, "odometer-animating") }, 0), this.value = a) : void 0 }, a.prototype.renderDigit = function() { return s(d) }, a.prototype.insertDigit = function(a, b) { return null != b ? this.inside.insertBefore(a, b) : this.inside.children.length ? this.inside.insertBefore(a, this.inside.children[0]) : this.inside.appendChild(a) }, a.prototype.addSpacer = function(a, b, c) { var d; return d = s(g), d.innerHTML = a, c && r(d, c), this.insertDigit(d, b) }, a.prototype.addDigit = function(a, b) { var c, d, e, f; if (null == b && (b = !0), "-" === a) return this.addSpacer(a, null, "odometer-negation-mark"); if ("." === a) return this.addSpacer(null != (f = this.format.radix) ? f : ".", null, "odometer-radix-mark"); if (b) for (e = !1;;) { if (!this.format.repeating.length) { if (e) throw new Error("Bad odometer format without digits"); this.resetFormat(), e = !0 } if (c = this.format.repeating[this.format.repeating.length - 1], this.format.repeating = this.format.repeating.substring(0, this.format.repeating.length - 1), "d" === c) break; this.addSpacer(c) } return d = this.renderDigit(), d.querySelector(".odometer-value").innerHTML = a, this.digits.push(d), this.insertDigit(d) }, a.prototype.animate = function(a) { return p && "count" !== this.options.animation ? this.animateSlide(a) : this.animateCount(a) }, a.prototype.animateCount = function(a) { var c, d, e, f, g, h = this; if (d = +a - this.value) return f = e = u(), c = this.value, (g = function() { var i, j, k; return u() - f > h.options.duration ? (h.value = a, h.render(), void z(h.el, "odometerdone")) : (i = u() - e, i > b && (e = u(), k = i / h.options.duration, j = d * k, c += j, h.render(Math.round(c))), null != w ? w(g) : setTimeout(g, b)) })() }, a.prototype.getDigitCount = function() { var a, b, c, d, e, f; for (d = 1 <= arguments.length ? G.call(arguments, 0) : [], a = e = 0, f = d.length; f > e; a = ++e) c = d[a], d[a] = Math.abs(c); return b = Math.max.apply(Math, d), Math.ceil(Math.log(b + 1) / Math.log(10)) }, a.prototype.getFractionalDigitCount = function() { var a, b, c, d, e, f, g; for (e = 1 <= arguments.length ? G.call(arguments, 0) : [], b = /^\-?\d*\.(\d*?)0*$/, a = f = 0, g = e.length; g > f; a = ++f) d = e[a], e[a] = d.toString(), c = b.exec(e[a]), null == c ? e[a] = 0 : e[a] = c[1].length; return Math.max.apply(Math, e) }, a.prototype.resetDigits = function() { return this.digits = [], this.ribbons = [], this.inside.innerHTML = "", this.resetFormat() }, a.prototype.animateSlide = function(a) { var b, c, d, f, g, h, i, j, k, l, m, n, o, p, q, s, t, u, v, w, x, y, z, B, C, D, E; if (s = this.value, j = this.getFractionalDigitCount(s, a), j && (a *= Math.pow(10, j), s *= Math.pow(10, j)), d = a - s) { for (this.bindTransitionEnd(), f = this.getDigitCount(s, a), g = [], b = 0, m = v = 0; f >= 0 ? f > v : v > f; m = f >= 0 ? ++v : --v) { if (t = A(s / Math.pow(10, f - m - 1)), i = A(a / Math.pow(10, f - m - 1)), h = i - t, Math.abs(h) > this.MAX_VALUES) { for (l = [], n = h / (this.MAX_VALUES + this.MAX_VALUES * b * e), c = t; h > 0 && i > c || 0 > h && c > i;) l.push(Math.round(c)), c += n; l[l.length - 1] !== i && l.push(i), b++ } else l = function() { E = []; for (var a = t; i >= t ? i >= a : a >= i; i >= t ? a++ : a--) E.push(a); return E }.apply(this); for (m = w = 0, y = l.length; y > w; m = ++w) k = l[m], l[m] = Math.abs(k % 10); g.push(l) } for (this.resetDigits(), D = g.reverse(), m = x = 0, z = D.length; z > x; m = ++x) for (l = D[m], this.digits[m] || this.addDigit(" ", m >= j), null == (u = this.ribbons)[m] && (u[m] = this.digits[m].querySelector(".odometer-ribbon-inner")), this.ribbons[m].innerHTML = "", 0 > d && (l = l.reverse()), o = C = 0, B = l.length; B > C; o = ++C) k = l[o], q = document.createElement("div"), q.className = "odometer-value", q.innerHTML = k, this.ribbons[m].appendChild(q), o === l.length - 1 && r(q, "odometer-last-value"), 0 === o && r(q, "odometer-first-value"); return 0 > t && this.addDigit("-"), p = this.inside.querySelector(".odometer-radix-mark"), null != p && p.parent.removeChild(p), j ? this.addSpacer(this.format.radix, this.digits[j - 1], "odometer-radix-mark") : void 0 } }, a }(), m.options = null != (E = window.odometerOptions) ? E : {}, setTimeout(function() { var a, b, c, d, e; if (window.odometerOptions) { d = window.odometerOptions, e = []; for (a in d) b = d[a], e.push(null != (c = m.options)[a] ? (c = m.options)[a] : c[a] = b); return e } }, 0), m.init = function() { var a, b, c, d, e, f; if (null != document.querySelectorAll) { for (b = document.querySelectorAll(m.options.selector || ".odometer"), f = [], c = 0, d = b.length; d > c; c++) a = b[c], f.push(a.odometer = new m({ el: a, value: null != (e = a.innerText) ? e : a.textContent })); return f } }, null != (null != (F = document.documentElement) ? F.doScroll : void 0) && null != document.createEventObject ? (D = document.onreadystatechange, document.onreadystatechange = function() { return "complete" === document.readyState && m.options.auto !== !1 && m.init(), null != D ? D.apply(this, arguments) : void 0 }) : document.addEventListener("DOMContentLoaded", function() { return m.options.auto !== !1 ? m.init() : void 0 }, !1), "function" == typeof define && define.amd ? define([], function() { return m }) : "undefined" != typeof exports && null !== exports ? module.exports = m : window.Odometer = m }).call(this); /*! * Tipped - A Complete Javascript Tooltip Solution - v4.7.0 * (c) 2012-2019 Nick Stakenburg * * http://www.tippedjs.com * * @license: https://creativecommons.org/licenses/by/4.0 */ ! function(t, i) { "function" == typeof define && define.amd ? define(["jquery"], i) : "object" == typeof module && module.exports ? module.exports = i(require("jquery")) : t.Tipped = i(jQuery) }(this, function($) { var Tipped = {}; $.extend(Tipped, { version: "4.7.0" }), Tipped.Skins = { base: { afterUpdate: !1, ajax: {}, cache: !0, container: !1, containment: { selector: "viewport", padding: 5 }, close: !1, detach: !0, fadeIn: 200, fadeOut: 200, showDelay: 75, hideDelay: 25, hideAfter: !1, hideOn: { element: "mouseleave" }, hideOthers: !1, position: "top", inline: !1, offset: { x: 0, y: 0 }, onHide: !1, onShow: !1, padding: !0, radius: !0, shadow: !0, showOn: { element: "mousemove" }, size: "medium", spinner: !0, stem: !0, target: "element", voila: !0 }, reset: { ajax: !1, hideOn: { element: "mouseleave", tooltip: "mouseleave" }, showOn: { element: "mouseenter", tooltip: "mouseenter" } } }, $.each("dark light gray red green blue lightyellow lightblue lightpink".split(" "), function(t, i) { Tipped.Skins[i] = {} }); var Browser = (e = navigator.userAgent, { IE: !(!window.attachEvent || -1 !== e.indexOf("Opera")) && f("MSIE "), Opera: -1 < e.indexOf("Opera") && (!!window.opera && opera.version && parseFloat(opera.version()) || 7.55), WebKit: -1 < e.indexOf("AppleWebKit/") && f("AppleWebKit/"), Gecko: -1 < e.indexOf("Gecko") && -1 === e.indexOf("KHTML") && f("rv:"), MobileSafari: !!e.match(/Apple.*Mobile.*Safari/), Chrome: -1 < e.indexOf("Chrome") && f("Chrome/"), ChromeMobile: -1 < e.indexOf("CrMo") && f("CrMo/"), Android: -1 < e.indexOf("Android") && f("Android "), IEMobile: -1 < e.indexOf("IEMobile") && f("IEMobile/") }), e; function f(t) { var i = new RegExp(t + "([\\d.]+)").exec(e); return !i || parseFloat(i[1]) } var Support = (i = document.createElement("div"), j = "Webkit Moz O ms Khtml".split(" "), { css: { animation: m("animation"), transform: m("transform"), prefixed: function(t) { return m(t, "prefix") } }, shadow: m("boxShadow") && m("pointerEvents"), touch: function() { try { return !!("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch) } catch (t) { return !1 } }() }), i, j; function m(t, e) { var s = t.charAt(0).toUpperCase() + t.substr(1); return function(t, e) { for (var s in t) if (void 0 !== i.style[t[s]]) return "prefix" !== e || t[s]; return !1 }((t + " " + j.join(s + " ") + s).split(" "), e) } var _slice = Array.prototype.slice, _ = { wrap: function(t, i) { var e = t; return function() { var t = [$.proxy(e, this)].concat(_slice.call(arguments)); return i.apply(this, t) } }, isElement: function(t) { return t && 1 === t.nodeType }, isText: function(t) { return t && 3 === t.nodeType }, isDocumentFragment: function(t) { return t && 11 === t.nodeType }, delay: function(t, i) { var e = _slice.call(arguments, 2); return setTimeout(function() { return t.apply(t, e) }, i) }, defer: function(t) { return _.delay.apply(this, [t, 1].concat(_slice.call(arguments, 1))) }, pointer: function(t) { return { x: t.pageX, y: t.pageY } }, element: { isAttached: function(t) { var i = function(t) { for (var i = t; i && i.parentNode;) i = i.parentNode; return i }(t); return !(!i || !i.body) } } }; function degrees(t) { return 180 * t / Math.PI } function radian(t) { return t * Math.PI / 180 } function sec(t) { return 1 / Math.cos(t) } function sfcc(t) { return String.fromCharCode.apply(String, t.replace(" ", "").split(",")) } function deepExtend(t, i) { for (var e in i) i[e] && i[e].constructor && i[e].constructor === Object ? (t[e] = $.extend({}, t[e]) || {}, deepExtend(t[e], i[e])) : t[e] = i[e]; return t } var getUID = (U = 0, function(t) { for (t = t || "_tipped-uid-", U++; document.getElementById(t + U);) U++; return t + U }), U, Position = { positions: ["topleft", "topmiddle", "topright", "righttop", "rightmiddle", "rightbottom", "bottomright", "bottommiddle", "bottomleft", "leftbottom", "leftmiddle", "lefttop"], regex: { toOrientation: /^(top|left|bottom|right)(top|left|bottom|right|middle|center)$/, horizontal: /^(top|bottom)/, isCenter: /(middle|center)/, side: /^(top|bottom|left|right)/ }, toDimension: (X = { top: "height", left: "width", bottom: "height", right: "width" }, function(t) { return X[t] }), isCenter: function(t) { return !!t.toLowerCase().match(this.regex.isCenter) }, isCorner: function(t) { return !this.isCenter(t) }, getOrientation: function(t) { return t.toLowerCase().match(this.regex.horizontal) ? "horizontal" : "vertical" }, getSide: function(t) { var i = null, e = t.toLowerCase().match(this.regex.side); return e && e[1] && (i = e[1]), i }, split: function(t) { return t.toLowerCase().match(this.regex.toOrientation) }, _flip: { top: "bottom", bottom: "top", left: "right", right: "left" }, flip: function(t, i) { var e = this.split(t); return i ? this.inverseCornerPlane(this.flip(this.inverseCornerPlane(t))) : this._flip[e[1]] + e[2] }, inverseCornerPlane: function(t) { if (Position.isCorner(t)) { var i = this.split(t); return i[2] + i[1] } return t }, adjustOffsetBasedOnPosition: function(t, i, e) { var s = $.extend({}, t), o = { horizontal: "x", vertical: "y" }, n = Position.getOrientation(i); if (n === Position.getOrientation(e)) { if (Position.getSide(i) !== Position.getSide(e)) s[{ x: "y", y: "x" }[o[n]]] *= -1 } else { var r = s.x; s.x = s.y, s.y = r; var h = { top: { right: "x" }, bottom: { left: "x" }, left: { bottom: "y" }, right: { top: "y" } }[Position.getSide(i)][Position.getSide(e)]; h && (s[h] *= -1), s[o[Position.getOrientation(e)]] = 0 } return s }, getBoxFromPoints: function(t, i, e, s) { var o = Math.min(t, e), n = Math.max(t, e), r = Math.min(i, s), h = Math.max(i, s); return { left: o, top: r, width: Math.max(n - o, 0), height: Math.max(h - r, 0) } }, isPointWithinBox: function(t, i, e, s, o, n) { var r = this.getBoxFromPoints(e, s, o, n); return t >= r.left && t <= r.left + r.width && i >= r.top && i <= r.top + r.height }, isPointWithinBoxLayout: function(t, i, e) { return this.isPointWithinBox(t, i, e.position.left, e.position.top, e.position.left + e.dimensions.width, e.position.top + e.dimensions.height) }, getDistance: function(t, i, e, s) { return Math.sqrt(Math.pow(Math.abs(e - t), 2) + Math.pow(Math.abs(s - i), 2)) }, intersectsLine: function(t, i, e, s, o, n, r, h, a) { return a ? (u = ((l = r - o) * (i - n) - (c = h - n) * (t - o)) / (-l * (p = s - i) + (d = e - t) * c), 0 <= (f = (-p * (t - o) + d * (i - n)) / (-l * p + d * c)) && f <= 1 && 0 <= u && u <= 1 && { x: t + u * d, y: i + u * p }) : Sa(t, i, o, n, r, h) != Sa(e, s, o, n, r, h) && Sa(t, i, e, s, o, n) != Sa(t, i, e, s, r, h); var d, p, l, c, f, u } }, X; function Sa(t, i, e, s, o, n) { var r = (n - i) * (e - t) - (s - i) * (o - t); return 0 < r || !(r < 0) } var Bounds = { viewport: function() { return Browser.MobileSafari || Browser.Android && Browser.Gecko ? { width: window.innerWidth, height: window.innerHeight } : { height: $(window).height(), width: $(window).width() } } }, Mouse = { _buffer: { pageX: 0, pageY: 0 }, _dimensions: { width: 30, height: 30 }, _shift: { x: 2, y: 10 }, getPosition: function(t) { var i = this.getActualPosition(t); return { left: i.left - Math.round(.5 * this._dimensions.width) + this._shift.x, top: i.top - Math.round(.5 * this._dimensions.height) + this._shift.y } }, getActualPosition: function(t) { var i = t && "number" === $.type(t.pageX) ? t : this._buffer; return { left: i.pageX, top: i.pageY } }, getDimensions: function() { return this._dimensions } }, Color = (ub = { _default: "#000000", aqua: "#00ffff", black: "#000000", blue: "#0000ff", fuchsia: "#ff00ff", gray: "#808080", green: "#008000", lime: "#00ff00", maroon: "#800000", navy: "#000080", olive: "#808000", purple: "#800080", red: "#ff0000", silver: "#c0c0c0", teal: "#008080", white: "#ffffff", yellow: "#ffff00" }, { toRGB: function(t) { if (/^rgba?\(/.test(t)) return function(t) { return "#" + vb((t = t.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/))[1]) + vb(t[2]) + vb(t[3]) }(t); ub[t] && (t = ub[t]); var i = t.replace("#", ""); return /^(?:[0-9a-fA-F]{3}){1,2}$/.test(i) ? (3 == i.length && (i = i.charAt(0) + i.charAt(0) + i.charAt(1) + i.charAt(1) + i.charAt(2) + i.charAt(2)), "#" + i) : ub._default } }), ub; function vb(t) { return ("0" + parseInt(t).toString(16)).slice(-2) } function Spin() { return this.initialize.apply(this, _slice.call(arguments)) } function Visible() { return this.initialize.apply(this, _slice.call(arguments)) } Spin.supported = Support.css.transform && Support.css.animation, $.extend(Spin.prototype, { initialize: function() { this.options = $.extend({}, arguments[0] || {}), this.build(), this.start() }, build: function() { var t = 2 * (this.options.length + this.options.radius), i = { height: t, width: t }; this.element = $("
").addClass("tpd-spin").css(i), this.element.append(this._rotate = $("
").addClass("tpd-spin-rotate")), this.element.css({ "margin-left": -.5 * i.width, "margin-top": -.5 * i.height }); for (var e = this.options.lines, s = 0; s < e; s++) { var o, n; this._rotate.append(o = $("
").addClass("tpd-spin-frame").append(n = $("
").addClass("tpd-spin-line"))), n.css({ "background-color": this.options.color, width: this.options.width, height: this.options.length, "margin-left": -.5 * this.options.width, "border-radius": Math.round(.5 * this.options.width) }), o.css({ opacity: (1 / e * (s + 1)).toFixed(2) }); var r = {}; r[Support.css.prefixed("transform")] = "rotate(" + 360 / e * (s + 1) + "deg)", o.css(r) } }, start: function() { var t = {}; t[Support.css.prefixed("animation")] = "tpd-spin 1s infinite steps(" + this.options.lines + ")", this._rotate.css(t) }, stop: function() { var t = {}; t[Support.css.prefixed("animation")] = "none", this._rotate.css(t), this.element.detach() } }), $.extend(Visible.prototype, { initialize: function(t) { return t = "array" == $.type(t) ? t : [t], this.elements = t, this._restore = [], $.each(t, $.proxy(function(t, i) { var e = $(i).is(":visible"); e || $(i).show(), this._restore.push({ element: i, visible: e }) }, this)), this }, restore: function() { $.each(this._restore, function(t, i) { i.visible || $(i.element).show() }), this._restore = null } }); var AjaxCache = (Qb = [], { get: function(t) { for (var i = null, e = 0; e < Qb.length; e++) Qb[e] && Qb[e].url === t.url && (Qb[e].type || "GET").toUpperCase() === (t.type || "GET").toUpperCase() && $.param(Qb[e].data || {}) === $.param(t.data || {}) && (i = Qb[e]); return i }, set: function(t, i, e) { var s = this.get(t); s || (s = $.extend({ callbacks: {} }, t), Qb.push(s)), s.callbacks[i] = e }, remove: function(t) { for (var i = 0; i < Qb.length; i++) Qb[i] && Qb[i].url === t && delete Qb[i] }, clear: function() { Qb = [] } }), Qb, Voila = function(r) { function h(t, i, e) { if (!(this instanceof h)) return new h(t, i, e); var s = r.type(i), o = "object" === s ? i : {}, n = "function" === s ? i : "function" === r.type(e) && e; return this.options = r.extend({ method: "onload" }, o), this.deferred = new jQuery.Deferred, n && this.always(n), this._processed = 0, this.images = [], this._add(t), this } r.extend(h.prototype, { _add: function(t) { var i = "string" == r.type(t) ? r(t) : t instanceof jQuery || 0 < t.length ? t : [t]; r.each(i, r.proxy(function(t, i) { var e = r(), s = r(i); (e = s.is("img") ? e.add(s) : e.add(s.find("img"))).each(r.proxy(function(t, i) { this.images.push(new o(i, r.proxy(function(t) { this._progress(t) }, this), r.proxy(function(t) { this._progress(t) }, this), this.options)) }, this)) }, this)), this.images.length < 1 && setTimeout(r.proxy(function() { this._resolve() }, this)) }, abort: function() { this._progress = this._notify = this._reject = this._resolve = function() {}, r.each(this.images, function(t, i) { i.abort() }), this.images = [] }, _progress: function(t) { this._processed++, t.isLoaded || (this._broken = !0), this._notify(t), this._processed === this.images.length && this[this._broken ? "_reject" : "_resolve"]() }, _notify: function(t) { this.deferred.notify(this, t) }, _reject: function() { this.deferred.reject(this) }, _resolve: function() { this.deferred.resolve(this) }, always: function(t) { return this.deferred.always(t), this }, done: function(t) { return this.deferred.done(t), this }, fail: function(t) { return this.deferred.fail(t), this }, progress: function(t) { return this.deferred.progress(t), this } }); var o = function(n) { function t() { return this.initialize.apply(this, Array.prototype.slice.call(arguments)) } n.extend(t.prototype, { initialize: function() { this.options = n.extend({ test: function() {}, success: function() {}, timeout: function() {}, callAt: !1, intervals: [ [0, 0], [1e3, 10], [2e3, 50], [4e3, 100], [2e4, 500] ] }, arguments[0] || {}), this._test = this.options.test, this._success = this.options.success, this._timeout = this.options.timeout, this._ipos = 0, this._time = 0, this._delay = this.options.intervals[this._ipos][1], this._callTimeouts = [], this.poll(), this._createCallsAt() }, poll: function() { this._polling = setTimeout(n.proxy(function() { if (this._test()) this.success(); else { if (this._time += this._delay, this._time >= this.options.intervals[this._ipos][0]) { if (!this.options.intervals[this._ipos + 1]) return void("function" == n.type(this._timeout) && this._timeout()); this._ipos++, this._delay = this.options.intervals[this._ipos][1] } this.poll() } }, this), this._delay) }, success: function() { this.abort(), this._success() }, _createCallsAt: function() { this.options.callAt && n.each(this.options.callAt, n.proxy(function(t, i) { var e = i[0], s = i[1], o = setTimeout(n.proxy(function() { s() }, this), e); this._callTimeouts.push(o) }, this)) }, _stopCallTimeouts: function() { n.each(this._callTimeouts, function(t, i) { clearTimeout(i) }), this._callTimeouts = [] }, abort: function() { this._stopCallTimeouts(), this._polling && (clearTimeout(this._polling), this._polling = null) } }); function i() { return this.initialize.apply(this, Array.prototype.slice.call(arguments)) } return n.extend(i.prototype, { supports: { naturalWidth: "naturalWidth" in new Image }, initialize: function(t, i, e) { this.img = n(t)[0], this.successCallback = i, this.errorCallback = e, this.isLoaded = !1, this.options = n.extend({ method: "onload", pollFallbackAfter: 1e3 }, arguments[3] || {}), "onload" != this.options.method && this.supports.naturalWidth ? this.poll() : this.load() }, poll: function() { this._poll = new t({ test: n.proxy(function() { return 0 < this.img.naturalWidth }, this), success: n.proxy(function() { this.success() }, this), timeout: n.proxy(function() { this.error() }, this), callAt: [ [this.options.pollFallbackAfter, n.proxy(function() { this.load() }, this)] ] }) }, load: function() { this._loading = setTimeout(n.proxy(function() { var t = new Image; (this._onloadImage = t).onload = n.proxy(function() { t.onload = function() {}, this.supports.naturalWidth || (this.img.naturalWidth = t.width, this.img.naturalHeight = t.height, t.naturalWidth = t.width, t.naturalHeight = t.height), this.success() }, this), t.onerror = n.proxy(this.error, this), t.src = this.img.src }, this)) }, success: function() { this._calledSuccess || (this._calledSuccess = !0, this.abort(), this.waitForRender(n.proxy(function() { this.isLoaded = !0, this.successCallback(this) }, this))) }, error: function() { this._calledError || (this._calledError = !0, this.abort(), this._errorRenderTimeout = setTimeout(n.proxy(function() { this.errorCallback && this.errorCallback(this) }, this))) }, abort: function() { this.stopLoading(), this.stopPolling(), this.stopWaitingForRender() }, stopPolling: function() { this._poll && (this._poll.abort(), this._poll = null) }, stopLoading: function() { this._loading && (clearTimeout(this._loading), this._loading = null), this._onloadImage && (this._onloadImage.onload = function() {}, this._onloadImage.onerror = function() {}) }, waitForRender: function(t) { this._renderTimeout = setTimeout(t) }, stopWaitingForRender: function() { this._renderTimeout && (clearTimeout(this._renderTimeout), this._renderTimeout = null), this._errorRenderTimeout && (clearTimeout(this._errorRenderTimeout), this._errorRenderTimeout = null) } }), i }(jQuery); return h }(jQuery); Tipped.Behaviors = { hide: { showOn: { element: "mouseenter", tooltip: !1 }, hideOn: { element: "mouseleave", tooltip: "mouseenter" } }, mouse: { showOn: { element: "mouseenter", tooltip: !1 }, hideOn: { element: "mouseleave", tooltip: "mouseenter" }, target: "mouse", showDelay: 100, fadeIn: 0, hideDelay: 0, fadeOut: 0 }, sticky: { showOn: { element: "mouseenter", tooltip: "mouseenter" }, hideOn: { element: "mouseleave", tooltip: "mouseleave" }, showDelay: 150, target: "mouse", fixed: !0 } }; var Options = { create: Rc }, Oc, Pc; function Rc(t) { return Oc = Tipped.Skins.base, Pc = deepExtend($.extend({}, Oc), Tipped.Skins.reset), (Rc = Uc)(t) } function Sc(t) { return t.match(/^(top|left|bottom|right)$/) && (t += "middle"), t.replace("center", "middle").replace(" ", ""), t } function Tc(t) { var i; return t.behavior && (i = Tipped.Behaviors[t.behavior]) ? deepExtend($.extend({}, i), t) : t } function Uc(t) { var i = t.skin ? t.skin : Tooltips.options.defaultSkin, e = $.extend({}, Tipped.Skins[i] || {}); e.skin || (e.skin = Tooltips.options.defaultSkin || "dark"); var s, o = deepExtend($.extend({}, Pc), Tc(e)), n = deepExtend($.extend({}, o), Tc(t)); if (n.ajax) { Pc.ajax; var r = Oc.ajax; "boolean" === $.type(n.ajax) && (n.ajax = {}), n.ajax = deepExtend($.extend({}, r), n.ajax) } var h = h = n.position && n.position.target || "string" === $.type(n.position) && n.position || Pc.position && Pc.position.target || "string" === $.type(Pc.position) && Pc.position || Oc.position && Oc.position.target || Oc.position; h = Sc(h); var a, d = n.position && n.position.tooltip || Pc.position && Pc.position.tooltip || Oc.position && Oc.position.tooltip || Tooltips.Position.getInversedPosition(h); if (d = Sc(d), n.position ? "string" === $.type(n.position) ? (n.position = Sc(n.position), s = { target: n.position, tooltip: Tooltips.Position.getTooltipPositionFromTarget(n.position) }) : (s = { tooltip: d, target: h }, n.position.tooltip && (s.tooltip = Sc(n.position.tooltip)), n.position.target && (s.target = Sc(n.position.target))) : s = { tooltip: d, target: h }, Position.isCorner(s.target) && Position.getOrientation(s.target) !== Position.getOrientation(s.tooltip) && (s.target = Position.inverseCornerPlane(s.target)), "mouse" === n.target) { var p = Position.getOrientation(s.target); s.target = "horizontal" === p ? s.target.replace(/(left|right)/, "middle") : s.target.replace(/(top|bottom)/, "middle") } if (n.position = s, "mouse" === n.target ? (a = $.extend({}, Oc.offset), $.extend(a, Tipped.Skins.reset.offset || {}), t.skin && $.extend(a, (Tipped.Skins[t.skin] || Tipped.Skins[Tooltips.options.defaultSkin] || {}).offset || {}), a = Position.adjustOffsetBasedOnPosition(Oc.offset, Oc.position, s.target, !0), t.offset && (a = $.extend(a, t.offset || {}))) : a = { x: n.offset.x, y: n.offset.y }, n.offset = a, n.hideOn && "click-outside" === n.hideOn && (n.hideOnClickOutside = !0, n.hideOn = !1, n.fadeOut = 0), n.showOn) { var l = n.showOn; "string" === $.type(l) && (l = { element: l }), n.showOn = l } if (n.hideOn) { var c = n.hideOn; "string" === $.type(c) && (c = { element: c }), n.hideOn = c } return n.inline && "string" !== $.type(n.inline) && (n.inline = !1), Browser.IE && Browser.IE < 9 && $.extend(n, { fadeIn: 0, fadeOut: 0, hideDelay: 0 }), n.spinner && (Spin.supported ? "boolean" === $.type(n.spinner) && (n.spinner = Pc.spinner || Oc.spinner || {}) : n.spinner = !1), n.container || (n.container = document.body), n.containment && "string" === $.type(n.containment) && (n.containment = { selector: n.containment, padding: Pc.containment && Pc.containment.padding || Oc.padding && Oc.containment.padding }), n.shadow && (n.shadow = Support.shadow), n } function Skin() { this.initialize.apply(this, _slice.call(arguments)) } function Stem() { this.initialize.apply(this, _slice.call(arguments)) } $.extend(Skin.prototype, { initialize: function(t) { this.tooltip = t, this.element = t._skin; var i, e, s, o, n = this.tooltip.options; this.tooltip._tooltip[(n.shadow ? "remove" : "add") + "Class"]("tpd-no-shadow")[(n.radius ? "remove" : "add") + "Class"]("tpd-no-radius")[(n.stem ? "remove" : "add") + "Class"]("tpd-no-stem"); var r = Support.css.prefixed("borderTopLeftRadius"); this.element.append(i = $("
").addClass("tpd-frames").append($("
").addClass("tpd-frame").append($("
").addClass("tpd-backgrounds").append(e = $("
").addClass("tpd-background").append(s = $("
").addClass("tpd-background-content")))))).append(o = $("
").addClass("tpd-spinner")), e.css({ width: 999, height: 999, zoom: 1 }), this._css = { border: parseFloat(e.css("border-top-width")), radius: parseFloat(r ? e.css(r) : 0), padding: parseFloat(t._content.css("padding-top")), borderColor: e.css("border-top-color"), backgroundColor: s.css("background-color"), backgroundOpacity: s.css("opacity"), spinner: { dimensions: { width: o.innerWidth(), height: o.innerHeight() } } }, o.remove(), i.remove(), this._side = Position.getSide(t.options.position.tooltip) || "top", this._vars = {} }, destroy: function() { this.frames && ($.each("top right bottom left".split(" "), $.proxy(function(t, i) { this["stem_" + i] && this["stem_" + i].destroy() }, this)), this.frames.remove(), this.frames = null) }, build: function() { this.frames || (this.element.append(this.frames = $("
").addClass("tpd-frames")), $.each("top right bottom left".split(" "), $.proxy(function(t, i) { this.insertFrame(i) }, this)), this._spinner || this.tooltip._tooltip.append(this._spinner = $("
").addClass("tpd-spinner").hide().append($("
").addClass("tpd-spinner-spin")))) }, _frame: function() { var e, t = $("
").addClass("tpd-frame").append(e = $("
").addClass("tpd-backgrounds").append($("
").addClass("tpd-background-shadow"))).append($("
").addClass("tpd-shift-stem").append($("
").addClass("tpd-shift-stem-side tpd-shift-stem-side-before")).append($("
").addClass("tpd-stem")).append($("
").addClass("tpd-shift-stem-side tpd-shift-stem-side-after"))); return $.each("top right bottom left".split(" "), $.proxy(function(t, i) { e.append($("
").addClass("tpd-background-box tpd-background-box-" + i).append($("
").addClass("tpd-background-box-shift").append($("
").addClass("tpd-background-box-shift-further").append($("
").addClass("tpd-background").append($("
").addClass("tpd-background-title")).append($("
").addClass("tpd-background-content"))).append($("
").addClass("tpd-background tpd-background-loading")).append($("
").addClass("tpd-background-border-hack").hide())))) }, this)), t }(), _getFrame: function(t) { var i = this._frame.clone(); i.addClass("tpd-frame-" + t), i.find(".tpd-background-shadow").css({ "border-radius": this._css.radius }), this.tooltip.options.stem && i.find(".tpd-stem").attr("data-stem-position", t); var e = Math.max(this._css.radius - this._css.border, 0); i.find(".tpd-background-title").css({ "border-top-left-radius": e, "border-top-right-radius": e }), i.find(".tpd-background-content").css({ "border-bottom-left-radius": e, "border-bottom-right-radius": e }), i.find(".tpd-background-loading").css({ "border-radius": e }); var s = { backgroundColor: this._css.borderColor }; s["horizontal" === Position.getOrientation(t) ? "height" : "width"] = this._css.border + "px"; return s[{ top: "bottom", bottom: "top", left: "right", right: "left" }[t]] = 0, i.find(".tpd-shift-stem-side").css(s), i }, insertFrame: function(t) { var i = this["frame_" + t] = this._getFrame(t); if (this.frames.append(i), this.tooltip.options.stem) { var e = i.find(".tpd-stem"); this["stem_" + t] = new Stem(e, this, {}) } }, startLoading: function() { this.tooltip.supportsLoading && (this.build(), this._spinner || this.tooltip.is("resize-to-content") || this.setDimensions(this._css.spinner.dimensions), this._spinner && this._spinner.show()) }, stopLoading: function() { this.tooltip.supportsLoading && this._spinner && (this.build(), this._spinner.hide()) }, updateBackground: function() { var t = this._vars.frames[this._side], i = $.extend({}, t.background.dimensions); if (this.tooltip.title && !this.tooltip.is("loading")) { this.element.find(".tpd-background-title, .tpd-background-content").show(), this.element.find(".tpd-background").css({ "background-color": "transparent" }); var e = $.extend({}, i), s = Math.max(this._css.radius - this._css.border, 0), o = { "border-top-left-radius": s, "border-top-right-radius": s, "border-bottom-left-radius": s, "border-bottom-right-radius": s }, n = new Visible(this.tooltip._tooltip), r = this.tooltip._titleWrapper.innerHeight(); e.height -= r, this.element.find(".tpd-background-title").css({ height: r, width: i.width }), o["border-top-left-radius"] = 0, o["border-top-right-radius"] = 0, n.restore(), this.element.find(".tpd-background-content").css(e).css(o), this.element.find(".tpd-background-loading").css({ "background-color": this._css.backgroundColor }) } else this.element.find(".tpd-background-title, .tpd-background-content").hide(), this.element.find(".tpd-background").css({ "background-color": this._css.backgroundColor }); this._css.border && (this.element.find(".tpd-background").css({ "border-color": "transparent" }), this.element.find(".tpd-background-border-hack").css({ width: i.width, height: i.height, "border-radius": this._css.radius, "border-width": this._css.border, "border-color": this._css.borderColor }).show()) }, paint: function() { if (!this._paintedDimensions || this._paintedDimensions.width !== this._dimensions.width || this._paintedDimensions.height !== this._dimensions.height || this._paintedStemPosition !== this._stemPosition) { this._paintedDimensions = this._dimensions, this._paintedStemPosition = this._stemPosition, this.element.removeClass("tpd-visible-frame-top tpd-visible-frame-bottom tpd-visible-frame-left tpd-visible-frame-right").addClass("tpd-visible-frame-" + this._side); var t = this._vars.frames[this._side], i = $.extend({}, t.background.dimensions); this.element.find(".tpd-background").css(i), this.element.find(".tpd-background-shadow").css({ width: i.width + 2 * this._css.border, height: i.height + 2 * this._css.border }), this.updateBackground(), this.element.find(".tpd-background-box-shift, .tpd-background-box-shift-further").removeAttr("style"), this.element.add(this.frames).add(this.tooltip._tooltip).css(t.dimensions); var e = this._side, s = this._vars.frames[e], o = this.element.find(".tpd-frame-" + this._side), n = this._vars.frames[e].dimensions; o.css(n), o.find(".tpd-backgrounds").css($.extend({}, s.background.position, { width: n.width - s.background.position.left, height: n.height - s.background.position.top })); var r = Position.getOrientation(e); if (this.tooltip.options.stem) if (o.find(".tpd-shift-stem").css($.extend({}, s.shift.dimensions, s.shift.position)), "vertical" === r) { (a = o.find(".tpd-background-box-top, .tpd-background-box-bottom")).css({ height: this._vars.cut, width: this._css.border }), o.find(".tpd-background-box-bottom").css({ top: s.dimensions.height - this._vars.cut }).find(".tpd-background-box-shift").css({ "margin-top": -1 * s.dimensions.height + this._vars.cut }); var h = "right" === e ? s.dimensions.width - s.stemPx - this._css.border : 0; a.css({ left: h }).find(".tpd-background-box-shift").css({ "margin-left": -1 * h }), o.find(".tpd-background-box-" + ("left" == e ? "left" : "right")).hide(), "right" === e ? o.find(".tpd-background-box-left").css({ width: s.dimensions.width - s.stemPx - this._css.border }) : o.find(".tpd-background-box-right").css({ "margin-left": this._css.border }).find(".tpd-background-box-shift").css({ "margin-left": -1 * this._css.border }), (d = o.find(".tpd-background-box-" + this._side)).css({ height: s.dimensions.height - 2 * this._vars.cut, "margin-top": this._vars.cut }), d.find(".tpd-background-box-shift").css({ "margin-top": -1 * this._vars.cut }) } else { var a; (a = o.find(".tpd-background-box-left, .tpd-background-box-right")).css({ width: this._vars.cut, height: this._css.border }), o.find(".tpd-background-box-right").css({ left: s.dimensions.width - this._vars.cut }).find(".tpd-background-box-shift").css({ "margin-left": -1 * s.dimensions.width + this._vars.cut }); var d; h = "bottom" === e ? s.dimensions.height - s.stemPx - this._css.border : 0; a.css({ top: h }).find(".tpd-background-box-shift").css({ "margin-top": -1 * h }), o.find(".tpd-background-box-" + ("top" === e ? "top" : "bottom")).hide(), "bottom" === e ? o.find(".tpd-background-box-top").css({ height: s.dimensions.height - s.stemPx - this._css.border }) : o.find(".tpd-background-box-bottom").css({ "margin-top": this._css.border }).find(".tpd-background-box-shift").css({ "margin-top": -1 * this._css.border }), (d = o.find(".tpd-background-box-" + this._side)).css({ width: s.dimensions.width - 2 * this._vars.cut, "margin-left": this._vars.cut }), d.find(".tpd-background-box-shift").css({ "margin-left": -1 * this._vars.cut }) } var p = t.background, l = p.position, c = p.dimensions; this._spinner.css({ top: l.top + this._css.border + (.5 * c.height - .5 * this._css.spinner.dimensions.height), left: l.left + this._css.border + (.5 * c.width - .5 * this._css.spinner.dimensions.width) }) } }, getVars: function() { this._css.padding, this._css.radius; var r = this._css.border, t = this._vars.maxStemHeight || 0, h = $.extend({}, this._dimensions || {}), a = { frames: {}, dimensions: h, maxStemHeight: t }; a.cut = Math.max(this._css.border, this._css.radius) || 0; var d = { width: 0, height: 0 }, i = 0, p = 0; return this.tooltip.options.stem && (d = this.stem_top.getMath().dimensions.outside, i = this.stem_top._css.offset, p = Math.max(d.height - this._css.border, 0)), a.stemDimensions = d, a.stemOffset = i, $.each("top right bottom left".split(" "), $.proxy(function(t, i) { var e = "vertical" === Position.getOrientation(i), s = { width: h.width + 2 * r, height: h.height + 2 * r }, o = s[e ? "height" : "width"] - 2 * a.cut, n = { dimensions: s, stemPx: p, position: { top: 0, left: 0 }, background: { dimensions: $.extend({}, h), position: { top: 0, left: 0 } } }; switch ((a.frames[i] = n).dimensions[e ? "width" : "height"] += p, "top" !== i && "left" !== i || (n.background.position[i] += p), $.extend(n, { shift: { position: { top: 0, left: 0 }, dimensions: { width: e ? d.height : o, height: e ? o : d.height } } }), i) { case "top": case "bottom": n.shift.position.left += a.cut, "bottom" === i && (n.shift.position.top += s.height - r - p); break; case "left": case "right": n.shift.position.top += a.cut, "right" === i && (n.shift.position.left += s.width - r - p) } }, this)), a.connections = {}, $.each(Position.positions, $.proxy(function(t, i) { a.connections[i] = this.getConnectionLayout(i, a) }, this)), a }, setDimensions: function(t) { this.build(); var i = this._dimensions; i && i.width === t.width && i.height === t.height || (this._dimensions = t, this._vars = this.getVars()) }, setSide: function(t) { this._side = t, this._vars = this.getVars() }, getConnectionLayout: function(t, i) { var e = Position.getSide(t), s = Position.getOrientation(t), o = (i.dimensions, i.cut), n = this["stem_" + e], r = i.stemOffset, h = this.tooltip.options.stem ? n.getMath().dimensions.outside.width : 0, a = o + r + .5 * h, d = { stem: {} }, p = { left: 0, right: 0, up: 0, down: 0 }, l = { top: 0, left: 0 }, c = { top: 0, left: 0 }, f = i.frames[e]; a = 0; if ("horizontal" == s) { var u = f.dimensions.width; this.tooltip.options.stem && ((u = f.shift.dimensions.width) - h < 2 * r && (r = Math.floor(.5 * (u - h)) || 0), a = o + r + .5 * h); var m = u - 2 * r, g = r; switch ((v = Position.split(t))[2]) { case "left": p.right = m - h, l.left = a; break; case "middle": g += Math.round(.5 * m - .5 * h), p.left = g - r, p.right = g - r, l.left = c.left = Math.round(.5 * f.dimensions.width); break; case "right": g += m - h, p.left = m - h, l.left = f.dimensions.width - a, c.left = f.dimensions.width } "bottom" === v[1] && (l.top += f.dimensions.height, c.top += f.dimensions.height), $.extend(d.stem, { position: { left: g }, before: { width: g }, after: { left: g + h, width: u - g - h + 1 } }) } else { var b = f.dimensions.height; this.tooltip.options.stem && ((b = f.shift.dimensions.height) - h < 2 * r && (r = Math.floor(.5 * (b - h)) || 0), a = o + r + .5 * h); var v, _ = b - 2 * r, x = r; switch ((v = Position.split(t))[2]) { case "top": p.down = _ - h, l.top = a; break; case "middle": x += Math.round(.5 * _ - .5 * h), p.up = x - r, p.down = x - r, l.top = c.top = Math.round(.5 * f.dimensions.height); break; case "bottom": x += _ - h, p.up = _ - h, l.top = f.dimensions.height - a, c.top = f.dimensions.height } "right" === v[1] && (l.left += f.dimensions.width, c.left += f.dimensions.width), $.extend(d.stem, { position: { top: x }, before: { height: x }, after: { top: x + h, height: b - x - h + 1 } }) } return d.move = p, d.stem.connection = l, d.connection = c, d }, setStemPosition: function(t, i) { if (this._stemPosition !== t) { this._stemPosition = t; var e = Position.getSide(t); this.setSide(e) } this.tooltip.options.stem && this.setStemShift(t, i) }, setStemShift: function(t, i) { var e = this._shift, s = this._dimensions; if (!e || e.stemPosition !== t || e.shift.x !== i.x || e.shift.y !== i.y || !s || e.dimensions.width !== s.width || e.dimensions.height !== s.height) { this._shift = { stemPosition: t, shift: i, dimensions: s }; var o = Position.getSide(t), n = { horizontal: "x", vertical: "y" }[Position.getOrientation(t)], r = { x: { left: "left", width: "width" }, y: { left: "top", width: "height" } }[n], h = this["stem_" + o], a = deepExtend({}, this._vars.connections[t].stem); i && 0 !== i[n] && (a.before[r.width] += i[n], a.position[r.left] += i[n], a.after[r.left] += i[n], a.after[r.width] -= i[n]), h.element.css(a.position), h.element.siblings(".tpd-shift-stem-side-before").css(a.before), h.element.siblings(".tpd-shift-stem-side-after").css(a.after) } } }), $.extend(Stem.prototype, { initialize: function(t, i) { this.element = $(t), this.element[0] && (this.skin = i, this.element.removeClass("tpd-stem-reset"), this._css = $.extend({}, i._css, { width: this.element.innerWidth(), height: this.element.innerHeight(), offset: parseFloat(this.element.css("margin-left")), spacing: parseFloat(this.element.css("margin-top")) }), this.element.addClass("tpd-stem-reset"), this.options = $.extend({}, arguments[2] || {}), this._position = this.element.attr("data-stem-position") || "top", this._m = 100, this.build()) }, destroy: function() { this.element.html("") }, build: function() { this.destroy(); var t = this._css.backgroundColor, i = -1 < t.indexOf("rgba") && parseFloat(t.replace(/^.*,(.+)\)/, "$1")), e = i && i < 1; this._useTransform = e && Support.css.transform, this._css.border || (this._useTransform = !1), this[(this._useTransform ? "build" : "buildNo") + "Transform"]() }, buildTransform: function() { this.element.append(this.spacer = $("
").addClass("tpd-stem-spacer").append(this.downscale = $("
").addClass("tpd-stem-downscale").append(this.transform = $("
").addClass("tpd-stem-transform").append(this.first = $("
").addClass("tpd-stem-side").append(this.border = $("
").addClass("tpd-stem-border")).append($("
").addClass("tpd-stem-border-corner")).append($("
").addClass("tpd-stem-triangle")))))), this.transform.append(this.last = this.first.clone().addClass("tpd-stem-side-inversed")), this.sides = this.first.add(this.last); var t = this.getMath(), i = t.dimensions, e = this._m, s = Position.getSide(this._position); if (this.element.find(".tpd-stem-spacer").css({ width: l ? i.inside.height : i.inside.width, height: l ? i.inside.width : i.inside.height }), "top" === s || "left" === s) { var o = {}; "top" === s ? (o.bottom = 0, o.top = "auto") : "left" === s && (o.right = 0, o.left = "auto"), this.element.find(".tpd-stem-spacer").css(o) } this.transform.css({ width: i.inside.width * e, height: i.inside.height * e }); var n = Support.css.prefixed("transform"), r = { "background-color": "transparent", "border-bottom-color": this._css.backgroundColor, "border-left-width": .5 * i.inside.width * e, "border-bottom-width": i.inside.height * e }; r[n] = "translate(" + t.border * e + "px, 0)", this.element.find(".tpd-stem-triangle").css(r); var h = this._css.borderColor; alpha = -1 < h.indexOf("rgba") && parseFloat(h.replace(/^.*,(.+)\)/, "$1")), alpha && alpha < 1 ? h = (h.substring(0, h.lastIndexOf(",")) + ")").replace("rgba", "rgb") : alpha = 1; var a = { "background-color": "transparent", "border-right-width": t.border * e, width: t.border * e, "margin-left": -2 * t.border * e, "border-color": h, opacity: alpha }; a[n] = "skew(" + t.skew + "deg) translate(" + t.border * e + "px, " + -1 * this._css.border * e + "px)", this.element.find(".tpd-stem-border").css(a); h = this._css.borderColor; alpha = -1 < h.indexOf("rgba") && parseFloat(h.replace(/^.*,(.+)\)/, "$1")), alpha && alpha < 1 ? h = (h.substring(0, h.lastIndexOf(",")) + ")").replace("rgba", "rgb") : alpha = 1; var d = { width: t.border * e, "border-right-width": t.border * e, "border-right-color": h, background: h, opacity: alpha, "margin-left": -2 * t.border * e }; if (d[n] = "skew(" + t.skew + "deg) translate(" + t.border * e + "px, " + (i.inside.height - this._css.border) * e + "px)", this.element.find(".tpd-stem-border-corner").css(d), this.setPosition(this._position), 1 < e) { var p = {}; p[n] = "scale(" + 1 / e + "," + 1 / e + ")", this.downscale.css(p) } var l = /^(left|right)$/.test(this._position); this._css.border || this.element.find(".tpd-stem-border, .tpd-stem-border-corner").hide(), this.element.css({ width: l ? i.outside.height : i.outside.width, height: l ? i.outside.width : i.outside.height }) }, buildNoTransform: function() { this.element.append(this.spacer = $("
").addClass("tpd-stem-spacer").append($("
").addClass("tpd-stem-notransform").append($("
").addClass("tpd-stem-border").append($("
").addClass("tpd-stem-border-corner")).append($("
").addClass("tpd-stem-border-center-offset").append($("
").addClass("tpd-stem-border-center-offset-inverse").append($("
").addClass("tpd-stem-border-center"))))).append($("
").addClass("tpd-stem-triangle")))); var t = this.getMath(), i = t.dimensions, e = /^(left|right)$/.test(this._position), s = /^(bottom)$/.test(this._position), o = /^(right)$/.test(this._position), n = Position.getSide(this._position); if (this.element.css({ width: e ? i.outside.height : i.outside.width, height: e ? i.outside.width : i.outside.height }), this.element.find(".tpd-stem-notransform").add(this.element.find(".tpd-stem-spacer")).css({ width: e ? i.inside.height : i.inside.width, height: e ? i.inside.width : i.inside.height }), "top" === n || "left" === n) { var r = {}; "top" === n ? (r.bottom = 0, r.top = "auto") : "left" === n && (r.right = 0, r.left = "auto"), this.element.find(".tpd-stem-spacer").css(r) } this.element.find(".tpd-stem-border").css({ width: "100%", background: "transparent" }); var h = { opacity: 1 }; h[e ? "height" : "width"] = "100%", h[e ? "width" : "height"] = this._css.border, h[s ? "top" : "bottom"] = 0, $.extend(h, o ? { left: 0 } : { right: 0 }), this.element.find(".tpd-stem-border-corner").css(h); var a = { width: 0, "background-color": "transparent", opacity: 1 }, d = .5 * i.inside.width + "px solid transparent", p = { "background-color": "transparent" }; i.inside.width, t.border; if (e) { l = { left: "auto", top: "50%", "margin-top": -.5 * i.inside.width, "border-top": d, "border-bottom": d }; $.extend(a, l), a[o ? "right" : "left"] = 0, a[o ? "border-left" : "border-right"] = i.inside.height + "px solid " + this._css.borderColor, $.extend(p, l), p[o ? "border-left" : "border-right"] = i.inside.height + "px solid " + this._css.backgroundColor, p[o ? "right" : "left"] = t.top, p[o ? "left" : "right"] = "auto", this.element.find(".tpd-stem-border-center-offset").css({ "margin-left": -1 * this._css.border * (o ? -1 : 1) }).find(".tpd-stem-border-center-offset-inverse").css({ "margin-left": this._css.border * (o ? -1 : 1) }) } else { var l = { "margin-left": -.5 * i.inside.width, "border-left": d, "border-right": d }; $.extend(a, l), a[s ? "border-top" : "border-bottom"] = i.inside.height + "px solid " + this._css.borderColor, $.extend(p, l), p[s ? "border-top" : "border-bottom"] = i.inside.height + "px solid " + this._css.backgroundColor, p[s ? "bottom" : "top"] = t.top, p[s ? "top" : "bottom"] = "auto", this.element.find(".tpd-stem-border-center-offset").css({ "margin-top": -1 * this._css.border * (s ? -1 : 1) }).find(".tpd-stem-border-center-offset-inverse").css({ "margin-top": this._css.border * (s ? -1 : 1) }) } this.element.find(".tpd-stem-border-center").css(a), this.element.find(".tpd-stem-border-corner").css({ "background-color": this._css.borderColor }), this.element.find(".tpd-stem-triangle").css(p), this._css.border || this.element.find(".tpd-stem-border").hide() }, setPosition: function(t) { this._position = t, this.transform.attr("class", "tpd-stem-transform tpd-stem-transform-" + t) }, getMath: function() { var t = this._css.height, i = this._css.width, e = this._css.border; this._useTransform && Math.floor(i) % 2 && (i = Math.max(Math.floor(i) - 1, 0)); var s = degrees(Math.atan(.5 * i / t)), o = 90 - s, n = { width: i + 2 * (e / Math.cos((90 - o) * Math.PI / 180)), height: t + (c = e / Math.cos((90 - s) * Math.PI / 180)) }; Math.max(e, this._css.radius); t = n.height, i = .5 * n.width; var r = 90 - degrees(Math.atan(t / i)), h = e / Math.cos(r * Math.PI / 180), a = 180 * Math.atan(t / i) / Math.PI, d = -1 * (90 - a), p = 90 - a, l = e * Math.tan(p * Math.PI / 180), c = e / Math.cos((90 - p) * Math.PI / 180), f = $.extend({}, n), u = $.extend({}, n); u.height += this._css.spacing, u.height = Math.ceil(u.height); var m = !0; return n.width <= 2 * e && (m = !1), { enabled: m, outside: u, dimensions: { inside: f, outside: u }, top: c, border: h, skew: d, corner: l } } }); var Tooltips = { tooltips: {}, options: { defaultSkin: "dark", startingZIndex: 999999 }, _emptyClickHandler: function() {}, init: function() { this.reset(), this._resizeHandler = $.proxy(this.onWindowResize, this), $(window).bind("resize orientationchange", this._resizeHandler), Browser.MobileSafari && $("body").bind("click", this._emptyClickHandler) }, reset: function() { Tooltips.removeAll(), Delegations.removeAll(), this._resizeHandler && $(window).unbind("resize orientationchange", this._resizeHandler), Browser.MobileSafari && $("body").unbind("click", this._emptyClickHandler) }, onWindowResize: function() { this._resizeTimer && (window.clearTimeout(this._resizeTimer), this._resizeTimer = null), this._resizeTimer = _.delay($.proxy(function() { var t = this.getVisible(); $.each(t, function(t, i) { i.clearUpdatedTo(), i.position() }) }, this), 15) }, _getTooltips: function(t, i) { var e, s = [], o = []; if (_.isElement(t) ? (e = $(t).data("tipped-uids")) && (s = s.concat(e)) : $(t).each(function(t, i) { (e = $(i).data("tipped-uids")) && (s = s.concat(e)) }), !s[0] && !i) { var n = this.getTooltipByTooltipElement($(t).closest(".tpd-tooltip")[0]); n && n.element && (e = $(n.element).data("tipped-uids") || []) && (s = s.concat(e)) } return 0 < s.length && $.each(s, $.proxy(function(t, i) { var e; (e = this.tooltips[i]) && o.push(e) }, this)), o }, findElement: function(t) { var i = []; return _.isElement(t) && (i = this._getTooltips(t)), i[0] && i[0].element }, get: function(e) { var t = $.extend({ api: !1 }, arguments[1] || {}), s = []; return _.isElement(e) ? s = this._getTooltips(e) : e instanceof $ ? e.each($.proxy(function(t, i) { var e = this._getTooltips(i, !0); 0 < e.length && (s = s.concat(e)) }, this)) : "string" === $.type(e) && $.each(this.tooltips, function(t, i) { i.element && $(i.element).is(e) && s.push(i) }), t.api && $.each(s, function(t, i) { i.is("api", !0) }), s }, getTooltipByTooltipElement: function(e) { if (!e) return null; var s = null; return $.each(this.tooltips, function(t, i) { i.is("build") && i._tooltip[0] === e && (s = i) }), s }, getBySelector: function(e) { var s = []; return $.each(this.tooltips, function(t, i) { i.element && $(i.element).is(e) && s.push(i) }), s }, getNests: function() { var e = []; return $.each(this.tooltips, function(t, i) { i.is("nest") && e.push(i) }), e }, show: function(t) { $(this.get(t)).each(function(t, i) { i.show(!1, !0) }) }, hide: function(t) { $(this.get(t)).each(function(t, i) { i.hide() }) }, toggle: function(t) { $(this.get(t)).each(function(t, i) { i.toggle() }) }, hideAll: function(e) { $.each(this.getVisible(), function(t, i) { e && e === i || i.hide() }) }, refresh: function(t) { var i; i = t ? $.grep(this.get(t), function(t, i) { return t.is("visible") }) : this.getVisible(), $.each(i, function(t, i) { i.refresh() }) }, getVisible: function() { var e = []; return $.each(this.tooltips, function(t, i) { i.visible() && e.push(i) }), e }, isVisibleByElement: function(e) { var s = !1; return _.isElement(e) && $.each(this.getVisible() || [], function(t, i) { if (i.element === e) return !(s = !0) }), s }, getHighestTooltip: function() { var e, s = 0; return $.each(this.tooltips, function(t, i) { i.zIndex > s && (s = i.zIndex, e = i) }), e }, resetZ: function() { this.getVisible().length <= 1 && $.each(this.tooltips, function(t, i) { i.is("build") && !i.options.zIndex && i._tooltip.css({ zIndex: i.zIndex = +Tooltips.options.startingZIndex }) }) }, clearAjaxCache: function() { $.each(this.tooltips, $.proxy(function(t, i) { i.options.ajax && (i._cache && i._cache.xhr && (i._cache.xhr.abort(), i._cache.xhr = null), i.is("updated", !1), i.is("updating", !1), i.is("sanitized", !1)) }, this)), AjaxCache.clear() }, add: function(t) { this.tooltips[t.uid] = t }, remove: function(t) { var i = this._getTooltips(t); this.removeTooltips(i) }, removeTooltips: function(t) { t && $.each(t, $.proxy(function(t, i) { var e = i.uid; delete this.tooltips[e], i.remove() }, this)) }, removeDetached: function() { var t = this.getNests(), e = []; 0 < t.length && $.each(t, function(t, i) { i.is("detached") && (e.push(i), i.attach()) }), $.each(this.tooltips, $.proxy(function(t, i) { i.element && !_.element.isAttached(i.element) && this.remove(i.element) }, this)), $.each(e, function(t, i) { i.detach() }) }, removeAll: function() { $.each(this.tooltips, $.proxy(function(t, i) { i.element && this.remove(i.element) }, this)), this.tooltips = {} }, setDefaultSkin: function(t) { this.options.defaultSkin = t || "dark" }, setStartingZIndex: function(t) { this.options.startingZIndex = t || 0 } }; function Tooltip() { this.initialize.apply(this, _slice.call(arguments)) } Tooltips.Position = { inversedPosition: { left: "right", right: "left", top: "bottom", bottom: "top", middle: "middle", center: "center" }, getInversedPosition: function(t) { var i = Position.split(t), e = i[1], s = i[2], o = Position.getOrientation(t), n = $.extend({ horizontal: !0, vertical: !0 }, arguments[1] || {}); return "horizontal" === o ? (n.vertical && (e = this.inversedPosition[e]), n.horizontal && (s = this.inversedPosition[s])) : (n.vertical && (s = this.inversedPosition[s]), n.horizontal && (e = this.inversedPosition[e])), e + s }, getTooltipPositionFromTarget: function(t) { var i = Position.split(t); return this.getInversedPosition(i[1] + this.inversedPosition[i[2]]) } }, $.extend(Tooltip.prototype, { supportsLoading: Support.css.transform && Support.css.animation, initialize: function(element, content) { if (this.element = element, this.element) { var options; "object" !== $.type(content) || _.isElement(content) || _.isText(content) || _.isDocumentFragment(content) || content instanceof $ ? options = arguments[2] || {} : (options = content, content = null); var dataOptions = $(element).data("tipped-options"); dataOptions && (options = deepExtend($.extend({}, options), eval("({" + dataOptions + "})"))), this.options = Options.create(options), this._cache = { dimensions: { width: 0, height: 0 }, events: [], timers: {}, layouts: {}, is: {}, fnCallFn: "", updatedTo: {} }, this.queues = { showhide: $({}) }; var title = $(element).attr("title") || $(element).data("tipped-restore-title"); if (!content) { var dt = $(element).attr("data-tipped"); if (dt ? content = dt : title && (content = title), content) { var SCRIPT_REGEX = /)<[^<]*)*<\/script>/gi; content = content.replace(SCRIPT_REGEX, "") } } if (!(!content || content instanceof $ && !content[0]) || this.options.ajax && this.options.ajax.url || this.options.inline) { title && ($(element).data("tipped-restore-title", title), $(element)[0].setAttribute("title", "")), this.content = content, this.title = $(this.element).data("tipped-title"), "undefined" != $.type(this.options.title) && (this.title = this.options.title), this.zIndex = this.options.zIndex || +Tooltips.options.startingZIndex; var uids = $(element).data("tipped-uids"); uids = uids || []; var uid = getUID(); this.uid = uid, uids.push(uid), $(element).data("tipped-uids", uids); var parentTooltipElement = $(this.element).closest(".tpd-tooltip")[0], parentTooltip; parentTooltipElement && (parentTooltip = Tooltips.getTooltipByTooltipElement(parentTooltipElement)) && parentTooltip.is("nest", !0); var target = this.options.target; this.target = "mouse" === target ? this.element : "element" !== target && target ? _.isElement(target) ? target : target instanceof $ && target[0] ? target[0] : this.element : this.element, this.options.inline && (this.content = $("#" + this.options.inline)[0]), this.options.ajax && (this.__content = this.content), "function" === $.type(this.content) && (this._fn = this.content), this.preBuild(), Tooltips.add(this) } else this._aborted = !0 } }, remove: function() { this.unbind(), this.clearTimers(), this.restoreElementToMarker(), this.stopLoading(), this.abort(), this.is("build") && this._tooltip && (this._tooltip.remove(), this._tooltip = null); var t = $(this.element).data("tipped-uids") || [], i = $.inArray(this.uid, t); if (-1 < i && (t.splice(i, 1), $(this.element).data("tipped-uids", t)), t.length < 1) { var e, s = "tipped-restore-title"; (e = $(this.element).data(s)) && ("" != !$(this.element)[0].getAttribute("title") && $(this.element).attr("title", e), $(this.element).removeData(s)), $(this.element).removeData("tipped-uids") } var o = ($(this.element).attr("class") || "").replace(/(tpd-delegation-uid-)\d+/g, "").replace(/^\s\s*/, "").replace(/\s\s*$/, ""); $(this.element).attr("class", o) }, detach: function() { this.options.detach && !this.is("detached") && (this._tooltip && this._tooltip.detach(), this.is("detached", !0)) }, attach: function() { if (this.is("detached")) { var t; if ("string" === $.type(this.options.container)) { var i = this.target; "mouse" === i && (i = this.element), t = $($(i).closest(this.options.container).first()) } else t = $(this.options.container); t[0] || (t = $(document.body)), t.append(this._tooltip), this.is("detached", !1) } }, preBuild: function() { this.is("detached", !0); var t = { left: "-10000px", top: "-10000px", opacity: 0, zIndex: this.zIndex }; this._tooltip = $("
").addClass("tpd-tooltip").addClass("tpd-skin-" + this.options.skin).addClass("tpd-size-" + this.options.size).css(t).hide(), this.createPreBuildObservers() }, build: function() { this.is("build") || (this.attach(), this._tooltip.append(this._skin = $("
").addClass("tpd-skin")).append(this._contentWrapper = $("
").addClass("tpd-content-wrapper").append(this._contentSpacer = $("
").addClass("tpd-content-spacer").append(this._titleWrapper = $("
").addClass("tpd-title-wrapper").append(this._titleSpacer = $("
").addClass("tpd-title-spacer").append(this._titleRelative = $("
").addClass("tpd-title-relative").append(this._titleRelativePadder = $("
").addClass("tpd-title-relative-padder").append(this._title = $("
").addClass("tpd-title"))))).append(this._close = $("
").addClass("tpd-close").append($("
").addClass("tpd-close-icon").html("×")))).append(this._contentRelative = $("
").addClass("tpd-content-relative").append(this._contentRelativePadder = $("
").addClass("tpd-content-relative-padder").append(this._content = $("
").addClass("tpd-content"))).append(this._inner_close = $("
").addClass("tpd-close").append($("
").addClass("tpd-close-icon").html("×")))))), this.skin = new Skin(this), this._contentSpacer.css({ "border-radius": Math.max(this.skin._css.radius - this.skin._css.border, 0) }), this.createPostBuildObservers(), this.is("build", !0)) }, createPostBuildObservers: function() { this._tooltip.delegate(".tpd-close, .close-tooltip", "click", $.proxy(function(t) { t.stopPropagation(), t.preventDefault(), this.is("api", !1), this.hide(!0) }, this)) }, createPreBuildObservers: function() { this.bind(this.element, "mouseenter", this.setActive), this.bind(this._tooltip, Support.touch && Browser.MobileSafari ? "touchstart" : "mouseenter", this.setActive), this.bind(this.element, "mouseleave", function(t) { this.setIdle(t) }), this.bind(this._tooltip, "mouseleave", function(t) { this.setIdle(t) }), this.options.showOn && ($.each(this.options.showOn, $.proxy(function(t, i) { var e, s = !1; switch (t) { case "element": e = this.element, this.options.hideOn && this.options.showOn && "click" === this.options.hideOn.element && "click" === this.options.showOn.element && (s = !0, this.is("toggleable", s)); break; case "tooltip": e = this._tooltip; break; case "target": e = this.target } if (e && i) { var o = i; this.bind(e, o, "click" === i && s ? function(t) { this.is("api", !1), this.toggle() } : function(t) { this.is("api", !1), this.showDelayed() }) } }, this)), Support.touch && Browser.MobileSafari && this.bind(this._tooltip, "touchend", function() { this._tooltipTouchEndTime = (new Date).getTime() })), this.options.hideOn && $.each(this.options.hideOn, $.proxy(function(t, i) { var e; switch (t) { case "element": if (this.is("toggleable") && "click" === i) return; e = this.element; break; case "tooltip": e = this._tooltip; break; case "target": e = this.target } if (e && i) { var s = i; Support.touch && Browser.MobileSafari && /^(target|element)/.test(t) && /mouse(leave|out)/.test(s) ? this.bind(e, s, function(t) { if (this._tooltipTouchEndTime && /^mouse(leave|out)$/.test(t.type) && (new Date).getTime() - this._tooltipTouchEndTime < 450) return; this.is("api", !1), this.hideDelayed() }) : this.bind(e, s, function(t) { this.is("api", !1), this.hideDelayed() }) } }, this)), this.options.hideOnClickOutside && ($(this.element).addClass("tpd-hideOnClickOutside"), this.bind(document.documentElement, "click touchend", $.proxy(function(t) { if (this.visible()) { var i = $(t.target).closest(".tpd-tooltip, .tpd-hideOnClickOutside")[0]; (!i || i && i !== this._tooltip[0] && i !== this.element) && this.hide() } }, this))), "mouse" === this.options.target && this.bind(this.element, "mouseenter mousemove", $.proxy(function(t) { this._cache.event = t }, this)); var t = !1; this.options.showOn && "mouse" === this.options.target && !this.options.fixed && (t = !0), t && this.bind(this.element, "mousemove", function(t) { this.is("build") && (this.is("api", !1), this.position()) }) } }), $.extend(Tooltip.prototype, { stop: function() { this._tooltip && (this.queues.showhide.queue([]), this._tooltip.stop(1, 0)) }, showDelayed: function(t) { this.is("disabled") || (this.clearTimer("hide"), this.is("visible") || this.getTimer("show") || this.setTimer("show", $.proxy(function() { this.clearTimer("show"), this.show() }, this), this.options.showDelay || 1)) }, show: function() { if (this.clearTimer("hide"), !this.visible() && !this.is("disabled") && $(this.target).is(":visible")) { this.is("visible", !0), this.attach(), this.stop(); var t = this.queues.showhide; this.is("updated") || this.is("updating") || t.queue($.proxy(function(i) { this._onResizeDimensions = { width: 0, height: 0 }, this.update($.proxy(function(t) { if (t) return this.is("visible", !1), void this.detach(); i() }, this)) }, this)), t.queue($.proxy(function(t) { this.is("sanitized") ? (this.stopLoading(), this._contentWrapper.css({ visibility: "visible" }), this.is("resize-to-content", !0), t()) : (this._contentWrapper.css({ visibility: "hidden" }), this.startLoading(), this.sanitize($.proxy(function() { this.stopLoading(), this._contentWrapper.css({ visibility: "visible" }), this.is("resize-to-content", !0), t() }, this))) }, this)), t.queue($.proxy(function(t) { this.position(), this.raise(), t() }, this)), t.queue($.proxy(function(t) { if (this.is("updated") && "function" === $.type(this.options.onShow)) { var i = new Visible(this._tooltip); this.options.onShow(this._content[0], this.element), i.restore(), t() } else t() }, this)), t.queue($.proxy(function(t) { this._show(this.options.fadeIn, function() { t() }) }, this)) } }, _show: function(t, i) { t = ("number" === $.type(t) ? t : this.options.fadeIn) || 0, i = i || "function" == $.type(t) && t, this.options.hideOthers && Tooltips.hideAll(this), this._tooltip.fadeTo(t, 1, $.proxy(function() { i && i() }, this)) }, hideDelayed: function() { this.clearTimer("show"), this.getTimer("hide") || !this.visible() || this.is("disabled") || this.setTimer("hide", $.proxy(function() { this.clearTimer("hide"), this.hide() }, this), this.options.hideDelay || 1) }, hide: function(i, e) { if (this.clearTimer("show"), this.visible() && !this.is("disabled")) { this.is("visible", !1), this.stop(); var t = this.queues.showhide; t.queue($.proxy(function(t) { this.abort(), t() }, this)), t.queue($.proxy(function(t) { this._hide(i, t) }, this)), t.queue(function(t) { Tooltips.resetZ(), t() }), t.queue($.proxy(function(t) { this.clearUpdatedTo(), t() }, this)), "function" === $.type(this.options.afterHide) && this.is("updated") && t.queue($.proxy(function(t) { this.options.afterHide(this._content[0], this.element), t() }, this)), this.options.cache || !this.options.ajax && !this._fn || t.queue($.proxy(function(t) { this.is("updated", !1), this.is("updating", !1), this.is("sanitized", !1), t() }, this)), "function" === $.type(e) && t.queue(function(t) { e(), t() }), t.queue($.proxy(function(t) { this.detach(), t() }, this)) } }, _hide: function(t, i) { i = i || "function" === $.type(t) && t, this.attach(), this._tooltip.fadeTo(t ? 0 : this.options.fadeOut, 0, $.proxy(function() { this.stopLoading(), this.is("resize-to-content", !1), this._tooltip.hide(), i && i() }, this)) }, toggle: function() { this.is("disabled") || this[this.visible() ? "hide" : "show"]() }, raise: function() { if (this.is("build") && !this.options.zIndex) { var t = Tooltips.getHighestTooltip(); t && t !== this && this.zIndex <= t.zIndex && (this.zIndex = t.zIndex + 1, this._tooltip.css({ "z-index": this.zIndex }), this._tooltipShadow && (this._tooltipShadow.css({ "z-index": this.zIndex }), this.zIndex = t.zIndex + 2, this._tooltip.css({ "z-index": this.zIndex }))) } } }), $.extend(Tooltip.prototype, { createElementMarker: function(t) { !this.elementMarker && this.content && _.element.isAttached(this.content) && ($(this.content).data("tpd-restore-inline-display", $(this.content).css("display")), this.elementMarker = $("
").hide(), $(this.content).before($(this.elementMarker).hide())) }, restoreElementToMarker: function() { var t; this.elementMarker && this.content && ((t = $(this.content).data("tpd-restore-inline-display")) && $(this.content).css({ display: t }), $(this.elementMarker).before(this.content).remove()) }, startLoading: function() { this.is("loading") || (this.build(), this.is("loading", !0), this.options.spinner && (this._tooltip.addClass("tpd-is-loading"), this.skin.startLoading(), this.is("resize-to-content") || (this.position(), this.raise(), this._show()))) }, stopLoading: function() { this.build(), this.is("loading", !1), this.options.spinner && (this._tooltip.removeClass("tpd-is-loading"), this.skin.stopLoading()) }, abort: function() { this.abortAjax(), this.abortSanitize(), this.is("refreshed-before-sanitized", !1) }, abortSanitize: function() { this._cache.voila && (this._cache.voila.abort(), this._cache.voila = null) }, abortAjax: function() { this._cache.xhr && (this._cache.xhr.abort(), this._cache.xhr = null, this.is("updated", !1), this.is("updating", !1)) }, update: function(n) { if (!this.is("updating")) { this.is("updating", !0), this.build(); var t = this.options.inline ? "inline" : this.options.ajax ? "ajax" : _.isElement(this.content) || _.isText(this.content) || _.isDocumentFragment(this.content) ? "element" : this._fn ? "function" : "html"; switch (this._contentWrapper.css({ visibility: "hidden" }), t) { case "html": case "element": case "inline": if (this.is("updated")) return void(n && n()); this._update(this.content, n); break; case "function": if (this.is("updated")) return void(n && n()); var i = this._fn(this.element); if (!i) return this.is("updating", !1), void(n && n(!0)); this._update(i, n); break; case "ajax": var e = this.options.ajax || {}, s = e.url || this.__content, o = e.dataType, r = { url: s, data: e.data || {} }; (t = e.type || "GET") && $.extend(r, { type: t }), o && $.extend(r, { dataType: o }); var h, a = $.extend({}, r, e); if (a.method && delete(a = $.extend({}, a)).method, $.each("complete error success".split(" "), $.proxy(function(t, o) { a[o] || (a[o] = "success" === o ? function(t, i, e) { return e.responseText } : function() {}), a[o] = _.wrap(a[o], $.proxy(function(t) { var i = _slice.call(arguments, 1), e = $.type("object" === i[0]) ? i[0] : i[2]; if (!e.statusText || "abort" !== e.statusText) { this.options.cache && AjaxCache.set({ url: a.url, type: a.type, data: a.data }, o, i), this._cache.xhr = null; var s = t.apply(this, i); s && this._update(s, n) } }, this)) }, this)), this.options.cache && (h = AjaxCache.get(a)) && h.callbacks.success) return void $.each(h.callbacks, $.proxy(function(t, i) { "function" === $.type(a[t]) && a[t].apply(this, i) }, this)); this.startLoading(), this._cache.xhr = $.ajax(a) } } }, _update: function(t, i) { var e = { title: this.options.title, close: this.options.close }; "string" === $.type(t) || _.isElement(t) || _.isText(t) || _.isDocumentFragment(t) || t instanceof $ ? e.content = t : $.extend(e, t); t = e.content; var s = e.title, o = e.close; this.content = t, this.title = s, this.close = o, this.createElementMarker(), (_.isElement(t) || t instanceof $) && $(t).show(), this._content.html(this.content), this._title.html(s && "string" === $.type(s) ? s : ""), this._titleWrapper[s ? "show" : "hide"](), this._close[(this.title || this.options.title) && o ? "show" : "hide"](); var n = o && !(this.options.title || this.title), r = o && !(this.options.title || this.title) && "overlap" !== o, h = o && (this.options.title || this.title) && "overlap" !== o; this._inner_close[n ? "show" : "hide"](), this._tooltip[(r ? "add" : "remove") + "Class"]("tpd-has-inner-close"), this._tooltip[(h ? "add" : "remove") + "Class"]("tpd-has-title-close"), this._content[(this.options.padding ? "remove" : "add") + "Class"]("tpd-content-no-padding"), this.finishUpdate(i) }, sanitize: function(i) { if (!this.options.voila || this._content.find("img").length < 1) return this.is("sanitized", !0), void(i && i()); this._cache.voila = Voila(this._content, { method: "onload" }, $.proxy(function(t) { this._markImagesAsSanitized(t.images), this.is("refreshed-before-sanitized") ? (this.is("refreshed-before-sanitized", !1), this.sanitize(i)) : (this.is("sanitized", !0), i && i()) }, this)) }, _markImagesAsSanitized: function(t) { $.each(t, function(t, i) { var e = i.img; $(e).data("completed-src", i.img.src) }) }, _hasAllImagesSanitized: function() { var s = !0; return this._content.find("img").each(function(t, i) { var e = $(i).data("completed-src"); if (!e || i.src !== e) return s = !1 }), s }, refresh: function() { this.visible() && (this.is("sanitized") ? (this.is("refreshing", !0), this.clearTimer("refresh-spinner"), !this.options.voila || this._content.find("img").length < 1 || this._hasAllImagesSanitized() ? (this.is("should-update-dimensions", !0), this.position(), this.is("refreshing", !1)) : (this.is("sanitized", !1), this._contentWrapper.css({ visibility: "hidden" }), this.startLoading(), this.sanitize($.proxy(function() { this._contentWrapper.css({ visibility: "visible" }), this.stopLoading(), this.is("should-update-dimensions", !0), this.position(), this.is("refreshing", !1) }, this)))) : this.is("refreshed-before-sanitized", !0)) }, finishUpdate: function(t) { if (this.is("updated", !0), this.is("updating", !1), "function" === $.type(this.options.afterUpdate)) { var i = this._contentWrapper.css("visibility"); i && this._contentWrapper.css({ visibility: "visible" }), this.options.afterUpdate(this._content[0], this.element), i && this._contentWrapper.css({ visibility: "hidden" }) } t && t() } }), $.extend(Tooltip.prototype, { clearUpdatedTo: function() { this._cache.updatedTo = {} }, updateDimensionsToContent: function(t, i) { this.skin.build(); var e = this.is("loading"), s = this._cache.updatedTo; if ((this._maxWidthPass || this.is("api") || this.is("should-update-dimensions") || s.stemPosition !== i || s.loading !== e) && (!e || !this.is("resize-to-content"))) { this._cache.updatedTo = { type: this.is("resize-to-content") ? "content" : "spinner", loading: this.is("loading"), stemPosition: i }, this.is("should-update-dimensions") && this.is("should-update-dimensions", !1), t = t || this.options.position.target, i = i || this.options.position.tooltip; var o = Position.getSide(i), n = Position.getOrientation(i), r = this.skin._css.border; this._tooltip.addClass("tpd-tooltip-measuring"); var h = this._tooltip.attr("style"); this._tooltip.removeAttr("style"); var a = { top: r, right: r, bottom: r, left: r }, d = 0; if ("vertical" === Position.getOrientation(i)) { this.options.stem && (a[o] = this.skin["stem_" + o].getMath().dimensions.outside.height); var p = this.getMouseRoom(); p[Position._flip[o]] && (a[o] += p[Position._flip[o]]); var l = this.getContainmentLayout(i), c = this.getPaddingLine(t), f = !1; if (Position.isPointWithinBoxLayout(c.x1, c.y1, l) || Position.isPointWithinBoxLayout(c.x2, c.y2, l)) f = !0; else { $.each("top right bottom left".split(" "), $.proxy(function(t, i) { var e = this.getSideLine(l, i); if (Position.intersectsLine(c.x1, c.y1, c.x2, c.y2, e.x1, e.y1, e.x2, e.y2)) return !(f = !0) }, this)) } f && (d = "left" === o ? c.x1 - l.position.left : l.position.left + l.dimensions.width - c.x1, a[o] += d) } if (this.options.offset && "vertical" === n) { var u = Position.adjustOffsetBasedOnPosition(this.options.offset, this.options.position.target, t); 0 !== u.x && (a.right += Math.abs(u.x)) } this.options.containment && (d = this.options.containment.padding) && ($.each(a, function(t, i) { a[t] += d }), "vertical" === n ? a["left" === o ? "left" : "right"] -= d : a["top" === o ? "top" : "bottom"] -= d); var m = Bounds.viewport(), g = { width: 0, height: 0 }; this.close && "overlap" !== this.close && !this.title && (g = this._innerCloseDimensions || { width: this._inner_close.outerWidth(!0), height: this._inner_close.outerHeight(!0) }, this._innerCloseDimensions = g), this._contentRelativePadder.css({ "padding-right": g.width }), this._contentSpacer.css({ width: m.width - a.left - a.right }); var b = { width: this._content.innerWidth() + g.width, height: Math.max(this._content.innerHeight(), g.height || 0) }, v = { width: 0, height: 0 }; if (this.title) { var _ = { width: 0, height: 0 }; this._titleWrapper.add(this._titleSpacer).css({ width: "auto", height: "auto" }), this.close && "overlap" !== this.close && (_ = { width: this._close.outerWidth(!0), height: this._close.outerHeight(!0) }, this._close.hide()), this._maxWidthPass && b.width > this.options.maxWidth && this._titleRelative.css({ width: b.width }), this._titleRelativePadder.css({ "padding-right": _.width }); var x = parseFloat(this._titleWrapper.css("border-bottom-width")); (v = { width: this.title ? this._titleWrapper.innerWidth() : 0, height: Math.max(this.title ? this._titleWrapper.innerHeight() + x : 0, _.height + x) }).width > m.width - a.left - a.right && (v.width = m.width - a.left - a.right, this._titleSpacer.css({ width: v.width }), v.height = Math.max(this.title ? this._titleWrapper.innerHeight() + x : 0, _.height + x)), b.width = Math.max(v.width, b.width), b.height += v.height, this._titleWrapper.css({ height: Math.max(this.title ? this._titleWrapper.innerHeight() : 0, _.height) }), this.close && this._close.show() } if (this.options.stem) { var w = "vertical" === n ? "height" : "width", y = this.skin["stem_" + o].getMath().outside.width + 2 * this.skin._css.radius; b[w] < y && (b[w] = y) } if (this._contentSpacer.css({ width: b.width }), b.height !== Math.max(this._content.innerHeight(), g.height) + (this.title ? this._titleRelative.outerHeight() : 0) && b.width++, this.is("resize-to-content") || (b = this.skin._css.spinner.dimensions), this.setDimensions(b), a = { top: r, right: r, bottom: r, left: r }, this.options.stem) { var T = Position.getSide(i); a[T] = this.skin.stem_top.getMath().dimensions.outside.height } this._contentSpacer.css({ "margin-top": a.top, "margin-left": +a.left, width: b.width }), (this.title || this.close) && this._titleWrapper.css({ height: this._titleWrapper.innerHeight(), width: b.width }), this._tooltip.removeClass("tpd-tooltip-measuring"), this._tooltip.attr("style", h); var k = this._contentRelative.add(this._titleRelative); this.options.maxWidth && b.width > this.options.maxWidth && !this._maxWidthPass && this.is("resize-to-content") && (k.css({ width: this.options.maxWidth }), this._maxWidthPass = !0, this.updateDimensionsToContent(t, i), this._maxWidthPass = !1, k.css({ width: "auto" })) } }, setDimensions: function(t) { this.skin.setDimensions(t) }, getContainmentSpace: function(t, i) { var e = this.getContainmentLayout(t, i), s = this.getTargetLayout(), o = s.position, n = s.dimensions, r = e.position, h = e.dimensions, a = { top: Math.max(o.top - r.top, 0), bottom: Math.max(r.top + h.height - (o.top + n.height), 0), left: Math.max(o.left - r.left, 0), right: Math.max(r.left + h.width - (o.left + n.width), 0) }; return o.top > r.top + h.height && (a.top -= o.top - (r.top + h.height)), o.top + n.height < r.top && (a.bottom -= r.top - (o.top + n.height)), o.left > r.left + h.width && r.left + h.width >= o.left && (a.left -= o.left - (r.left + h.width)), o.left + n.width < r.left && (a.right -= r.left - (o.left + n.width)), this._cache.layouts.containmentSpace = a }, position: function(t) { if (this.visible()) { this.is("positioning", !0), this._cache.layouts = {}; this._cache.dimensions; var i = this.options.position.target, e = this.options.position.tooltip, s = e, o = i; this.updateDimensionsToContent(o, s); var n = deepExtend(this.getPositionBasedOnTarget(o, s)), r = []; if (this.options.containment) { var h = !1, a = {}; if ($.each("top right bottom left".split(" "), $.proxy(function(t, i) { (a[i] = this.isSideWithinContainment(i, s, !0)) && (h = !0) }, this)), h || (n.contained = !0), n.contained) this.setPosition(n); else if (r.unshift({ position: n, targetPosition: o, stemPosition: s }), o = Position.flip(i), s = Position.flip(e), a[Position.getSide(o)] ? (this.updateDimensionsToContent(o, s), n = this.getPositionBasedOnTarget(o, s)) : n.contained = !1, n.contained) this.setPosition(n, s); else { r.unshift({ position: n, targetPosition: o, stemPosition: s }); var d = i, p = this.getContainmentSpace(s, !0), l = "horizontal" === Position.getOrientation(d) ? ["left", "right"] : ["top", "bottom"], c = (p[l[0]] === p[l[1]] ? "horizontal" === Position.getOrientation(d) ? "left" : "top" : l[p[l[0]] > p[l[1]] ? 0 : 1]) + Position.split(d)[1], f = Position.flip(c); if (o = c, s = f, a[Position.getSide(o)] ? (this.updateDimensionsToContent(o, s), n = this.getPositionBasedOnTarget(o, s)) : n.contained = !1, n.contained) this.setPosition(n, s); else { var u; r.unshift({ position: n, targetPosition: o, stemPosition: s }); var m = []; if ($.each(r, function(t, i) { if (0 <= i.position.top && 0 <= i.position.left) u = i; else { var e = 0 <= i.position.top ? 1 : Math.abs(i.position.top), s = 0 <= i.position.left ? 1 : Math.abs(i.position.left); m.push({ result: i, negativity: e * s }) } }), !u) { var g = m[m.length - 1]; $.each(m, function(t, i) { i.negativity < g.negativity && (g = i) }), u = g.result } this.updateDimensionsToContent(u.targetPosition, u.stemPosition, !0), this.setPosition(u.position, u.stemPosition) } } } else this.setPosition(n); this._cache.dimensions = this.skin._vars.dimensions, this.skin.paint(), this.is("positioning", !1) } }, getPositionBasedOnTarget: function(t, i) { i = i || this.options.position.tooltip; var e, s = this.getTargetDimensions(), o = { left: 0, top: 0 }, n = { left: 0, top: 0 }, r = (Position.getSide(t), this.skin._vars), h = r.frames[Position.getSide(i)], a = Position.getOrientation(t), d = Position.split(t); if ("horizontal" === a) { switch (e = Math.floor(.5 * s.width), d[2]) { case "left": n.left = e; break; case "middle": o.left = s.width - e, n.left = o.left; break; case "right": o.left = s.width, n.left = s.width - e } "bottom" === d[1] && (o.top = s.height, n.top = s.height) } else { switch (e = Math.floor(.5 * s.height), d[2]) { case "top": n.top = e; break; case "middle": o.top = s.height - e, n.top = o.top; break; case "bottom": n.top = s.height - e, o.top = s.height } "right" === d[1] && (o.left = s.width, n.left = s.width) } var p = this.getTargetPosition(), l = $.extend({}, s, { top: p.top, left: p.left, connection: o, max: n }), c = { width: h.dimensions.width, height: h.dimensions.height, top: 0, left: 0, connection: r.connections[i].connection, stem: r.connections[i].stem }; if (c.top = l.top + l.connection.top, c.left = l.left + l.connection.left, c.top -= c.connection.top, c.left -= c.connection.left, this.options.stem) { var f = r.stemDimensions.width, u = { stem: { top: c.top + c.stem.connection.top, left: c.left + c.stem.connection.left }, connection: { top: l.top + l.connection.top, left: l.left + l.connection.left }, max: { top: l.top + l.max.top, left: l.left + l.max.left } }; if (!Position.isPointWithinBox(u.stem.left, u.stem.top, u.connection.left, u.connection.top, u.max.left, u.max.top)) { u = { stem: { top: c.top + c.stem.connection.top, left: c.left + c.stem.connection.left }, connection: { top: l.top + l.connection.top, left: l.left + l.connection.left }, max: { top: l.top + l.max.top, left: l.left + l.max.left } }; var m = { connection: Position.getDistance(u.stem.left, u.stem.top, u.connection.left, u.connection.top), max: Position.getDistance(u.stem.left, u.stem.top, u.max.left, u.max.top) }, g = Math.min(m.connection, m.max), b = u[m.connection <= m.max ? "connection" : "max"], v = "horizontal" === Position.getOrientation(i) ? "left" : "top"; if (f <= Position.getDistance(u.connection.left, u.connection.top, u.max.left, u.max.top)) { var _ = { top: 0, left: 0 }, x = b[v] < u.stem[v] ? -1 : 1; _[v] = g * x, _[v] += Math.floor(.5 * f) * x, c.left += _.left, c.top += _.top } else { $.extend(u, { center: { top: Math.round(l.top + .5 * s.height), left: Math.round(l.left + .5 * s.left) } }); g = m[Position.getDistance(u.center.left, u.center.top, u.connection.left, u.connection.top) <= Position.getDistance(u.center.left, u.center.top, u.max.left, u.max.top) ? "connection" : "max"]; var w = { top: 0, left: 0 }; x = b[v] < u.stem[v] ? -1 : 1; w[v] = g * x, c.left += w.left, c.top += w.top } } } if (this.options.offset) { var y = $.extend({}, this.options.offset); y = Position.adjustOffsetBasedOnPosition(y, this.options.position.target, t), c.top += y.y, c.left += y.x } var T = this.getContainment({ top: c.top, left: c.left }, i), k = T.horizontal && T.vertical, P = { x: 0, y: 0 }, C = Position.getOrientation(i); if (!T[C]) { var S = "horizontal" === C, O = S ? ["left", "right"] : ["up", "down"], M = S ? "x" : "y", z = S ? "left" : "top", D = T.correction[M], I = this.getContainmentLayout(i), A = I.position[S ? "left" : "top"]; if (0 !== D) { var W = r.connections[i].move, E = W[O[-1 * D < 0 ? 0 : 1]], L = D < 0 ? -1 : 1; if (D * L <= E && c[z] + D >= A) c[z] += D, P[M] = -1 * D, k = !0; else if (Position.getOrientation(t) === Position.getOrientation(i)) { if (c[z] += E * L, P[M] = E * L * -1, c[z] < A) { var j = A - c[z], B = W[O[0]] + W[O[1]]; j = Math.min(j, B), c[z] += j; var H = P[M] - j; H >= r.connections[i].move[O[0]] && H <= r.connections[i].move[O[1]] && (P[M] -= j) } var R = (T = this.getContainment({ top: c.top, left: c.left }, i)).correction[M], F = deepExtend({}, c); this.options.offset && (F.left -= this.options.offset.x, F.top -= this.options.offset.y), (u = { stem: { top: F.top + c.stem.connection.top, left: F.left + c.stem.connection.left } }).stem[z] += P[M]; var q = this.getTargetLayout(), U = (f = r.stemDimensions.width, Math.floor(.5 * f)), Q = A + I.dimensions[S ? "width" : "height"]; if ("x" == M) { var V = q.position.left + U; 0 < R && (V += q.dimensions.width - 2 * U), (R < 0 && u.stem.left + R >= V && F.left + R >= A || 0 < R && u.stem.left + R <= V && F.left + R <= Q) && (F.left += R) } else { var G = q.position.top + U; 0 < R && (G += q.dimensions.height - 2 * U), (R < 0 && u.stem.top + R >= G && F.top + R >= A || 0 < R && u.stem.top + R <= G && F.top + R <= Q) && (F.top += R) } c = F, this.options.offset && (c.left += this.options.offset.x, c.top += this.options.offset.y) } } k = (T = this.getContainment({ top: c.top, left: c.left }, i)).horizontal && T.vertical } return { top: c.top, left: c.left, contained: k, shift: P } }, setPosition: function(t, i) { var e = this._position; if (!e || e.top !== t.top || e.left !== t.left) { var s; if (this.options.container !== document.body) { if ("string" === $.type(this.options.container)) { var o = this.target; "mouse" === o && (o = this.element), s = $($(o).closest(this.options.container).first()) } else s = $(s); if (s[0]) { var n = $(s).offset(), r = Math.round(n.top), h = Math.round(n.left), a = Math.round($(s).scrollTop()), d = Math.round($(s).scrollLeft()); t.top -= r, t.top += a, t.left -= h, t.left += d } } this._position = t, this._tooltip.css({ top: t.top, left: t.left }) } this.skin.setStemPosition(i || this.options.position.tooltip, t.shift || { x: 0, y: 0 }) }, getSideLine: function(t, i) { var e = t.position.left, s = t.position.top, o = t.position.left, n = t.position.top; switch (i) { case "top": o += t.dimensions.width; break; case "bottom": s += t.dimensions.height, o += t.dimensions.width, n += t.dimensions.height; break; case "left": n += t.dimensions.height; break; case "right": e += t.dimensions.width, o += t.dimensions.width, n += t.dimensions.height } return { x1: e, y1: s, x2: o, y2: n } }, isSideWithinContainment: function(t, i, e) { var s = this.getContainmentLayout(i, e), o = this.getTargetLayout(), n = this.getSideLine(o, t); if (Position.isPointWithinBoxLayout(n.x1, n.y1, s) || Position.isPointWithinBoxLayout(n.x2, n.y2, s)) return !0; var r = !1; return $.each("top right bottom left".split(" "), $.proxy(function(t, i) { var e = this.getSideLine(s, i); if (Position.intersectsLine(n.x1, n.y1, n.x2, n.y2, e.x1, e.y1, e.x2, e.y2)) return !(r = !0) }, this)), r }, getContainment: function(t, i) { var e = { horizontal: !0, vertical: !0, correction: { y: 0, x: 0 } }; if (this.options.containment) { var s = this.getContainmentLayout(i), o = this.skin._vars.frames[Position.getSide(i)].dimensions; this.options.containment && ((t.left < s.position.left || t.left + o.width > s.position.left + s.dimensions.width) && (e.horizontal = !1, t.left < s.position.left ? e.correction.x = s.position.left - t.left : e.correction.x = s.position.left + s.dimensions.width - (t.left + o.width)), (t.top < s.position.top || t.top + o.height > s.position.top + s.dimensions.height) && (e.vertical = !1, t.top < s.position.top ? e.correction.y = s.position.top - t.top : e.correction.y = s.position.top + s.dimensions.height - (t.top + o.height))) } return e }, getContainmentLayout: function(t, i) { var e = { top: $(window).scrollTop(), left: $(window).scrollLeft() }, s = this.target; "mouse" === s && (s = this.element); var o, n = $(s).closest(this.options.containment.selector).first()[0]; o = n && "viewport" !== this.options.containment.selector ? { dimensions: { width: $(n).innerWidth(), height: $(n).innerHeight() }, position: $(n).offset() } : { dimensions: Bounds.viewport(), position: e }; var r = this.options.containment.padding; if (r && !i) { var h = Math.max(o.dimensions.height, o.dimensions.width); if (h < 2 * r && (r = Math.max(Math.floor(.5 * h), 0)), r) o.dimensions.width -= 2 * r, o.dimensions.height -= 2 * r, o.position.top += r, o.position.left += r, "vertical" === Position.getOrientation(t) ? (o.dimensions.width += r, "left" === Position.getSide(t) && (o.position.left -= r)) : (o.dimensions.height += r, "top" === Position.getSide(t) && (o.position.top -= r)) } return this._cache.layouts.containmentLayout = o }, getMouseRoom: function() { var t = { top: 0, left: 0, right: 0, bottom: 0 }; if ("mouse" === this.options.target && !this.is("api")) { var i = Mouse.getActualPosition(this._cache.event), e = $(this.element).offset(), s = $(this.element).innerWidth(), o = $(this.element).innerHeight(); t = { top: Math.max(0, i.top - e.top), bottom: Math.max(0, e.top + o - i.top), left: Math.max(0, i.left - e.left), right: Math.max(0, e.left + s - i.left) } } return t }, getTargetPosition: function() { var t, i; return t = "mouse" === this.options.target ? this.is("api") ? (i = $(this.element).offset(), { top: Math.round(i.top), left: Math.round(i.left) }) : Mouse.getPosition(this._cache.event) : (i = $(this.target).offset(), { top: Math.round(i.top), left: Math.round(i.left) }), this._cache.layouts.targetPosition = t }, getTargetDimensions: function() { return this._cache.layouts.targetDimensions ? this._cache.layouts.targetDimensions : (t = "mouse" === this.options.target ? Mouse.getDimensions() : { width: $(this.target).innerWidth(), height: $(this.target).innerHeight() }, this._cache.layouts.targetDimensions = t); var t }, getTargetLayout: function() { if (this._cache.layouts.targetLayout) return this._cache.layouts.targetLayout; var t = { position: this.getTargetPosition(), dimensions: this.getTargetDimensions() }; return this._cache.layouts.targetLayout = t }, getPaddingLine: function(t) { var i = this.getTargetLayout(), e = "left"; if ("vertical" === Position.getOrientation(t)) return this.getSideLine(i, Position.getSide(t)); if (Position.isCorner(t)) { var s = Position.inverseCornerPlane(t); return e = Position.getSide(s), this.getSideLine(i, e) } var o = this.getSideLine(i, e), n = Math.round(.5 * i.dimensions.width); return o.x1 += n, o.x2 += n, o } }), $.extend(Tooltip.prototype, { setActive: function() { this.is("active", !0), this.visible() && this.raise(), this.options.hideAfter && this.clearTimer("idle") }, setIdle: function() { this.is("active", !1), this.options.hideAfter && this.setTimer("idle", $.proxy(function() { this.clearTimer("idle"), this.is("active") || this.hide() }, this), this.options.hideAfter) } }), $.extend(Tooltip.prototype, { bind: function(t, i, e, s) { var o = $.proxy(e, s || this); this._cache.events.push({ element: t, eventName: i, handler: o }), $(t).bind(i, o) }, unbind: function() { $.each(this._cache.events, function(t, i) { $(i.element).unbind(i.eventName, i.handler) }), this._cache.events = [] } }), $.extend(Tooltip.prototype, { disable: function() { this.is("disabled") || this.is("disabled", !0) }, enable: function() { this.is("disabled") && this.is("disabled", !1) } }), $.extend(Tooltip.prototype, { is: function(t, i) { return "boolean" === $.type(i) && (this._cache.is[t] = i), this._cache.is[t] }, visible: function() { return this.is("visible") } }), $.extend(Tooltip.prototype, { setTimer: function(t, i, e) { this._cache.timers[t] = _.delay(i, e) }, getTimer: function(t) { return this._cache.timers[t] }, clearTimer: function(t) { this._cache.timers[t] && (clearTimeout(this._cache.timers[t]), delete this._cache.timers[t]) }, clearTimers: function() { $.each(this._cache.timers, function(t, i) { clearTimeout(i) }), this._cache.timers = {} } }), $.extend(Tipped, { init: function() { Tooltips.init() }, create: function(t, e) { var s = $.extend({}, arguments[2] || {}), o = []; return _.isElement(t) ? o.push(new Tooltip(t, e, s)) : $(t).each(function(t, i) { o.push(new Tooltip(i, e, s)) }), new Collection(o) }, get: function(t) { return new Collection(Tooltips.get(t)) }, findElement: function(t) { return Tooltips.findElement(t) }, hideAll: function() { return Tooltips.hideAll(), this }, setDefaultSkin: function(t) { return Tooltips.setDefaultSkin(t), this }, visible: function(t) { if (_.isElement(t)) return Tooltips.isVisibleByElement(t); if ("undefined" === $.type(t)) return Tooltips.getVisible().length; var i = $(t), e = 0; return $.each(i, function(t, i) { Tooltips.isVisibleByElement(i) && e++ }), e }, clearAjaxCache: function() { return Tooltips.clearAjaxCache(), this }, refresh: function(t, i, e) { return Tooltips.refresh(t, i, e), this }, setStartingZIndex: function(t) { return Tooltips.setStartingZIndex(t), this }, remove: function(t) { return Tooltips.remove(t), this } }), $.each("show hide toggle disable enable".split(" "), function(t, i) { Tipped[i] = function(t) { return this.get(t)[i](), this } }), $.extend(Tipped, { delegate: function() { Delegations.add.apply(Delegations, _slice.call(arguments)) }, undelegate: function() { Delegations.remove.apply(Delegations, _slice.call(arguments)) } }); var Delegations = { _uid: 0, _delegations: {}, add: function(t, e, s) { "object" !== $.type(e) || _.isElement(e) ? s = s || {} : (s = e, e = null); var o = ++this._uid, i = Options.create($.extend({}, s)); this._delegations[o] = { uid: o, selector: t, content: e, options: i }; function n(t) { $(this).addClass("tpd-delegation-uid-" + o); var i = new Tooltip(this, e, s); i._cache.event = t, i.setActive(), i.showDelayed() } this._delegations[o].removeTitleHandler = $.proxy(this.removeTitle, this), $(document).delegate(t + ":not(.tpd-delegation-uid-" + o + ")", "mouseenter", this._delegations[o].removeTitleHandler), this._delegations[o].handler = n, $(document).delegate(t + ":not(.tpd-delegation-uid-" + o + ")", i.showOn.element, n) }, removeTitle: function(t) { var i = t.currentTarget, e = $(i).attr("title"); e && ($(i).data("tipped-restore-title", e), $(i)[0].setAttribute("title", "")) }, remove: function(e) { $.each(this._delegations, $.proxy(function(t, i) { i.selector === e && ($(document).undelegate(e + ":not(.tpd-delegation-uid-" + t + ")", "mouseenter", i.removeTitleHandler).undelegate(e + ":not(.tpd-delegation-uid-" + t + ")", i.options.showOn.element, i.handler), delete this._delegations[t]) }, this)) }, removeAll: function() { $.each(this._delegations, $.proxy(function(t, i) { $(document).undelegate(i.selector + ":not(.tpd-delegation-uid-" + t + ")", "mouseenter", i.removeTitleHandler).undelegate(i.selector + ":not(.tpd-delegation-uid-" + t + ")", i.options.showOn.element, i.handler), delete this._delegations[t] }, this)) } }; function Collection() { this.initialize.apply(this, _slice.call(arguments)) } return $.extend(Collection.prototype, { initialize: function(t) { return this.tooltips = t, this }, items: function() { return $.each(this.tooltips, function(t, i) { i.is("api", !0) }), this.tooltips }, refresh: function(t) { return $.each(this._tooltips, function(t, i) { i.is("visible") && i.refresh() }), this }, remove: function() { return Tooltips.removeTooltips(this.tooltips), this.tooltips = [], this } }), $.each("show hide toggle disable enable".split(" "), function(t, e) { Collection.prototype[e] = function() { return $.each(this.tooltips, function(t, i) { i.is("api", !0), i[e]() }), this } }), Tipped.init(), Tipped }); /**! * MixItUp v3.3.1 * A high-performance, dependency-free library for animated filtering, sorting and more * Build 94e0fbf6-cd0b-4987-b3c0-14b59b67b8a0 * * @copyright Copyright 2014-2018 KunkaLabs Limited. * @author KunkaLabs Limited. * @link https://www.kunkalabs.com/mixitup/ * * @license Commercial use requires a commercial license. * https://www.kunkalabs.com/mixitup/licenses/ * * Non-commercial use permitted under same terms as CC BY-NC 3.0 license. * http://creativecommons.org/licenses/by-nc/3.0/ */ ! function(t) { "use strict"; var e = null, n = null; ! function() { var e = ["webkit", "moz", "o", "ms"], n = t.document.createElement("div"), a = -1; for (a = 0; a < e.length && !t.requestAnimationFrame; a++) t.requestAnimationFrame = t[e[a] + "RequestAnimationFrame"]; "undefined" == typeof n.nextElementSibling && Object.defineProperty(t.Element.prototype, "nextElementSibling", { get: function() { for (var t = this.nextSibling; t;) { if (1 === t.nodeType) return t; t = t.nextSibling } return null } }), function(t) { t.matches = t.matches || t.machesSelector || t.mozMatchesSelector || t.msMatchesSelector || t.oMatchesSelector || t.webkitMatchesSelector || function(t) { return Array.prototype.indexOf.call(this.parentElement.querySelectorAll(t), this) > -1 } }(t.Element.prototype), Object.keys || (Object.keys = function() { var t = Object.prototype.hasOwnProperty, e = !1, n = [], a = -1; return e = !{ toString: null }.propertyIsEnumerable("toString"), n = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"], a = n.length, function(i) { var o = [], r = "", s = -1; if ("object" != typeof i && ("function" != typeof i || null === i)) throw new TypeError("Object.keys called on non-object"); for (r in i) t.call(i, r) && o.push(r); if (e) for (s = 0; s < a; s++) t.call(i, n[s]) && o.push(n[s]); return o } }()), Array.isArray || (Array.isArray = function(t) { return "[object Array]" === Object.prototype.toString.call(t) }), "function" != typeof Object.create && (Object.create = function(t) { var e = function() {}; return function(n, a) { if (n !== Object(n) && null !== n) throw TypeError("Argument must be an object, or null"); e.prototype = n || {}; var i = new e; return e.prototype = null, a !== t && Object.defineProperties(i, a), null === n && (i.__proto__ = null), i } }()), String.prototype.trim || (String.prototype.trim = function() { return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "") }), Array.prototype.indexOf || (Array.prototype.indexOf = function(t) { var e, n, a, i; if (null === this) throw new TypeError; if (a = Object(this), i = a.length >>> 0, 0 === i) return -1; if (e = 0, arguments.length > 1 && (e = Number(arguments[1]), e !== e ? e = 0 : 0 !== e && e !== 1 / 0 && e !== -(1 / 0) && (e = (e > 0 || -1) * Math.floor(Math.abs(e)))), e >= i) return -1; for (n = e >= 0 ? e : Math.max(i - Math.abs(e), 0); n < i; n++) if (n in a && a[n] === t) return n; return -1 }), Function.prototype.bind || (Function.prototype.bind = function(t) { var e, n, a, i; if ("function" != typeof this) throw new TypeError; return e = Array.prototype.slice.call(arguments, 1), n = this, a = function() {}, i = function() { return n.apply(this instanceof a ? this : t, e.concat(Array.prototype.slice.call(arguments))) }, this.prototype && (a.prototype = this.prototype), i.prototype = new a, i }), t.Element.prototype.dispatchEvent || (t.Element.prototype.dispatchEvent = function(t) { try { return this.fireEvent("on" + t.type, t) } catch (e) {} }) }(), e = function(a, i, o) { var r = null, s = !1, l = null, c = null, u = null, f = null, h = [], d = "", m = [], g = -1; if (u = o || t.document, (s = arguments[3]) && (s = "boolean" == typeof s), "string" == typeof a) m = u.querySelectorAll(a); else if (a && "object" == typeof a && n.isElement(a, u)) m = [a]; else { if (!a || "object" != typeof a || !a.length) throw new Error(e.messages.errorFactoryInvalidContainer()); m = a } if (m.length < 1) throw new Error(e.messages.errorFactoryContainerNotFound()); for (g = 0; (r = m[g]) && (!(g > 0) || s); g++) r.id ? d = r.id : (d = "MixItUp" + n.randomHex(), r.id = d), e.instances[d] instanceof e.Mixer ? (l = e.instances[d], (!i || i && i.debug && i.debug.showWarnings !== !1) && console.warn(e.messages.warningFactoryPreexistingInstance())) : (l = new e.Mixer, l.attach(r, u, d, i), e.instances[d] = l), c = new e.Facade(l), i && i.debug && i.debug.enable ? h.push(l) : h.push(c); return f = s ? new e.Collection(h) : h[0] }, e.use = function(t) { e.Base.prototype.callActions.call(e, "beforeUse", arguments), "function" == typeof t && "mixitup-extension" === t.TYPE ? "undefined" == typeof e.extensions[t.NAME] && (t(e), e.extensions[t.NAME] = t) : t.fn && t.fn.jquery && (e.libraries.$ = t), e.Base.prototype.callActions.call(e, "afterUse", arguments) }, e.instances = {}, e.extensions = {}, e.libraries = {}, n = { hasClass: function(t, e) { return !!t.className.match(new RegExp("(\\s|^)" + e + "(\\s|$)")) }, addClass: function(t, e) { this.hasClass(t, e) || (t.className += t.className ? " " + e : e) }, removeClass: function(t, e) { if (this.hasClass(t, e)) { var n = new RegExp("(\\s|^)" + e + "(\\s|$)"); t.className = t.className.replace(n, " ").trim() } }, extend: function(t, e, n, a) { var i = [], o = "", r = -1; n = n || !1, a = a || !1; try { if (Array.isArray(e)) for (r = 0; r < e.length; r++) i.push(r); else e && (i = Object.keys(e)); for (r = 0; r < i.length; r++) o = i[r], !n || "object" != typeof e[o] || this.isElement(e[o]) ? t[o] = e[o] : Array.isArray(e[o]) ? (t[o] || (t[o] = []), this.extend(t[o], e[o], n, a)) : (t[o] || (t[o] = {}), this.extend(t[o], e[o], n, a)) } catch (s) { if (!a) throw s; this.handleExtendError(s, t) } return t }, handleExtendError: function(t, n) { var a = /property "?(\w*)"?[,:] object/i, i = null, o = "", r = "", s = "", l = "", c = "", u = -1, f = -1; if (t instanceof TypeError && (i = a.exec(t.message))) { o = i[1]; for (c in n) { for (f = 0; f < o.length && o.charAt(f) === c.charAt(f);) f++; f > u && (u = f, l = c) } throw u > 1 && (s = e.messages.errorConfigInvalidPropertySuggestion({ probableMatch: l })), r = e.messages.errorConfigInvalidProperty({ erroneous: o, suggestion: s }), new TypeError(r) } throw t }, template: function(t) { for (var e = /\${([\w]*)}/g, n = {}, a = null; a = e.exec(t);) n[a[1]] = new RegExp("\\${" + a[1] + "}", "g"); return function(e) { var a = "", i = t; e = e || {}; for (a in n) i = i.replace(n[a], "undefined" != typeof e[a] ? e[a] : ""); return i } }, on: function(e, n, a, i) { e && (e.addEventListener ? e.addEventListener(n, a, i) : e.attachEvent && (e["e" + n + a] = a, e[n + a] = function() { e["e" + n + a](t.event) }, e.attachEvent("on" + n, e[n + a]))) }, off: function(t, e, n) { t && (t.removeEventListener ? t.removeEventListener(e, n, !1) : t.detachEvent && (t.detachEvent("on" + e, t[e + n]), t[e + n] = null)) }, getCustomEvent: function(e, n, a) { var i = null; return a = a || t.document, "function" == typeof t.CustomEvent ? i = new t.CustomEvent(e, { detail: n, bubbles: !0, cancelable: !0 }) : "function" == typeof a.createEvent ? (i = a.createEvent("CustomEvent"), i.initCustomEvent(e, !0, !0, n)) : (i = a.createEventObject(), i.type = e, i.returnValue = !1, i.cancelBubble = !1, i.detail = n), i }, getOriginalEvent: function(t) { return t.touches && t.touches.length ? t.touches[0] : t.changedTouches && t.changedTouches.length ? t.changedTouches[0] : t }, index: function(t, e) { for (var n = 0; null !== (t = t.previousElementSibling);) e && !t.matches(e) || ++n; return n }, camelCase: function(t) { return t.toLowerCase().replace(/([_-][a-z])/g, function(t) { return t.toUpperCase().replace(/[_-]/, "") }) }, pascalCase: function(t) { return (t = this.camelCase(t)).charAt(0).toUpperCase() + t.slice(1) }, dashCase: function(t) { return t.replace(/([A-Z])/g, "-$1").replace(/^-/, "").toLowerCase() }, isElement: function(e, n) { return n = n || t.document, !!(t.HTMLElement && e instanceof t.HTMLElement) || (!!(n.defaultView && n.defaultView.HTMLElement && e instanceof n.defaultView.HTMLElement) || null !== e && 1 === e.nodeType && "string" == typeof e.nodeName) }, createElement: function(e, n) { var a = null, i = null; for (n = n || t.document, a = n.createDocumentFragment(), i = n.createElement("div"), i.innerHTML = e.trim(); i.firstChild;) a.appendChild(i.firstChild); return a }, removeWhitespace: function(t) { for (var e; t && "#text" === t.nodeName;) e = t, t = t.previousSibling, e.parentElement && e.parentElement.removeChild(e) }, isEqualArray: function(t, e) { var n = t.length; if (n !== e.length) return !1; for (; n--;) if (t[n] !== e[n]) return !1; return !0 }, deepEquals: function(t, e) { var n; if ("object" == typeof t && t && "object" == typeof e && e) { if (Object.keys(t).length !== Object.keys(e).length) return !1; for (n in t) if (!e.hasOwnProperty(n) || !this.deepEquals(t[n], e[n])) return !1 } else if (t !== e) return !1; return !0 }, arrayShuffle: function(t) { for (var e = t.slice(), n = e.length, a = n, i = -1, o = []; a--;) i = ~~(Math.random() * n), o = e[a], e[a] = e[i], e[i] = o; return e }, arrayFromList: function(t) { var e, n; try { return Array.prototype.slice.call(t) } catch (a) { for (e = [], n = 0; n < t.length; n++) e.push(t[n]); return e } }, debounce: function(t, e, n) { var a; return function() { var i = this, o = arguments, r = n && !a, s = null; s = function() { a = null, n || t.apply(i, o) }, clearTimeout(a), a = setTimeout(s, e), r && t.apply(i, o) } }, position: function(t) { for (var e = 0, n = 0, a = t; t;) e -= t.scrollLeft, n -= t.scrollTop, t === a && (e += t.offsetLeft, n += t.offsetTop, a = t.offsetParent), t = t.parentElement; return { x: e, y: n } }, getHypotenuse: function(t, e) { var n = t.x - e.x, a = t.y - e.y; return n = n < 0 ? n * -1 : n, a = a < 0 ? a * -1 : a, Math.sqrt(Math.pow(n, 2) + Math.pow(a, 2)) }, getIntersectionRatio: function(t, e) { var n = t.width * t.height, a = -1, i = -1, o = -1, r = -1; return a = Math.max(0, Math.min(t.left + t.width, e.left + e.width) - Math.max(t.left, e.left)), i = Math.max(0, Math.min(t.top + t.height, e.top + e.height) - Math.max(t.top, e.top)), o = i * a, r = o / n }, closestParent: function(e, n, a, i) { var o = e.parentNode; if (i = i || t.document, a && e.matches(n)) return e; for (; o && o != i.body;) { if (o.matches && o.matches(n)) return o; if (!o.parentNode) return null; o = o.parentNode } return null }, children: function(e, n, a) { var i = [], o = ""; return a = a || t.doc, e && (e.id || (o = "Temp" + this.randomHexKey(), e.id = o), i = a.querySelectorAll("#" + e.id + " > " + n), o && e.removeAttribute("id")), i }, clean: function(t) { var e = [], n = -1; for (n = 0; n < t.length; n++) "" !== t[n] && e.push(t[n]); return e }, defer: function(n) { var a = null, i = null, o = null; return i = new this.Deferred, e.features.has.promises ? i.promise = new Promise(function(t, e) { i.resolve = t, i.reject = e }) : (o = t.jQuery || n.$) && "function" == typeof o.Deferred ? (a = o.Deferred(), i.promise = a.promise(), i.resolve = a.resolve, i.reject = a.reject) : t.console && console.warn(e.messages.warningNoPromiseImplementation()), i }, all: function(n, a) { var i = null; return e.features.has.promises ? Promise.all(n) : (i = t.jQuery || a.$) && "function" == typeof i.when ? i.when.apply(i, n).done(function() { return arguments }) : (t.console && console.warn(e.messages.warningNoPromiseImplementation()), []) }, getPrefix: function(t, e, a) { var i = -1, o = ""; if (n.dashCase(e) in t.style) return ""; for (i = 0; o = a[i]; i++) if (o + e in t.style) return o.toLowerCase(); return "unsupported" }, randomHex: function() { return ("00000" + (16777216 * Math.random() << 0).toString(16)).substr(-6).toUpperCase() }, getDocumentState: function(e) { return e = "object" == typeof e.body ? e : t.document, { scrollTop: t.pageYOffset, scrollLeft: t.pageXOffset, docHeight: e.documentElement.scrollHeight, docWidth: e.documentElement.scrollWidth, viewportHeight: e.documentElement.clientHeight, viewportWidth: e.documentElement.clientWidth } }, bind: function(t, e) { return function() { return e.apply(t, arguments) } }, isVisible: function(e) { var n = null; return !!e.offsetParent || (n = t.getComputedStyle(e), "fixed" === n.position && "hidden" !== n.visibility && "0" !== n.opacity) }, seal: function(t) { "function" == typeof Object.seal && Object.seal(t) }, freeze: function(t) { "function" == typeof Object.freeze && Object.freeze(t) }, compareVersions: function(t, e) { var n = t.split("."), a = e.split("."), i = -1, o = -1, r = -1; for (r = 0; r < n.length; r++) { if (i = parseInt(n[r].replace(/[^\d.]/g, "")), o = parseInt(a[r].replace(/[^\d.]/g, "") || 0), o < i) return !1; if (o > i) return !0 } return !0 }, Deferred: function() { this.promise = null, this.resolve = null, this.reject = null, this.id = n.randomHex() }, isEmptyObject: function(t) { var e = ""; if ("function" == typeof Object.keys) return 0 === Object.keys(t).length; for (e in t) if (t.hasOwnProperty(e)) return !1; return !0 }, getClassname: function(t, e, n) { var a = ""; return a += t.block, a.length && (a += t.delineatorElement), a += t["element" + this.pascalCase(e)], n ? (a.length && (a += t.delineatorModifier), a += n) : a }, getProperty: function(t, e) { var n = e.split("."), a = null, i = "", o = 0; if (!e) return t; for (a = function(t) { return t ? t[i] : null }; o < n.length;) i = n[o], t = a(t), o++; return "undefined" != typeof t ? t : null } }, e.h = n, e.Base = function() {}, e.Base.prototype = { constructor: e.Base, callActions: function(t, e) { var a = this, i = a.constructor.actions[t], o = ""; if (i && !n.isEmptyObject(i)) for (o in i) i[o].apply(a, e) }, callFilters: function(t, e, a) { var i = this, o = i.constructor.filters[t], r = e, s = ""; if (!o || n.isEmptyObject(o)) return r; a = a || []; for (s in o) a = n.arrayFromList(a), a.unshift(r), r = o[s].apply(i, a); return r } }, e.BaseStatic = function() { this.actions = {}, this.filters = {}, this.extend = function(t) { n.extend(this.prototype, t) }, this.registerAction = function(t, e, n) { (this.actions[t] = this.actions[t] || {})[e] = n }, this.registerFilter = function(t, e, n) { (this.filters[t] = this.filters[t] || {})[e] = n } }, e.Features = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.boxSizingPrefix = "", this.transformPrefix = "", this.transitionPrefix = "", this.boxSizingPrefix = "", this.transformProp = "", this.transformRule = "", this.transitionProp = "", this.perspectiveProp = "", this.perspectiveOriginProp = "", this.has = new e.Has, this.canary = null, this.BOX_SIZING_PROP = "boxSizing", this.TRANSITION_PROP = "transition", this.TRANSFORM_PROP = "transform", this.PERSPECTIVE_PROP = "perspective", this.PERSPECTIVE_ORIGIN_PROP = "perspectiveOrigin", this.VENDORS = ["Webkit", "moz", "O", "ms"], this.TWEENABLE = ["opacity", "width", "height", "marginRight", "marginBottom", "x", "y", "scale", "translateX", "translateY", "translateZ", "rotateX", "rotateY", "rotateZ"], this.callActions("afterConstruct") }, e.BaseStatic.call(e.Features), e.Features.prototype = Object.create(e.Base.prototype), n.extend(e.Features.prototype, { constructor: e.Features, init: function() { var t = this; t.callActions("beforeInit", arguments), t.canary = document.createElement("div"), t.setPrefixes(), t.runTests(), t.callActions("beforeInit", arguments) }, runTests: function() { var e = this; e.callActions("beforeRunTests", arguments), e.has.promises = "function" == typeof t.Promise, e.has.transitions = "unsupported" !== e.transitionPrefix, e.callActions("afterRunTests", arguments), n.freeze(e.has) }, setPrefixes: function() { var t = this; t.callActions("beforeSetPrefixes", arguments), t.transitionPrefix = n.getPrefix(t.canary, "Transition", t.VENDORS), t.transformPrefix = n.getPrefix(t.canary, "Transform", t.VENDORS), t.boxSizingPrefix = n.getPrefix(t.canary, "BoxSizing", t.VENDORS), t.boxSizingProp = t.boxSizingPrefix ? t.boxSizingPrefix + n.pascalCase(t.BOX_SIZING_PROP) : t.BOX_SIZING_PROP, t.transitionProp = t.transitionPrefix ? t.transitionPrefix + n.pascalCase(t.TRANSITION_PROP) : t.TRANSITION_PROP, t.transformProp = t.transformPrefix ? t.transformPrefix + n.pascalCase(t.TRANSFORM_PROP) : t.TRANSFORM_PROP, t.transformRule = t.transformPrefix ? "-" + t.transformPrefix + "-" + t.TRANSFORM_PROP : t.TRANSFORM_PROP, t.perspectiveProp = t.transformPrefix ? t.transformPrefix + n.pascalCase(t.PERSPECTIVE_PROP) : t.PERSPECTIVE_PROP, t.perspectiveOriginProp = t.transformPrefix ? t.transformPrefix + n.pascalCase(t.PERSPECTIVE_ORIGIN_PROP) : t.PERSPECTIVE_ORIGIN_PROP, t.callActions("afterSetPrefixes", arguments) } }), e.Has = function() { this.transitions = !1, this.promises = !1, n.seal(this) }, e.features = new e.Features, e.features.init(), e.ConfigAnimation = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.enable = !0, this.effects = "fade scale", this.effectsIn = "", this.effectsOut = "", this.duration = 600, this.easing = "ease", this.applyPerspective = !0, this.perspectiveDistance = "3000px", this.perspectiveOrigin = "50% 50%", this.queue = !0, this.queueLimit = 3, this.animateResizeContainer = !0, this.animateResizeTargets = !1, this.staggerSequence = null, this.reverseOut = !1, this.nudge = !0, this.clampHeight = !0, this.clampWidth = !0, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigAnimation), e.ConfigAnimation.prototype = Object.create(e.Base.prototype), e.ConfigAnimation.prototype.constructor = e.ConfigAnimation, e.ConfigBehavior = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.liveSort = !1, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigBehavior), e.ConfigBehavior.prototype = Object.create(e.Base.prototype), e.ConfigBehavior.prototype.constructor = e.ConfigBehavior, e.ConfigCallbacks = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.onMixStart = null, this.onMixBusy = null, this.onMixEnd = null, this.onMixFail = null, this.onMixClick = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigCallbacks), e.ConfigCallbacks.prototype = Object.create(e.Base.prototype), e.ConfigCallbacks.prototype.constructor = e.ConfigCallbacks, e.ConfigControls = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.enable = !0, this.live = !1, this.scope = "global", this.toggleLogic = "or", this.toggleDefault = "all", this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigControls), e.ConfigControls.prototype = Object.create(e.Base.prototype), e.ConfigControls.prototype.constructor = e.ConfigControls, e.ConfigClassNames = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.block = "mixitup", this.elementContainer = "container", this.elementFilter = "control", this.elementSort = "control", this.elementMultimix = "control", this.elementToggle = "control", this.modifierActive = "active", this.modifierDisabled = "disabled", this.modifierFailed = "failed", this.delineatorElement = "-", this.delineatorModifier = "-", this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigClassNames), e.ConfigClassNames.prototype = Object.create(e.Base.prototype), e.ConfigClassNames.prototype.constructor = e.ConfigClassNames, e.ConfigData = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.uidKey = "", this.dirtyCheck = !1, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigData), e.ConfigData.prototype = Object.create(e.Base.prototype), e.ConfigData.prototype.constructor = e.ConfigData, e.ConfigDebug = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.enable = !1, this.showWarnings = !0, this.fauxAsync = !1, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigDebug), e.ConfigDebug.prototype = Object.create(e.Base.prototype), e.ConfigDebug.prototype.constructor = e.ConfigDebug, e.ConfigLayout = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.allowNestedTargets = !0, this.containerClassName = "", this.siblingBefore = null, this.siblingAfter = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigLayout), e.ConfigLayout.prototype = Object.create(e.Base.prototype), e.ConfigLayout.prototype.constructor = e.ConfigLayout, e.ConfigLoad = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.filter = "all", this.sort = "default:asc", this.dataset = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigLoad), e.ConfigLoad.prototype = Object.create(e.Base.prototype), e.ConfigLoad.prototype.constructor = e.ConfigLoad, e.ConfigSelectors = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.target = ".mix", this.control = "", this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigSelectors), e.ConfigSelectors.prototype = Object.create(e.Base.prototype), e.ConfigSelectors.prototype.constructor = e.ConfigSelectors, e.ConfigRender = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.target = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigRender), e.ConfigRender.prototype = Object.create(e.Base.prototype), e.ConfigRender.prototype.constructor = e.ConfigRender, e.ConfigTemplates = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.ConfigTemplates), e.ConfigTemplates.prototype = Object.create(e.Base.prototype), e.ConfigTemplates.prototype.constructor = e.ConfigTemplates, e.Config = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.animation = new e.ConfigAnimation, this.behavior = new e.ConfigBehavior, this.callbacks = new e.ConfigCallbacks, this.controls = new e.ConfigControls, this.classNames = new e.ConfigClassNames, this.data = new e.ConfigData, this.debug = new e.ConfigDebug, this.layout = new e.ConfigLayout, this.load = new e.ConfigLoad, this.selectors = new e.ConfigSelectors, this.render = new e.ConfigRender, this.templates = new e.ConfigTemplates, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.Config), e.Config.prototype = Object.create(e.Base.prototype), e.Config.prototype.constructor = e.Config, e.MixerDom = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.document = null, this.body = null, this.container = null, this.parent = null, this.targets = [], this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.MixerDom), e.MixerDom.prototype = Object.create(e.Base.prototype), e.MixerDom.prototype.constructor = e.MixerDom, e.UiClassNames = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.base = "", this.active = "", this.disabled = "", this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.UiClassNames), e.UiClassNames.prototype = Object.create(e.Base.prototype), e.UiClassNames.prototype.constructor = e.UiClassNames, e.CommandDataset = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.dataset = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.CommandDataset), e.CommandDataset.prototype = Object.create(e.Base.prototype), e.CommandDataset.prototype.constructor = e.CommandDataset, e.CommandMultimix = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.filter = null, this.sort = null, this.insert = null, this.remove = null, this.changeLayout = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.CommandMultimix), e.CommandMultimix.prototype = Object.create(e.Base.prototype), e.CommandMultimix.prototype.constructor = e.CommandMultimix, e.CommandFilter = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.selector = "", this.collection = null, this.action = "show", this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.CommandFilter), e.CommandFilter.prototype = Object.create(e.Base.prototype), e.CommandFilter.prototype.constructor = e.CommandFilter, e.CommandSort = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.sortString = "", this.attribute = "", this.order = "asc", this.collection = null, this.next = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.CommandSort), e.CommandSort.prototype = Object.create(e.Base.prototype), e.CommandSort.prototype.constructor = e.CommandSort, e.CommandInsert = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.index = 0, this.collection = [], this.position = "before", this.sibling = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.CommandInsert), e.CommandInsert.prototype = Object.create(e.Base.prototype), e.CommandInsert.prototype.constructor = e.CommandInsert, e.CommandRemove = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.targets = [], this.collection = [], this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.CommandRemove), e.CommandRemove.prototype = Object.create(e.Base.prototype), e.CommandRemove.prototype.constructor = e.CommandRemove, e.CommandChangeLayout = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.containerClassName = "", this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.CommandChangeLayout), e.CommandChangeLayout.prototype = Object.create(e.Base.prototype), e.CommandChangeLayout.prototype.constructor = e.CommandChangeLayout, e.ControlDefinition = function(t, a, i, o) { e.Base.call(this), this.callActions("beforeConstruct"), this.type = t, this.selector = a, this.live = i || !1, this.parent = o || "", this.callActions("afterConstruct"), n.freeze(this), n.seal(this) }, e.BaseStatic.call(e.ControlDefinition), e.ControlDefinition.prototype = Object.create(e.Base.prototype), e.ControlDefinition.prototype.constructor = e.ControlDefinition, e.controlDefinitions = [], e.controlDefinitions.push(new e.ControlDefinition("multimix", "[data-filter][data-sort]")), e.controlDefinitions.push(new e.ControlDefinition("filter", "[data-filter]")), e.controlDefinitions.push(new e.ControlDefinition("sort", "[data-sort]")), e.controlDefinitions.push(new e.ControlDefinition("toggle", "[data-toggle]")), e.Control = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.el = null, this.selector = "", this.bound = [], this.pending = -1, this.type = "", this.status = "inactive", this.filter = "", this.sort = "", this.canDisable = !1, this.handler = null, this.classNames = new e.UiClassNames, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.Control), e.Control.prototype = Object.create(e.Base.prototype), n.extend(e.Control.prototype, { constructor: e.Control, init: function(t, n, a) { var i = this; if (this.callActions("beforeInit", arguments), i.el = t, i.type = n, i.selector = a, i.selector) i.status = "live"; else switch (i.canDisable = "boolean" == typeof i.el.disable, i.type) { case "filter": i.filter = i.el.getAttribute("data-filter"); break; case "toggle": i.filter = i.el.getAttribute("data-toggle"); break; case "sort": i.sort = i.el.getAttribute("data-sort"); break; case "multimix": i.filter = i.el.getAttribute("data-filter"), i.sort = i.el.getAttribute("data-sort") } i.bindClick(), e.controls.push(i), this.callActions("afterInit", arguments) }, isBound: function(t) { var e = this, n = !1; return this.callActions("beforeIsBound", arguments), n = e.bound.indexOf(t) > -1, e.callFilters("afterIsBound", n, arguments) }, addBinding: function(t) { var e = this; this.callActions("beforeAddBinding", arguments), e.isBound() || e.bound.push(t), this.callActions("afterAddBinding", arguments) }, removeBinding: function(t) { var n = this, a = -1; this.callActions("beforeRemoveBinding", arguments), (a = n.bound.indexOf(t)) > -1 && n.bound.splice(a, 1), n.bound.length < 1 && (n.unbindClick(), a = e.controls.indexOf(n), e.controls.splice(a, 1), "active" === n.status && n.renderStatus(n.el, "inactive")), this.callActions("afterRemoveBinding", arguments) }, bindClick: function() { var t = this; this.callActions("beforeBindClick", arguments), t.handler = function(e) { t.handleClick(e) }, n.on(t.el, "click", t.handler), this.callActions("afterBindClick", arguments) }, unbindClick: function() { var t = this; this.callActions("beforeUnbindClick", arguments), n.off(t.el, "click", t.handler), t.handler = null, this.callActions("afterUnbindClick", arguments) }, handleClick: function(t) { var a = this, i = null, o = null, r = !1, s = void 0, l = {}, c = null, u = [], f = -1; if (this.callActions("beforeHandleClick", arguments), this.pending = 0, o = a.bound[0], i = a.selector ? n.closestParent(t.target, o.config.selectors.control + a.selector, !0, o.dom.document) : a.el, !i) return void a.callActions("afterHandleClick", arguments); switch (a.type) { case "filter": l.filter = a.filter || i.getAttribute("data-filter"); break; case "sort": l.sort = a.sort || i.getAttribute("data-sort"); break; case "multimix": l.filter = a.filter || i.getAttribute("data-filter"), l.sort = a.sort || i.getAttribute("data-sort"); break; case "toggle": l.filter = a.filter || i.getAttribute("data-toggle"), r = "live" === a.status ? n.hasClass(i, a.classNames.active) : "active" === a.status } for (f = 0; f < a.bound.length; f++) c = new e.CommandMultimix, n.extend(c, l), u.push(c); for (u = a.callFilters("commandsHandleClick", u, arguments), a.pending = a.bound.length, f = 0; o = a.bound[f]; f++) l = u[f], l && (o.lastClicked || (o.lastClicked = i), e.events.fire("mixClick", o.dom.container, { state: o.state, instance: o, originalEvent: t, control: o.lastClicked }, o.dom.document), "function" == typeof o.config.callbacks.onMixClick && (s = o.config.callbacks.onMixClick.call(o.lastClicked, o.state, t, o), s === !1) || ("toggle" === a.type ? r ? o.toggleOff(l.filter) : o.toggleOn(l.filter) : o.multimix(l))); this.callActions("afterHandleClick", arguments) }, update: function(t, n) { var a = this, i = new e.CommandMultimix; a.callActions("beforeUpdate", arguments), a.pending--, a.pending = Math.max(0, a.pending), a.pending > 0 || ("live" === a.status ? a.updateLive(t, n) : (i.sort = a.sort, i.filter = a.filter, a.callFilters("actionsUpdate", i, arguments), a.parseStatusChange(a.el, t, i, n)), a.callActions("afterUpdate", arguments)) }, updateLive: function(t, n) { var a = this, i = null, o = null, r = null, s = -1; if (a.callActions("beforeUpdateLive", arguments), a.el) { for (i = a.el.querySelectorAll(a.selector), s = 0; r = i[s]; s++) { switch (o = new e.CommandMultimix, a.type) { case "filter": o.filter = r.getAttribute("data-filter"); break; case "sort": o.sort = r.getAttribute("data-sort"); break; case "multimix": o.filter = r.getAttribute("data-filter"), o.sort = r.getAttribute("data-sort"); break; case "toggle": o.filter = r.getAttribute("data-toggle") } o = a.callFilters("actionsUpdateLive", o, arguments), a.parseStatusChange(r, t, o, n) } a.callActions("afterUpdateLive", arguments) } }, parseStatusChange: function(t, e, n, a) { var i = this, o = "", r = "", s = -1; switch (i.callActions("beforeParseStatusChange", arguments), i.type) { case "filter": e.filter === n.filter ? i.renderStatus(t, "active") : i.renderStatus(t, "inactive"); break; case "multimix": e.sort === n.sort && e.filter === n.filter ? i.renderStatus(t, "active") : i.renderStatus(t, "inactive"); break; case "sort": e.sort.match(/:asc/g) && (o = e.sort.replace(/:asc/g, "")), e.sort === n.sort || o === n.sort ? i.renderStatus(t, "active") : i.renderStatus(t, "inactive"); break; case "toggle": for (a.length < 1 && i.renderStatus(t, "inactive"), e.filter === n.filter && i.renderStatus(t, "active"), s = 0; s < a.length; s++) { if (r = a[s], r === n.filter) { i.renderStatus(t, "active"); break } i.renderStatus(t, "inactive") } } i.callActions("afterParseStatusChange", arguments) }, renderStatus: function(t, e) { var a = this; switch (a.callActions("beforeRenderStatus", arguments), e) { case "active": n.addClass(t, a.classNames.active), n.removeClass(t, a.classNames.disabled), a.canDisable && (a.el.disabled = !1); break; case "inactive": n.removeClass(t, a.classNames.active), n.removeClass(t, a.classNames.disabled), a.canDisable && (a.el.disabled = !1); break; case "disabled": a.canDisable && (a.el.disabled = !0), n.addClass(t, a.classNames.disabled), n.removeClass(t, a.classNames.active) } "live" !== a.status && (a.status = e), a.callActions("afterRenderStatus", arguments) } }), e.controls = [], e.StyleData = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.x = 0, this.y = 0, this.top = 0, this.right = 0, this.bottom = 0, this.left = 0, this.width = 0, this.height = 0, this.marginRight = 0, this.marginBottom = 0, this.opacity = 0, this.scale = new e.TransformData, this.translateX = new e.TransformData, this.translateY = new e.TransformData, this.translateZ = new e.TransformData, this.rotateX = new e.TransformData, this.rotateY = new e.TransformData, this.rotateZ = new e.TransformData, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.StyleData), e.StyleData.prototype = Object.create(e.Base.prototype), e.StyleData.prototype.constructor = e.StyleData, e.TransformData = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.value = 0, this.unit = "", this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.TransformData), e.TransformData.prototype = Object.create(e.Base.prototype), e.TransformData.prototype.constructor = e.TransformData, e.TransformDefaults = function() { e.StyleData.apply(this), this.callActions("beforeConstruct"), this.scale.value = .01, this.scale.unit = "", this.translateX.value = 20, this.translateX.unit = "px", this.translateY.value = 20, this.translateY.unit = "px", this.translateZ.value = 20, this.translateZ.unit = "px", this.rotateX.value = 90, this.rotateX.unit = "deg", this.rotateY.value = 90, this.rotateY.unit = "deg", this.rotateX.value = 90, this.rotateX.unit = "deg", this.rotateZ.value = 180, this.rotateZ.unit = "deg", this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.TransformDefaults), e.TransformDefaults.prototype = Object.create(e.StyleData.prototype), e.TransformDefaults.prototype.constructor = e.TransformDefaults, e.transformDefaults = new e.TransformDefaults, e.EventDetail = function() { this.state = null, this.futureState = null, this.instance = null, this.originalEvent = null }, e.Events = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.mixStart = null, this.mixBusy = null, this.mixEnd = null, this.mixFail = null, this.mixClick = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.Events), e.Events.prototype = Object.create(e.Base.prototype), e.Events.prototype.constructor = e.Events, e.Events.prototype.fire = function(t, a, i, o) { var r = this, s = null, l = new e.EventDetail; if (r.callActions("beforeFire", arguments), "undefined" == typeof r[t]) throw new Error('Event type "' + t + '" not found.'); l.state = new e.State, n.extend(l.state, i.state), i.futureState && (l.futureState = new e.State, n.extend(l.futureState, i.futureState)), l.instance = i.instance, i.originalEvent && (l.originalEvent = i.originalEvent), s = n.getCustomEvent(t, l, o), r.callFilters("eventFire", s, arguments), a.dispatchEvent(s) }, e.events = new e.Events, e.QueueItem = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.args = [], this.instruction = null, this.triggerElement = null, this.deferred = null, this.isToggling = !1, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.QueueItem), e.QueueItem.prototype = Object.create(e.Base.prototype), e.QueueItem.prototype.constructor = e.QueueItem, e.Mixer = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.config = new e.Config, this.id = "", this.isBusy = !1, this.isToggling = !1, this.incPadding = !0, this.controls = [], this.targets = [], this.origOrder = [], this.cache = {}, this.toggleArray = [], this.targetsMoved = 0, this.targetsImmovable = 0, this.targetsBound = 0, this.targetsDone = 0, this.staggerDuration = 0, this.effectsIn = null, this.effectsOut = null, this.transformIn = [], this.transformOut = [], this.queue = [], this.state = null, this.lastOperation = null, this.lastClicked = null, this.userCallback = null, this.userDeferred = null, this.dom = new e.MixerDom, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.Mixer), e.Mixer.prototype = Object.create(e.Base.prototype), n.extend(e.Mixer.prototype, { constructor: e.Mixer, attach: function(a, i, o, r) { var s = this, l = null, c = -1; for (s.callActions("beforeAttach", arguments), s.id = o, r && n.extend(s.config, r, !0, !0), s.sanitizeConfig(), s.cacheDom(a, i), s.config.layout.containerClassName && n.addClass(s.dom.container, s.config.layout.containerClassName), e.features.has.transitions || (s.config.animation.enable = !1), "undefined" == typeof t.console && (s.config.debug.showWarnings = !1), s.config.data.uidKey && (s.config.controls.enable = !1), s.indexTargets(), s.state = s.getInitialState(), c = 0; l = s.lastOperation.toHide[c]; c++) l.hide(); s.config.controls.enable && (s.initControls(), s.buildToggleArray(null, s.state), s.updateControls({ filter: s.state.activeFilter, sort: s.state.activeSort })), s.parseEffects(), s.callActions("afterAttach", arguments) }, sanitizeConfig: function() { var t = this; t.callActions("beforeSanitizeConfig", arguments), t.config.controls.scope = t.config.controls.scope.toLowerCase().trim(), t.config.controls.toggleLogic = t.config.controls.toggleLogic.toLowerCase().trim(), t.config.controls.toggleDefault = t.config.controls.toggleDefault.toLowerCase().trim(), t.config.animation.effects = t.config.animation.effects.trim(), t.callActions("afterSanitizeConfig", arguments) }, getInitialState: function() { var t = this, n = new e.State, a = new e.Operation; if (t.callActions("beforeGetInitialState", arguments), n.activeContainerClassName = t.config.layout.containerClassName, t.config.load.dataset) { if (!t.config.data.uidKey || "string" != typeof t.config.data.uidKey) throw new TypeError(e.messages.errorConfigDataUidKeyNotSet()); a.startDataset = a.newDataset = n.activeDataset = t.config.load.dataset.slice(), a.startContainerClassName = a.newContainerClassName = n.activeContainerClassName, a.show = t.targets.slice(), n = t.callFilters("stateGetInitialState", n, arguments) } else n.activeFilter = t.parseFilterArgs([t.config.load.filter]).command, n.activeSort = t.parseSortArgs([t.config.load.sort]).command, n.totalTargets = t.targets.length, n = t.callFilters("stateGetInitialState", n, arguments), n.activeSort.collection || n.activeSort.attribute || "random" === n.activeSort.order || "desc" === n.activeSort.order ? (a.newSort = n.activeSort, t.sortOperation(a), t.printSort(!1, a), t.targets = a.newOrder) : a.startOrder = a.newOrder = t.targets, a.startFilter = a.newFilter = n.activeFilter, a.startSort = a.newSort = n.activeSort, a.startContainerClassName = a.newContainerClassName = n.activeContainerClassName, "all" === a.newFilter.selector ? a.newFilter.selector = t.config.selectors.target : "none" === a.newFilter.selector && (a.newFilter.selector = ""); return a = t.callFilters("operationGetInitialState", a, [n]), t.lastOperation = a, a.newFilter && t.filterOperation(a), n = t.buildState(a) }, cacheDom: function(t, e) { var n = this; n.callActions("beforeCacheDom", arguments), n.dom.document = e, n.dom.body = n.dom.document.querySelector("body"), n.dom.container = t, n.dom.parent = t, n.callActions("afterCacheDom", arguments) }, indexTargets: function() { var t = this, a = null, i = null, o = null, r = -1; if (t.callActions("beforeIndexTargets", arguments), t.dom.targets = t.config.layout.allowNestedTargets ? t.dom.container.querySelectorAll(t.config.selectors.target) : n.children(t.dom.container, t.config.selectors.target, t.dom.document), t.dom.targets = n.arrayFromList(t.dom.targets), t.targets = [], (o = t.config.load.dataset) && o.length !== t.dom.targets.length) throw new Error(e.messages.errorDatasetPrerenderedMismatch()); if (t.dom.targets.length) { for (r = 0; i = t.dom.targets[r]; r++) a = new e.Target, a.init(i, t, o ? o[r] : void 0), a.isInDom = !0, t.targets.push(a); t.dom.parent = t.dom.targets[0].parentElement === t.dom.container ? t.dom.container : t.dom.targets[0].parentElement } t.origOrder = t.targets, t.callActions("afterIndexTargets", arguments) }, initControls: function() { var t = this, n = "", a = null, i = null, o = null, r = null, s = null, l = -1, c = -1; switch (t.callActions("beforeInitControls", arguments), t.config.controls.scope) { case "local": o = t.dom.container; break; case "global": o = t.dom.document; break; default: throw new Error(e.messages.errorConfigInvalidControlsScope()) } for (l = 0; n = e.controlDefinitions[l]; l++) if (t.config.controls.live || n.live) { if (n.parent) { if (r = t.dom[n.parent], !r || r.length < 0) continue; "number" != typeof r.length && (r = [r]) } else r = [o]; for (c = 0; i = r[c]; c++) s = t.getControl(i, n.type, n.selector), t.controls.push(s) } else for (a = o.querySelectorAll(t.config.selectors.control + n.selector), c = 0; i = a[c]; c++) s = t.getControl(i, n.type, ""), s && t.controls.push(s); t.callActions("afterInitControls", arguments) }, getControl: function(t, a, i) { var o = this, r = null, s = -1; if (o.callActions("beforeGetControl", arguments), !i) for (s = 0; r = e.controls[s]; s++) { if (r.el === t && r.isBound(o)) return o.callFilters("controlGetControl", null, arguments); if (r.el === t && r.type === a && r.selector === i) return r.addBinding(o), o.callFilters("controlGetControl", r, arguments) } return r = new e.Control, r.init(t, a, i), r.classNames.base = n.getClassname(o.config.classNames, a), r.classNames.active = n.getClassname(o.config.classNames, a, o.config.classNames.modifierActive), r.classNames.disabled = n.getClassname(o.config.classNames, a, o.config.classNames.modifierDisabled), r.addBinding(o), o.callFilters("controlGetControl", r, arguments) }, getToggleSelector: function() { var t = this, e = "or" === t.config.controls.toggleLogic ? ", " : "", a = ""; return t.callActions("beforeGetToggleSelector", arguments), t.toggleArray = n.clean(t.toggleArray), a = t.toggleArray.join(e), "" === a && (a = t.config.controls.toggleDefault), t.callFilters("selectorGetToggleSelector", a, arguments) }, buildToggleArray: function(t, e) { var a = this, i = ""; if (a.callActions("beforeBuildToggleArray", arguments), t && t.filter) i = t.filter.selector.replace(/\s/g, ""); else { if (!e) return; i = e.activeFilter.selector.replace(/\s/g, "") } i !== a.config.selectors.target && "all" !== i || (i = ""), "or" === a.config.controls.toggleLogic ? a.toggleArray = i.split(",") : a.toggleArray = a.splitCompoundSelector(i), a.toggleArray = n.clean(a.toggleArray), a.callActions("afterBuildToggleArray", arguments) }, splitCompoundSelector: function(t) { var e = t.split(/([\.\[])/g), n = [], a = "", i = -1; for ("" === e[0] && e.shift(), i = 0; i < e.length; i++) i % 2 === 0 && (a = ""), a += e[i], i % 2 !== 0 && n.push(a); return n }, updateControls: function(t) { var a = this, i = null, o = new e.CommandMultimix, r = -1; for (a.callActions("beforeUpdateControls", arguments), t.filter ? o.filter = t.filter.selector : o.filter = a.state.activeFilter.selector, t.sort ? o.sort = a.buildSortString(t.sort) : o.sort = a.buildSortString(a.state.activeSort), o.filter === a.config.selectors.target && (o.filter = "all"), "" === o.filter && (o.filter = "none"), n.freeze(o), r = 0; i = a.controls[r]; r++) i.update(o, a.toggleArray); a.callActions("afterUpdateControls", arguments) }, buildSortString: function(t) { var e = this, n = ""; return n += t.sortString, t.next && (n += " " + e.buildSortString(t.next)), n }, insertTargets: function(t, a) { var i = this, o = null, r = -1, s = null, l = null, c = null, u = -1; if (i.callActions("beforeInsertTargets", arguments), "undefined" == typeof t.index && (t.index = 0), o = i.getNextSibling(t.index, t.sibling, t.position), s = i.dom.document.createDocumentFragment(), r = o ? n.index(o, i.config.selectors.target) : i.targets.length, t.collection) { for (u = 0; c = t.collection[u]; u++) { if (i.dom.targets.indexOf(c) > -1) throw new Error(e.messages.errorInsertPreexistingElement()); c.style.display = "none", s.appendChild(c), s.appendChild(i.dom.document.createTextNode(" ")), n.isElement(c, i.dom.document) && c.matches(i.config.selectors.target) && (l = new e.Target, l.init(c, i), l.isInDom = !0, i.targets.splice(r, 0, l), r++) } i.dom.parent.insertBefore(s, o) } a.startOrder = i.origOrder = i.targets, i.callActions("afterInsertTargets", arguments) }, getNextSibling: function(t, e, n) { var a = this, i = null; return t = Math.max(t, 0), e && "before" === n ? i = e : e && "after" === n ? i = e.nextElementSibling || null : a.targets.length > 0 && "undefined" != typeof t ? i = t < a.targets.length || !a.targets.length ? a.targets[t].dom.el : a.targets[a.targets.length - 1].dom.el.nextElementSibling : 0 === a.targets.length && a.dom.parent.children.length > 0 && (a.config.layout.siblingAfter ? i = a.config.layout.siblingAfter : a.config.layout.siblingBefore ? i = a.config.layout.siblingBefore.nextElementSibling : a.dom.parent.children[0]), a.callFilters("elementGetNextSibling", i, arguments) }, filterOperation: function(t) { var e = this, n = !1, a = -1, i = "", o = null, r = -1; for (e.callActions("beforeFilterOperation", arguments), i = t.newFilter.action, r = 0; o = t.newOrder[r]; r++) n = t.newFilter.collection ? t.newFilter.collection.indexOf(o.dom.el) > -1 : "" !== t.newFilter.selector && o.dom.el.matches(t.newFilter.selector), e.evaluateHideShow(n, o, i, t); if (t.toRemove.length) for (r = 0; o = t.show[r]; r++) t.toRemove.indexOf(o) > -1 && (t.show.splice(r, 1), (a = t.toShow.indexOf(o)) > -1 && t.toShow.splice(a, 1), t.toHide.push(o), t.hide.push(o), r--); t.matching = t.show.slice(), 0 === t.show.length && "" !== t.newFilter.selector && 0 !== e.targets.length && (t.hasFailed = !0), e.callActions("afterFilterOperation", arguments) }, evaluateHideShow: function(t, e, n, a) { var i = this, o = !1, r = Array.prototype.slice.call(arguments, 1); o = i.callFilters("testResultEvaluateHideShow", t, r), i.callActions("beforeEvaluateHideShow", arguments), o === !0 && "show" === n || o === !1 && "hide" === n ? (a.show.push(e), !e.isShown && a.toShow.push(e)) : (a.hide.push(e), e.isShown && a.toHide.push(e)), i.callActions("afterEvaluateHideShow", arguments) }, sortOperation: function(t) { var a = this, i = [], o = null, r = null, s = -1; if (a.callActions("beforeSortOperation", arguments), t.startOrder = a.targets, t.newSort.collection) { for (i = [], s = 0; r = t.newSort.collection[s]; s++) { if (a.dom.targets.indexOf(r) < 0) throw new Error(e.messages.errorSortNonExistentElement()); o = new e.Target, o.init(r, a), o.isInDom = !0, i.push(o) } t.newOrder = i } else "random" === t.newSort.order ? t.newOrder = n.arrayShuffle(t.startOrder) : "" === t.newSort.attribute ? (t.newOrder = a.origOrder.slice(), "desc" === t.newSort.order && t.newOrder.reverse()) : (t.newOrder = t.startOrder.slice(), t.newOrder.sort(function(e, n) { return a.compare(e, n, t.newSort) })); n.isEqualArray(t.newOrder, t.startOrder) && (t.willSort = !1), a.callActions("afterSortOperation", arguments) }, compare: function(t, e, n) { var a = this, i = n.order, o = a.getAttributeValue(t, n.attribute), r = a.getAttributeValue(e, n.attribute); return isNaN(1 * o) || isNaN(1 * r) ? (o = o.toLowerCase(), r = r.toLowerCase()) : (o = 1 * o, r = 1 * r), o < r ? "asc" === i ? -1 : 1 : o > r ? "asc" === i ? 1 : -1 : o === r && n.next ? a.compare(t, e, n.next) : 0 }, getAttributeValue: function(t, n) { var a = this, i = ""; return i = t.dom.el.getAttribute("data-" + n), null === i && a.config.debug.showWarnings && console.warn(e.messages.warningInconsistentSortingAttributes({ attribute: "data-" + n })), a.callFilters("valueGetAttributeValue", i || 0, arguments) }, printSort: function(e, a) { var i = this, o = e ? a.newOrder : a.startOrder, r = e ? a.startOrder : a.newOrder, s = o.length ? o[o.length - 1].dom.el.nextElementSibling : null, l = t.document.createDocumentFragment(), c = null, u = null, f = null, h = -1; for (i.callActions("beforePrintSort", arguments), h = 0; u = o[h]; h++) f = u.dom.el, "absolute" !== f.style.position && (n.removeWhitespace(f.previousSibling), f.parentElement.removeChild(f)); for (c = s ? s.previousSibling : i.dom.parent.lastChild, c && "#text" === c.nodeName && n.removeWhitespace(c), h = 0; u = r[h]; h++) f = u.dom.el, n.isElement(l.lastChild) && l.appendChild(t.document.createTextNode(" ")), l.appendChild(f); i.dom.parent.firstChild && i.dom.parent.firstChild !== s && l.insertBefore(t.document.createTextNode(" "), l.childNodes[0]), s ? (l.appendChild(t.document.createTextNode(" ")), i.dom.parent.insertBefore(l, s)) : i.dom.parent.appendChild(l), i.callActions("afterPrintSort", arguments) }, parseSortString: function(t, a) { var i = this, o = t.split(" "), r = a, s = [], l = -1; for (l = 0; l < o.length; l++) { switch (s = o[l].split(":"), r.sortString = o[l], r.attribute = n.dashCase(s[0]), r.order = s[1] || "asc", r.attribute) { case "default": r.attribute = ""; break; case "random": r.attribute = "", r.order = "random" } if (!r.attribute || "random" === r.order) break; l < o.length - 1 && (r.next = new e.CommandSort, n.freeze(r), r = r.next) } return i.callFilters("commandsParseSort", a, arguments) }, parseEffects: function() { var t = this, n = "", a = t.config.animation.effectsIn || t.config.animation.effects, i = t.config.animation.effectsOut || t.config.animation.effects; t.callActions("beforeParseEffects", arguments), t.effectsIn = new e.StyleData, t.effectsOut = new e.StyleData, t.transformIn = [], t.transformOut = [], t.effectsIn.opacity = t.effectsOut.opacity = 1, t.parseEffect("fade", a, t.effectsIn, t.transformIn), t.parseEffect("fade", i, t.effectsOut, t.transformOut, !0); for (n in e.transformDefaults) e.transformDefaults[n] instanceof e.TransformData && (t.parseEffect(n, a, t.effectsIn, t.transformIn), t.parseEffect(n, i, t.effectsOut, t.transformOut, !0)); t.parseEffect("stagger", a, t.effectsIn, t.transformIn), t.parseEffect("stagger", i, t.effectsOut, t.transformOut, !0), t.callActions("afterParseEffects", arguments) }, parseEffect: function(t, n, a, i, o) { var r = this, s = /\(([^)]+)\)/, l = -1, c = "", u = [], f = "", h = ["%", "px", "em", "rem", "vh", "vw", "deg"], d = "", m = -1; if (r.callActions("beforeParseEffect", arguments), "string" != typeof n) throw new TypeError(e.messages.errorConfigInvalidAnimationEffects()); if (n.indexOf(t) < 0) return void("stagger" === t && (r.staggerDuration = 0)); switch (l = n.indexOf(t + "("), l > -1 && (c = n.substring(l), u = s.exec(c), f = u[1]), t) { case "fade": a.opacity = f ? parseFloat(f) : 0; break; case "stagger": r.staggerDuration = f ? parseFloat(f) : 100; break; default: if (o && r.config.animation.reverseOut && "scale" !== t ? a[t].value = (f ? parseFloat(f) : e.transformDefaults[t].value) * -1 : a[t].value = f ? parseFloat(f) : e.transformDefaults[t].value, f) { for (m = 0; d = h[m]; m++) if (f.indexOf(d) > -1) { a[t].unit = d; break } } else a[t].unit = e.transformDefaults[t].unit; i.push(t + "(" + a[t].value + a[t].unit + ")") } r.callActions("afterParseEffect", arguments) }, buildState: function(t) { var n = this, a = new e.State, i = null, o = -1; for (n.callActions("beforeBuildState", arguments), o = 0; i = n.targets[o]; o++)(!t.toRemove.length || t.toRemove.indexOf(i) < 0) && a.targets.push(i.dom.el); for (o = 0; i = t.matching[o]; o++) a.matching.push(i.dom.el); for (o = 0; i = t.show[o]; o++) a.show.push(i.dom.el); for (o = 0; i = t.hide[o]; o++)(!t.toRemove.length || t.toRemove.indexOf(i) < 0) && a.hide.push(i.dom.el); return a.id = n.id, a.container = n.dom.container, a.activeFilter = t.newFilter, a.activeSort = t.newSort, a.activeDataset = t.newDataset, a.activeContainerClassName = t.newContainerClassName, a.hasFailed = t.hasFailed, a.totalTargets = n.targets.length, a.totalShow = t.show.length, a.totalHide = t.hide.length, a.totalMatching = t.matching.length, a.triggerElement = t.triggerElement, n.callFilters("stateBuildState", a, arguments) }, goMix: function(a, i) { var o = this, r = null; return o.callActions("beforeGoMix", arguments), o.config.animation.duration && o.config.animation.effects && n.isVisible(o.dom.container) || (a = !1), i.toShow.length || i.toHide.length || i.willSort || i.willChangeLayout || (a = !1), i.startState.show.length || i.show.length || (a = !1), e.events.fire("mixStart", o.dom.container, { state: i.startState, futureState: i.newState, instance: o }, o.dom.document), "function" == typeof o.config.callbacks.onMixStart && o.config.callbacks.onMixStart.call(o.dom.container, i.startState, i.newState, o), n.removeClass(o.dom.container, n.getClassname(o.config.classNames, "container", o.config.classNames.modifierFailed)), r = o.userDeferred ? o.userDeferred : o.userDeferred = n.defer(e.libraries), o.isBusy = !0, a && e.features.has.transitions ? (t.pageYOffset !== i.docState.scrollTop && t.scrollTo(i.docState.scrollLeft, i.docState.scrollTop), o.config.animation.applyPerspective && (o.dom.parent.style[e.features.perspectiveProp] = o.config.animation.perspectiveDistance, o.dom.parent.style[e.features.perspectiveOriginProp] = o.config.animation.perspectiveOrigin), o.config.animation.animateResizeContainer && i.startHeight !== i.newHeight && i.viewportDeltaY !== i.startHeight - i.newHeight && (o.dom.parent.style.height = i.startHeight + "px"), o.config.animation.animateResizeContainer && i.startWidth !== i.newWidth && i.viewportDeltaX !== i.startWidth - i.newWidth && (o.dom.parent.style.width = i.startWidth + "px"), i.startHeight === i.newHeight && (o.dom.parent.style.height = i.startHeight + "px"), i.startWidth === i.newWidth && (o.dom.parent.style.width = i.startWidth + "px"), i.startHeight === i.newHeight && i.startWidth === i.newWidth && (o.dom.parent.style.overflow = "hidden"), requestAnimationFrame(function() { o.moveTargets(i) }), o.callFilters("promiseGoMix", r.promise, arguments)) : (o.config.debug.fauxAsync ? setTimeout(function() { o.cleanUp(i) }, o.config.animation.duration) : o.cleanUp(i), o.callFilters("promiseGoMix", r.promise, arguments)) }, getStartMixData: function(n) { var a = this, i = t.getComputedStyle(a.dom.parent), o = a.dom.parent.getBoundingClientRect(), r = null, s = {}, l = -1, c = i[e.features.boxSizingProp]; for (a.incPadding = "border-box" === c, a.callActions("beforeGetStartMixData", arguments), l = 0; r = n.show[l]; l++) s = r.getPosData(), n.showPosData[l] = { startPosData: s }; for (l = 0; r = n.toHide[l]; l++) s = r.getPosData(), n.toHidePosData[l] = { startPosData: s }; n.startX = o.left, n.startY = o.top, n.startHeight = a.incPadding ? o.height : o.height - parseFloat(i.paddingTop) - parseFloat(i.paddingBottom) - parseFloat(i.borderTop) - parseFloat(i.borderBottom), n.startWidth = a.incPadding ? o.width : o.width - parseFloat(i.paddingLeft) - parseFloat(i.paddingRight) - parseFloat(i.borderLeft) - parseFloat(i.borderRight), a.callActions("afterGetStartMixData", arguments) }, setInter: function(t) { var e = this, a = null, i = -1; for (e.callActions("beforeSetInter", arguments), e.config.animation.clampHeight && (e.dom.parent.style.height = t.startHeight + "px", e.dom.parent.style.overflow = "hidden"), e.config.animation.clampWidth && (e.dom.parent.style.width = t.startWidth + "px", e.dom.parent.style.overflow = "hidden"), i = 0; a = t.toShow[i]; i++) a.show(); t.willChangeLayout && (n.removeClass(e.dom.container, t.startContainerClassName), n.addClass(e.dom.container, t.newContainerClassName)), e.callActions("afterSetInter", arguments) }, getInterMixData: function(t) { var e = this, n = null, a = -1; for (e.callActions("beforeGetInterMixData", arguments), a = 0; n = t.show[a]; a++) t.showPosData[a].interPosData = n.getPosData(); for (a = 0; n = t.toHide[a]; a++) t.toHidePosData[a].interPosData = n.getPosData(); e.callActions("afterGetInterMixData", arguments) }, setFinal: function(t) { var e = this, n = null, a = -1; for (e.callActions("beforeSetFinal", arguments), t.willSort && e.printSort(!1, t), a = 0; n = t.toHide[a]; a++) n.hide(); e.callActions("afterSetFinal", arguments) }, getFinalMixData: function(e) { var a = this, i = null, o = null, r = null, s = -1; for (a.callActions("beforeGetFinalMixData", arguments), s = 0; r = e.show[s]; s++) e.showPosData[s].finalPosData = r.getPosData(); for (s = 0; r = e.toHide[s]; s++) e.toHidePosData[s].finalPosData = r.getPosData(); for ((a.config.animation.clampHeight || a.config.animation.clampWidth) && (a.dom.parent.style.height = a.dom.parent.style.width = a.dom.parent.style.overflow = ""), a.incPadding || (i = t.getComputedStyle(a.dom.parent)), o = a.dom.parent.getBoundingClientRect(), e.newX = o.left, e.newY = o.top, e.newHeight = a.incPadding ? o.height : o.height - parseFloat(i.paddingTop) - parseFloat(i.paddingBottom) - parseFloat(i.borderTop) - parseFloat(i.borderBottom), e.newWidth = a.incPadding ? o.width : o.width - parseFloat(i.paddingLeft) - parseFloat(i.paddingRight) - parseFloat(i.borderLeft) - parseFloat(i.borderRight), e.viewportDeltaX = e.docState.viewportWidth - this.dom.document.documentElement.clientWidth, e.viewportDeltaY = e.docState.viewportHeight - this.dom.document.documentElement.clientHeight, e.willSort && a.printSort(!0, e), s = 0; r = e.toShow[s]; s++) r.hide(); for (s = 0; r = e.toHide[s]; s++) r.show(); e.willChangeLayout && (n.removeClass(a.dom.container, e.newContainerClassName), n.addClass(a.dom.container, a.config.layout.containerClassName)), a.callActions("afterGetFinalMixData", arguments) }, getTweenData: function(t) { var n = this, a = null, i = null, o = Object.getOwnPropertyNames(n.effectsIn), r = "", s = null, l = -1, c = -1, u = -1, f = -1; for (n.callActions("beforeGetTweenData", arguments), u = 0; a = t.show[u]; u++) for (i = t.showPosData[u], i.posIn = new e.StyleData, i.posOut = new e.StyleData, i.tweenData = new e.StyleData, a.isShown ? (i.posIn.x = i.startPosData.x - i.interPosData.x, i.posIn.y = i.startPosData.y - i.interPosData.y) : i.posIn.x = i.posIn.y = 0, i.posOut.x = i.finalPosData.x - i.interPosData.x, i.posOut.y = i.finalPosData.y - i.interPosData.y, i.posIn.opacity = a.isShown ? 1 : n.effectsIn.opacity, i.posOut.opacity = 1, i.tweenData.opacity = i.posOut.opacity - i.posIn.opacity, a.isShown || n.config.animation.nudge || (i.posIn.x = i.posOut.x, i.posIn.y = i.posOut.y), i.tweenData.x = i.posOut.x - i.posIn.x, i.tweenData.y = i.posOut.y - i.posIn.y, n.config.animation.animateResizeTargets && (i.posIn.width = i.startPosData.width, i.posIn.height = i.startPosData.height, l = (i.startPosData.width || i.finalPosData.width) - i.interPosData.width, i.posIn.marginRight = i.startPosData.marginRight - l, c = (i.startPosData.height || i.finalPosData.height) - i.interPosData.height, i.posIn.marginBottom = i.startPosData.marginBottom - c, i.posOut.width = i.finalPosData.width, i.posOut.height = i.finalPosData.height, l = (i.finalPosData.width || i.startPosData.width) - i.interPosData.width, i.posOut.marginRight = i.finalPosData.marginRight - l, c = (i.finalPosData.height || i.startPosData.height) - i.interPosData.height, i.posOut.marginBottom = i.finalPosData.marginBottom - c, i.tweenData.width = i.posOut.width - i.posIn.width, i.tweenData.height = i.posOut.height - i.posIn.height, i.tweenData.marginRight = i.posOut.marginRight - i.posIn.marginRight, i.tweenData.marginBottom = i.posOut.marginBottom - i.posIn.marginBottom), f = 0; r = o[f]; f++) s = n.effectsIn[r], s instanceof e.TransformData && s.value && (i.posIn[r].value = s.value, i.posOut[r].value = 0, i.tweenData[r].value = i.posOut[r].value - i.posIn[r].value, i.posIn[r].unit = i.posOut[r].unit = i.tweenData[r].unit = s.unit); for (u = 0; a = t.toHide[u]; u++) for (i = t.toHidePosData[u], i.posIn = new e.StyleData, i.posOut = new e.StyleData, i.tweenData = new e.StyleData, i.posIn.x = a.isShown ? i.startPosData.x - i.interPosData.x : 0, i.posIn.y = a.isShown ? i.startPosData.y - i.interPosData.y : 0, i.posOut.x = n.config.animation.nudge ? 0 : i.posIn.x, i.posOut.y = n.config.animation.nudge ? 0 : i.posIn.y, i.tweenData.x = i.posOut.x - i.posIn.x, i.tweenData.y = i.posOut.y - i.posIn.y, n.config.animation.animateResizeTargets && (i.posIn.width = i.startPosData.width, i.posIn.height = i.startPosData.height, l = i.startPosData.width - i.interPosData.width, i.posIn.marginRight = i.startPosData.marginRight - l, c = i.startPosData.height - i.interPosData.height, i.posIn.marginBottom = i.startPosData.marginBottom - c), i.posIn.opacity = 1, i.posOut.opacity = n.effectsOut.opacity, i.tweenData.opacity = i.posOut.opacity - i.posIn.opacity, f = 0; r = o[f]; f++) s = n.effectsOut[r], s instanceof e.TransformData && s.value && (i.posIn[r].value = 0, i.posOut[r].value = s.value, i.tweenData[r].value = i.posOut[r].value - i.posIn[r].value, i.posIn[r].unit = i.posOut[r].unit = i.tweenData[r].unit = s.unit); n.callActions("afterGetTweenData", arguments) }, moveTargets: function(t) { var a = this, i = null, o = null, r = null, s = "", l = !1, c = -1, u = -1, f = a.checkProgress.bind(a); for (a.callActions("beforeMoveTargets", arguments), u = 0; i = t.show[u]; u++) o = new e.IMoveData, r = t.showPosData[u], s = i.isShown ? "none" : "show", l = a.willTransition(s, t.hasEffect, r.posIn, r.posOut), l && c++, i.show(), o.posIn = r.posIn, o.posOut = r.posOut, o.statusChange = s, o.staggerIndex = c, o.operation = t, o.callback = l ? f : null, i.move(o); for (u = 0; i = t.toHide[u]; u++) r = t.toHidePosData[u], o = new e.IMoveData, s = "hide", l = a.willTransition(s, r.posIn, r.posOut), o.posIn = r.posIn, o.posOut = r.posOut, o.statusChange = s, o.staggerIndex = u, o.operation = t, o.callback = l ? f : null, i.move(o); a.config.animation.animateResizeContainer && (a.dom.parent.style[e.features.transitionProp] = "height " + a.config.animation.duration + "ms ease, width " + a.config.animation.duration + "ms ease ", requestAnimationFrame(function() { t.startHeight !== t.newHeight && t.viewportDeltaY !== t.startHeight - t.newHeight && (a.dom.parent.style.height = t.newHeight + "px"), t.startWidth !== t.newWidth && t.viewportDeltaX !== t.startWidth - t.newWidth && (a.dom.parent.style.width = t.newWidth + "px") })), t.willChangeLayout && (n.removeClass(a.dom.container, a.config.layout.ContainerClassName), n.addClass(a.dom.container, t.newContainerClassName)), a.callActions("afterMoveTargets", arguments) }, hasEffect: function() { var t = this, e = ["scale", "translateX", "translateY", "translateZ", "rotateX", "rotateY", "rotateZ"], n = "", a = null, i = !1, o = -1, r = -1; if (1 !== t.effectsIn.opacity) return t.callFilters("resultHasEffect", !0, arguments); for (r = 0; n = e[r]; r++) if (a = t.effectsIn[n], o = "undefined" !== a.value ? a.value : a, 0 !== o) { i = !0; break } return t.callFilters("resultHasEffect", i, arguments) }, willTransition: function(t, e, a, i) { var o = this, r = !1; return r = !!n.isVisible(o.dom.container) && (!!("none" !== t && e || a.x !== i.x || a.y !== i.y) || !!o.config.animation.animateResizeTargets && (a.width !== i.width || a.height !== i.height || a.marginRight !== i.marginRight || a.marginTop !== i.marginTop)), o.callFilters("resultWillTransition", r, arguments) }, checkProgress: function(t) { var e = this; e.targetsDone++, e.targetsBound === e.targetsDone && e.cleanUp(t) }, cleanUp: function(t) { var a = this, i = null, o = null, r = null, s = null, l = -1; for (a.callActions("beforeCleanUp", arguments), a.targetsMoved = a.targetsImmovable = a.targetsBound = a.targetsDone = 0, l = 0; i = t.show[l]; l++) i.cleanUp(), i.show(); for (l = 0; i = t.toHide[l]; l++) i.cleanUp(), i.hide(); if (t.willSort && a.printSort(!1, t), a.dom.parent.style[e.features.transitionProp] = a.dom.parent.style.height = a.dom.parent.style.width = a.dom.parent.style.overflow = a.dom.parent.style[e.features.perspectiveProp] = a.dom.parent.style[e.features.perspectiveOriginProp] = "", t.willChangeLayout && (n.removeClass(a.dom.container, t.startContainerClassName), n.addClass(a.dom.container, t.newContainerClassName)), t.toRemove.length) { for (l = 0; i = a.targets[l]; l++) t.toRemove.indexOf(i) > -1 && ((o = i.dom.el.previousSibling) && "#text" === o.nodeName && (r = i.dom.el.nextSibling) && "#text" === r.nodeName && n.removeWhitespace(o), t.willSort || a.dom.parent.removeChild(i.dom.el), a.targets.splice(l, 1), i.isInDom = !1, l--); a.origOrder = a.targets } t.willSort && (a.targets = t.newOrder), a.state = t.newState, a.lastOperation = t, a.dom.targets = a.state.targets, e.events.fire("mixEnd", a.dom.container, { state: a.state, instance: a }, a.dom.document), "function" == typeof a.config.callbacks.onMixEnd && a.config.callbacks.onMixEnd.call(a.dom.container, a.state, a), t.hasFailed && (e.events.fire("mixFail", a.dom.container, { state: a.state, instance: a }, a.dom.document), "function" == typeof a.config.callbacks.onMixFail && a.config.callbacks.onMixFail.call(a.dom.container, a.state, a), n.addClass(a.dom.container, n.getClassname(a.config.classNames, "container", a.config.classNames.modifierFailed))), "function" == typeof a.userCallback && a.userCallback.call(a.dom.container, a.state, a), "function" == typeof a.userDeferred.resolve && a.userDeferred.resolve(a.state), a.userCallback = null, a.userDeferred = null, a.lastClicked = null, a.isToggling = !1, a.isBusy = !1, a.queue.length && (a.callActions("beforeReadQueueCleanUp", arguments), s = a.queue.shift(), a.userDeferred = s.deferred, a.isToggling = s.isToggling, a.lastClicked = s.triggerElement, s.instruction.command instanceof e.CommandMultimix ? a.multimix.apply(a, s.args) : a.dataset.apply(a, s.args)), a.callActions("afterCleanUp", arguments) }, parseMultimixArgs: function(t) { var a = this, i = new e.UserInstruction, o = null, r = -1; for (i.animate = a.config.animation.enable, i.command = new e.CommandMultimix, r = 0; r < t.length; r++) o = t[r], null !== o && ("object" == typeof o ? n.extend(i.command, o) : "boolean" == typeof o ? i.animate = o : "function" == typeof o && (i.callback = o)); return !i.command.insert || i.command.insert instanceof e.CommandInsert || (i.command.insert = a.parseInsertArgs([i.command.insert]).command), !i.command.remove || i.command.remove instanceof e.CommandRemove || (i.command.remove = a.parseRemoveArgs([i.command.remove]).command), !i.command.filter || i.command.filter instanceof e.CommandFilter || (i.command.filter = a.parseFilterArgs([i.command.filter]).command), !i.command.sort || i.command.sort instanceof e.CommandSort || (i.command.sort = a.parseSortArgs([i.command.sort]).command), !i.command.changeLayout || i.command.changeLayout instanceof e.CommandChangeLayout || (i.command.changeLayout = a.parseChangeLayoutArgs([i.command.changeLayout]).command), i = a.callFilters("instructionParseMultimixArgs", i, arguments), n.freeze(i), i }, parseFilterArgs: function(t) { var a = this, i = new e.UserInstruction, o = null, r = -1; for (i.animate = a.config.animation.enable, i.command = new e.CommandFilter, r = 0; r < t.length; r++) o = t[r], "string" == typeof o ? i.command.selector = o : null === o ? i.command.collection = [] : "object" == typeof o && n.isElement(o, a.dom.document) ? i.command.collection = [o] : "object" == typeof o && "undefined" != typeof o.length ? i.command.collection = n.arrayFromList(o) : "object" == typeof o ? n.extend(i.command, o) : "boolean" == typeof o ? i.animate = o : "function" == typeof o && (i.callback = o); if (i.command.selector && i.command.collection) throw new Error(e.messages.errorFilterInvalidArguments()); return i = a.callFilters("instructionParseFilterArgs", i, arguments), n.freeze(i), i }, parseSortArgs: function(t) { var a = this, i = new e.UserInstruction, o = null, r = "", s = -1; for (i.animate = a.config.animation.enable, i.command = new e.CommandSort, s = 0; s < t.length; s++) if (o = t[s], null !== o) switch (typeof o) { case "string": r = o; break; case "object": o.length && (i.command.collection = n.arrayFromList(o)); break; case "boolean": i.animate = o; break; case "function": i.callback = o } return r && (i.command = a.parseSortString(r, i.command)), i = a.callFilters("instructionParseSortArgs", i, arguments), n.freeze(i), i }, parseInsertArgs: function(t) { var a = this, i = new e.UserInstruction, o = null, r = -1; for (i.animate = a.config.animation.enable, i.command = new e.CommandInsert, r = 0; r < t.length; r++) o = t[r], null !== o && ("number" == typeof o ? i.command.index = o : "string" == typeof o && ["before", "after"].indexOf(o) > -1 ? i.command.position = o : "string" == typeof o ? i.command.collection = n.arrayFromList(n.createElement(o).childNodes) : "object" == typeof o && n.isElement(o, a.dom.document) ? i.command.collection.length ? i.command.sibling = o : i.command.collection = [o] : "object" == typeof o && o.length ? i.command.collection.length ? i.command.sibling = o[0] : i.command.collection = o : "object" == typeof o && o.childNodes && o.childNodes.length ? i.command.collection.length ? i.command.sibling = o.childNodes[0] : i.command.collection = n.arrayFromList(o.childNodes) : "object" == typeof o ? n.extend(i.command, o) : "boolean" == typeof o ? i.animate = o : "function" == typeof o && (i.callback = o)); if (i.command.index && i.command.sibling) throw new Error(e.messages.errorInsertInvalidArguments()); return !i.command.collection.length && a.config.debug.showWarnings && console.warn(e.messages.warningInsertNoElements()), i = a.callFilters("instructionParseInsertArgs", i, arguments), n.freeze(i), i }, parseRemoveArgs: function(t) { var a = this, i = new e.UserInstruction, o = null, r = null, s = -1; for (i.animate = a.config.animation.enable, i.command = new e.CommandRemove, s = 0; s < t.length; s++) if (r = t[s], null !== r) switch (typeof r) { case "number": a.targets[r] && (i.command.targets[0] = a.targets[r]); break; case "string": i.command.collection = n.arrayFromList(a.dom.parent.querySelectorAll(r)); break; case "object": r && r.length ? i.command.collection = r : n.isElement(r, a.dom.document) ? i.command.collection = [r] : n.extend(i.command, r); break; case "boolean": i.animate = r; break; case "function": i.callback = r } if (i.command.collection.length) for (s = 0; o = a.targets[s]; s++) i.command.collection.indexOf(o.dom.el) > -1 && i.command.targets.push(o); return !i.command.targets.length && a.config.debug.showWarnings && console.warn(e.messages.warningRemoveNoElements()), n.freeze(i), i }, parseDatasetArgs: function(t) { var a = this, i = new e.UserInstruction, o = null, r = -1; for (i.animate = a.config.animation.enable, i.command = new e.CommandDataset, r = 0; r < t.length; r++) if (o = t[r], null !== o) switch (typeof o) { case "object": Array.isArray(o) || "number" == typeof o.length ? i.command.dataset = o : n.extend(i.command, o); break; case "boolean": i.animate = o; break; case "function": i.callback = o } return n.freeze(i), i }, parseChangeLayoutArgs: function(t) { var a = this, i = new e.UserInstruction, o = null, r = -1; for (i.animate = a.config.animation.enable, i.command = new e.CommandChangeLayout, r = 0; r < t.length; r++) if (o = t[r], null !== o) switch (typeof o) { case "string": i.command.containerClassName = o; break; case "object": n.extend(i.command, o); break; case "boolean": i.animate = o; break; case "function": i.callback = o } return n.freeze(i), i }, queueMix: function(t) { var a = this, i = null, o = ""; return a.callActions("beforeQueueMix", arguments), i = n.defer(e.libraries), a.config.animation.queue && a.queue.length < a.config.animation.queueLimit ? (t.deferred = i, a.queue.push(t), a.config.controls.enable && (a.isToggling ? (a.buildToggleArray(t.instruction.command), o = a.getToggleSelector(), a.updateControls({ filter: { selector: o } })) : a.updateControls(t.instruction.command))) : (a.config.debug.showWarnings && console.warn(e.messages.warningMultimixInstanceQueueFull()), i.resolve(a.state), e.events.fire("mixBusy", a.dom.container, { state: a.state, instance: a }, a.dom.document), "function" == typeof a.config.callbacks.onMixBusy && a.config.callbacks.onMixBusy.call(a.dom.container, a.state, a)), a.callFilters("promiseQueueMix", i.promise, arguments) }, getDataOperation: function(t) { var a = this, i = new e.Operation, o = []; if (i = a.callFilters("operationUnmappedGetDataOperation", i, arguments), a.dom.targets.length && !(o = a.state.activeDataset || []).length) throw new Error(e.messages.errorDatasetNotSet()); return i.id = n.randomHex(), i.startState = a.state, i.startDataset = o, i.newDataset = t.slice(), a.diffDatasets(i), i.startOrder = a.targets, i.newOrder = i.show, a.config.animation.enable && (a.getStartMixData(i), a.setInter(i), i.docState = n.getDocumentState(a.dom.document), a.getInterMixData(i), a.setFinal(i), a.getFinalMixData(i), a.parseEffects(), i.hasEffect = a.hasEffect(), a.getTweenData(i)), a.targets = i.show.slice(), i.newState = a.buildState(i), Array.prototype.push.apply(a.targets, i.toRemove), i = a.callFilters("operationMappedGetDataOperation", i, arguments) }, diffDatasets: function(t) { var a = this, i = [], o = [], r = [], s = null, l = null, c = null, u = null, f = null, h = {}, d = "", m = -1; for (a.callActions("beforeDiffDatasets", arguments), m = 0; s = t.newDataset[m]; m++) { if ("undefined" == typeof(d = s[a.config.data.uidKey]) || d.toString().length < 1) throw new TypeError(e.messages.errorDatasetInvalidUidKey({ uidKey: a.config.data.uidKey })); if (h[d]) throw new Error(e.messages.errorDatasetDuplicateUid({ uid: d })); h[d] = !0, (l = a.cache[d]) instanceof e.Target ? (a.config.data.dirtyCheck && !n.deepEquals(s, l.data) && (c = l.render(s), l.data = s, c !== l.dom.el && (l.isInDom && (l.unbindEvents(), a.dom.parent.replaceChild(c, l.dom.el)), l.isShown || (c.style.display = "none"), l.dom.el = c, l.isInDom && l.bindEvents())), c = l.dom.el) : (l = new e.Target, l.init(null, a, s), l.hide()), l.isInDom ? (f = l.dom.el.nextElementSibling, o.push(d), u && (u.lastElementChild && u.appendChild(a.dom.document.createTextNode(" ")), a.insertDatasetFrag(u, l.dom.el, r), u = null)) : (u || (u = a.dom.document.createDocumentFragment()), u.lastElementChild && u.appendChild(a.dom.document.createTextNode(" ")), u.appendChild(l.dom.el), l.isInDom = !0, l.unbindEvents(), l.bindEvents(), l.hide(), t.toShow.push(l), r.push(l)), t.show.push(l) } for (u && (f = f || a.config.layout.siblingAfter, f && u.appendChild(a.dom.document.createTextNode(" ")), a.insertDatasetFrag(u, f, r)), m = 0; s = t.startDataset[m]; m++) d = s[a.config.data.uidKey], l = a.cache[d], t.show.indexOf(l) < 0 ? (t.hide.push(l), t.toHide.push(l), t.toRemove.push(l)) : i.push(d); n.isEqualArray(i, o) || (t.willSort = !0), a.callActions("afterDiffDatasets", arguments) }, insertDatasetFrag: function(t, e, a) { var i = this, o = e ? n.arrayFromList(i.dom.parent.children).indexOf(e) : i.targets.length; for (i.dom.parent.insertBefore(t, e); a.length;) i.targets.splice(o, 0, a.shift()), o++ }, willSort: function(t, e) { var n = this, a = !1; return a = !!(n.config.behavior.liveSort || "random" === t.order || t.attribute !== e.attribute || t.order !== e.order || t.collection !== e.collection || null === t.next && e.next || t.next && null === e.next) || !(!t.next || !e.next) && n.willSort(t.next, e.next), n.callFilters("resultWillSort", a, arguments) }, show: function() { var t = this; return t.filter("all") }, hide: function() { var t = this; return t.filter("none") }, isMixing: function() { var t = this; return t.isBusy }, filter: function() { var t = this, e = t.parseFilterArgs(arguments); return t.multimix({ filter: e.command }, e.animate, e.callback) }, toggleOn: function() { var t = this, e = t.parseFilterArgs(arguments), n = e.command.selector, a = ""; return t.isToggling = !0, t.toggleArray.indexOf(n) < 0 && t.toggleArray.push(n), a = t.getToggleSelector(), t.multimix({ filter: a }, e.animate, e.callback) }, toggleOff: function() { var t = this, e = t.parseFilterArgs(arguments), n = e.command.selector, a = t.toggleArray.indexOf(n), i = ""; return t.isToggling = !0, a > -1 && t.toggleArray.splice(a, 1), i = t.getToggleSelector(), t.multimix({ filter: i }, e.animate, e.callback) }, sort: function() { var t = this, e = t.parseSortArgs(arguments); return t.multimix({ sort: e.command }, e.animate, e.callback) }, changeLayout: function() { var t = this, e = t.parseChangeLayoutArgs(arguments); return t.multimix({ changeLayout: e.command }, e.animate, e.callback) }, dataset: function() { var t = this, n = t.parseDatasetArgs(arguments), a = null, i = null, o = !1; return t.callActions("beforeDataset", arguments), t.isBusy ? (i = new e.QueueItem, i.args = arguments, i.instruction = n, t.queueMix(i)) : (n.callback && (t.userCallback = n.callback), o = n.animate ^ t.config.animation.enable ? n.animate : t.config.animation.enable, a = t.getDataOperation(n.command.dataset), t.goMix(o, a)) }, multimix: function() { var t = this, n = null, a = !1, i = null, o = t.parseMultimixArgs(arguments); return t.callActions("beforeMultimix", arguments), t.isBusy ? (i = new e.QueueItem, i.args = arguments, i.instruction = o, i.triggerElement = t.lastClicked, i.isToggling = t.isToggling, t.queueMix(i)) : (n = t.getOperation(o.command), t.config.controls.enable && (o.command.filter && !t.isToggling && (t.toggleArray.length = 0, t.buildToggleArray(n.command)), t.queue.length < 1 && t.updateControls(n.command)), o.callback && (t.userCallback = o.callback), a = o.animate ^ t.config.animation.enable ? o.animate : t.config.animation.enable, t.callFilters("operationMultimix", n, arguments), t.goMix(a, n)) }, getOperation: function(t) { var a = this, i = t.sort, o = t.filter, r = t.changeLayout, s = t.remove, l = t.insert, c = new e.Operation; return c = a.callFilters("operationUnmappedGetOperation", c, arguments), c.id = n.randomHex(), c.command = t, c.startState = a.state, c.triggerElement = a.lastClicked, a.isBusy ? (a.config.debug.showWarnings && console.warn(e.messages.warningGetOperationInstanceBusy()), null) : (l && a.insertTargets(l, c), s && (c.toRemove = s.targets), c.startSort = c.newSort = c.startState.activeSort, c.startOrder = c.newOrder = a.targets, i && (c.startSort = c.startState.activeSort, c.newSort = i, c.willSort = a.willSort(i, c.startState.activeSort), c.willSort && a.sortOperation(c)), c.startFilter = c.startState.activeFilter, o ? c.newFilter = o : c.newFilter = n.extend(new e.CommandFilter, c.startFilter), "all" === c.newFilter.selector ? c.newFilter.selector = a.config.selectors.target : "none" === c.newFilter.selector && (c.newFilter.selector = ""), a.filterOperation(c), c.startContainerClassName = c.startState.activeContainerClassName, r ? (c.newContainerClassName = r.containerClassName, c.newContainerClassName !== c.startContainerClassName && (c.willChangeLayout = !0)) : c.newContainerClassName = c.startContainerClassName, a.config.animation.enable && (a.getStartMixData(c), a.setInter(c), c.docState = n.getDocumentState(a.dom.document), a.getInterMixData(c), a.setFinal(c), a.getFinalMixData(c), a.parseEffects(), c.hasEffect = a.hasEffect(), a.getTweenData(c)), c.willSort && (a.targets = c.newOrder), c.newState = a.buildState(c), a.callFilters("operationMappedGetOperation", c, arguments)) }, tween: function(t, e) { var n = null, a = null, i = -1, o = -1; for (e = Math.min(e, 1), e = Math.max(e, 0), o = 0; n = t.show[o]; o++) a = t.showPosData[o], n.applyTween(a, e); for (o = 0; n = t.hide[o]; o++) n.isShown && n.hide(), (i = t.toHide.indexOf(n)) > -1 && (a = t.toHidePosData[i], n.isShown || n.show(), n.applyTween(a, e)) }, insert: function() { var t = this, e = t.parseInsertArgs(arguments); return t.multimix({ insert: e.command }, e.animate, e.callback) }, insertBefore: function() { var t = this, e = t.parseInsertArgs(arguments); return t.insert(e.command.collection, "before", e.command.sibling, e.animate, e.callback) }, insertAfter: function() { var t = this, e = t.parseInsertArgs(arguments); return t.insert(e.command.collection, "after", e.command.sibling, e.animate, e.callback) }, prepend: function() { var t = this, e = t.parseInsertArgs(arguments); return t.insert(0, e.command.collection, e.animate, e.callback) }, append: function() { var t = this, e = t.parseInsertArgs(arguments); return t.insert(t.state.totalTargets, e.command.collection, e.animate, e.callback) }, remove: function() { var t = this, e = t.parseRemoveArgs(arguments); return t.multimix({ remove: e.command }, e.animate, e.callback) }, getConfig: function(t) { var e = this, a = null; return a = t ? n.getProperty(e.config, t) : e.config, e.callFilters("valueGetConfig", a, arguments) }, configure: function(t) { var e = this; e.callActions("beforeConfigure", arguments), n.extend(e.config, t, !0, !0), e.callActions("afterConfigure", arguments) }, getState: function() { var t = this, a = null; return a = new e.State, n.extend(a, t.state), n.freeze(a), t.callFilters("stateGetState", a, arguments) }, forceRefresh: function() { var t = this; t.indexTargets() }, forceRender: function() { var t = this, e = null, n = null, a = ""; for (a in t.cache) e = t.cache[a], n = e.render(e.data), n !== e.dom.el && (e.isInDom && (e.unbindEvents(), t.dom.parent.replaceChild(n, e.dom.el)), e.isShown || (n.style.display = "none"), e.dom.el = n, e.isInDom && e.bindEvents()); t.state = t.buildState(t.lastOperation) }, destroy: function(t) { var n = this, a = null, i = null, o = 0; for (n.callActions("beforeDestroy", arguments), o = 0; a = n.controls[o]; o++) a.removeBinding(n); for (o = 0; i = n.targets[o]; o++) t && i.show(), i.unbindEvents(); n.dom.container.id.match(/^MixItUp/) && n.dom.container.removeAttribute("id"), delete e.instances[n.id], n.callActions("afterDestroy", arguments) } }), e.IMoveData = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.posIn = null, this.posOut = null, this.operation = null, this.callback = null, this.statusChange = "", this.duration = -1, this.staggerIndex = -1, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.IMoveData), e.IMoveData.prototype = Object.create(e.Base.prototype), e.IMoveData.prototype.constructor = e.IMoveData, e.TargetDom = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.el = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.TargetDom), e.TargetDom.prototype = Object.create(e.Base.prototype), e.TargetDom.prototype.constructor = e.TargetDom, e.Target = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.id = "", this.sortString = "", this.mixer = null, this.callback = null, this.isShown = !1, this.isBound = !1, this.isExcluded = !1, this.isInDom = !1, this.handler = null, this.operation = null, this.data = null, this.dom = new e.TargetDom, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.Target), e.Target.prototype = Object.create(e.Base.prototype), n.extend(e.Target.prototype, { constructor: e.Target, init: function(t, n, a) { var i = this, o = ""; if (i.callActions("beforeInit", arguments), i.mixer = n, t || (t = i.render(a)), i.cacheDom(t), i.bindEvents(), "none" !== i.dom.el.style.display && (i.isShown = !0), a && n.config.data.uidKey) { if ("undefined" == typeof(o = a[n.config.data.uidKey]) || o.toString().length < 1) throw new TypeError(e.messages.errorDatasetInvalidUidKey({ uidKey: n.config.data.uidKey })); i.id = o, i.data = a, n.cache[o] = i } i.callActions("afterInit", arguments) }, render: function(t) { var a = this, i = null, o = null, r = null, s = ""; if (a.callActions("beforeRender", arguments), i = a.callFilters("renderRender", a.mixer.config.render.target, arguments), "function" != typeof i) throw new TypeError(e.messages.errorDatasetRendererNotSet()); return s = i(t), s && "object" == typeof s && n.isElement(s) ? o = s : "string" == typeof s && (r = document.createElement("div"), r.innerHTML = s, o = r.firstElementChild), a.callFilters("elRender", o, arguments) }, cacheDom: function(t) { var e = this; e.callActions("beforeCacheDom", arguments), e.dom.el = t, e.callActions("afterCacheDom", arguments) }, getSortString: function(t) { var e = this, n = e.dom.el.getAttribute("data-" + t) || ""; e.callActions("beforeGetSortString", arguments), n = isNaN(1 * n) ? n.toLowerCase() : 1 * n, e.sortString = n, e.callActions("afterGetSortString", arguments) }, show: function() { var t = this; t.callActions("beforeShow", arguments), t.isShown || (t.dom.el.style.display = "", t.isShown = !0), t.callActions("afterShow", arguments) }, hide: function() { var t = this; t.callActions("beforeHide", arguments), t.isShown && (t.dom.el.style.display = "none", t.isShown = !1), t.callActions("afterHide", arguments) }, move: function(t) { var e = this; e.callActions("beforeMove", arguments), e.isExcluded || e.mixer.targetsMoved++, e.applyStylesIn(t), requestAnimationFrame(function() { e.applyStylesOut(t) }), e.callActions("afterMove", arguments) }, applyTween: function(t, n) { var a = this, i = "", o = null, r = t.posIn, s = [], l = new e.StyleData, c = -1; for (a.callActions("beforeApplyTween", arguments), l.x = r.x, l.y = r.y, 0 === n ? a.hide() : a.isShown || a.show(), c = 0; i = e.features.TWEENABLE[c]; c++) if (o = t.tweenData[i], "x" === i) { if (!o) continue; l.x = r.x + o * n } else if ("y" === i) { if (!o) continue; l.y = r.y + o * n } else if (o instanceof e.TransformData) { if (!o.value) continue; l[i].value = r[i].value + o.value * n, l[i].unit = o.unit, s.push(i + "(" + l[i].value + o.unit + ")") } else { if (!o) continue; l[i] = r[i] + o * n, a.dom.el.style[i] = l[i] }(l.x || l.y) && s.unshift("translate(" + l.x + "px, " + l.y + "px)"), s.length && (a.dom.el.style[e.features.transformProp] = s.join(" ")), a.callActions("afterApplyTween", arguments) }, applyStylesIn: function(t) { var n = this, a = t.posIn, i = 1 !== n.mixer.effectsIn.opacity, o = []; n.callActions("beforeApplyStylesIn", arguments), o.push("translate(" + a.x + "px, " + a.y + "px)"), n.mixer.config.animation.animateResizeTargets && ("show" !== t.statusChange && (n.dom.el.style.width = a.width + "px", n.dom.el.style.height = a.height + "px"), n.dom.el.style.marginRight = a.marginRight + "px", n.dom.el.style.marginBottom = a.marginBottom + "px"), i && (n.dom.el.style.opacity = a.opacity), "show" === t.statusChange && (o = o.concat(n.mixer.transformIn)), n.dom.el.style[e.features.transformProp] = o.join(" "), n.callActions("afterApplyStylesIn", arguments) }, applyStylesOut: function(t) { var n = this, a = [], i = [], o = n.mixer.config.animation.animateResizeTargets, r = "undefined" != typeof n.mixer.effectsIn.opacity; if (n.callActions("beforeApplyStylesOut", arguments), a.push(n.writeTransitionRule(e.features.transformRule, t.staggerIndex)), "none" !== t.statusChange && a.push(n.writeTransitionRule("opacity", t.staggerIndex, t.duration)), o && (a.push(n.writeTransitionRule("width", t.staggerIndex, t.duration)), a.push(n.writeTransitionRule("height", t.staggerIndex, t.duration)), a.push(n.writeTransitionRule("margin", t.staggerIndex, t.duration))), !t.callback) return n.mixer.targetsImmovable++, void(n.mixer.targetsMoved === n.mixer.targetsImmovable && n.mixer.cleanUp(t.operation)); switch (n.operation = t.operation, n.callback = t.callback, !n.isExcluded && n.mixer.targetsBound++, n.isBound = !0, n.applyTransition(a), o && t.posOut.width > 0 && t.posOut.height > 0 && (n.dom.el.style.width = t.posOut.width + "px", n.dom.el.style.height = t.posOut.height + "px", n.dom.el.style.marginRight = t.posOut.marginRight + "px", n.dom.el.style.marginBottom = t.posOut.marginBottom + "px"), n.mixer.config.animation.nudge || "hide" !== t.statusChange || i.push("translate(" + t.posOut.x + "px, " + t.posOut.y + "px)"), t.statusChange) { case "hide": r && (n.dom.el.style.opacity = n.mixer.effectsOut.opacity), i = i.concat(n.mixer.transformOut); break; case "show": r && (n.dom.el.style.opacity = 1) }(n.mixer.config.animation.nudge || !n.mixer.config.animation.nudge && "hide" !== t.statusChange) && i.push("translate(" + t.posOut.x + "px, " + t.posOut.y + "px)"), n.dom.el.style[e.features.transformProp] = i.join(" "), n.callActions("afterApplyStylesOut", arguments) }, writeTransitionRule: function(t, e, n) { var a = this, i = a.getDelay(e), o = ""; return o = t + " " + (n > 0 ? n : a.mixer.config.animation.duration) + "ms " + i + "ms " + ("opacity" === t ? "linear" : a.mixer.config.animation.easing), a.callFilters("ruleWriteTransitionRule", o, arguments) }, getDelay: function(t) { var e = this, n = -1; return "function" == typeof e.mixer.config.animation.staggerSequence && (t = e.mixer.config.animation.staggerSequence.call(e, t, e.state)), n = e.mixer.staggerDuration ? t * e.mixer.staggerDuration : 0, e.callFilters("delayGetDelay", n, arguments) }, applyTransition: function(t) { var n = this, a = t.join(", "); n.callActions("beforeApplyTransition", arguments), n.dom.el.style[e.features.transitionProp] = a, n.callActions("afterApplyTransition", arguments) }, handleTransitionEnd: function(t) { var e = this, n = t.propertyName, a = e.mixer.config.animation.animateResizeTargets; e.callActions("beforeHandleTransitionEnd", arguments), e.isBound && t.target.matches(e.mixer.config.selectors.target) && (n.indexOf("transform") > -1 || n.indexOf("opacity") > -1 || a && n.indexOf("height") > -1 || a && n.indexOf("width") > -1 || a && n.indexOf("margin") > -1) && (e.callback.call(e, e.operation), e.isBound = !1, e.callback = null, e.operation = null), e.callActions("afterHandleTransitionEnd", arguments) }, eventBus: function(t) { var e = this; switch (e.callActions("beforeEventBus", arguments), t.type) { case "webkitTransitionEnd": case "transitionend": e.handleTransitionEnd(t) } e.callActions("afterEventBus", arguments) }, unbindEvents: function() { var t = this; t.callActions("beforeUnbindEvents", arguments), n.off(t.dom.el, "webkitTransitionEnd", t.handler), n.off(t.dom.el, "transitionend", t.handler), t.callActions("afterUnbindEvents", arguments) }, bindEvents: function() { var t = this, a = ""; t.callActions("beforeBindEvents", arguments), a = "webkit" === e.features.transitionPrefix ? "webkitTransitionEnd" : "transitionend", t.handler = function(e) { return t.eventBus(e) }, n.on(t.dom.el, a, t.handler), t.callActions("afterBindEvents", arguments) }, getPosData: function(n) { var a = this, i = {}, o = null, r = new e.StyleData; return a.callActions("beforeGetPosData", arguments), r.x = a.dom.el.offsetLeft, r.y = a.dom.el.offsetTop, (a.mixer.config.animation.animateResizeTargets || n) && (o = a.dom.el.getBoundingClientRect(), r.top = o.top, r.right = o.right, r.bottom = o.bottom, r.left = o.left, r.width = o.width, r.height = o.height), a.mixer.config.animation.animateResizeTargets && (i = t.getComputedStyle(a.dom.el), r.marginBottom = parseFloat(i.marginBottom), r.marginRight = parseFloat(i.marginRight)), a.callFilters("posDataGetPosData", r, arguments) }, cleanUp: function() { var t = this; t.callActions("beforeCleanUp", arguments), t.dom.el.style[e.features.transformProp] = "", t.dom.el.style[e.features.transitionProp] = "", t.dom.el.style.opacity = "", t.mixer.config.animation.animateResizeTargets && (t.dom.el.style.width = "", t.dom.el.style.height = "", t.dom.el.style.marginRight = "", t.dom.el.style.marginBottom = ""), t.callActions("afterCleanUp", arguments) } }), e.Collection = function(t) { var e = null, a = -1; for (this.callActions("beforeConstruct"), a = 0; e = t[a]; a++) this[a] = e; this.length = t.length, this.callActions("afterConstruct"), n.freeze(this) }, e.BaseStatic.call(e.Collection), e.Collection.prototype = Object.create(e.Base.prototype), n.extend(e.Collection.prototype, { constructor: e.Collection, mixitup: function(t) { var a = this, i = null, o = Array.prototype.slice.call(arguments), r = [], s = -1; for (this.callActions("beforeMixitup"), o.shift(), s = 0; i = a[s]; s++) r.push(i[t].apply(i, o)); return a.callFilters("promiseMixitup", n.all(r, e.libraries), arguments) } }), e.Operation = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.id = "", this.args = [], this.command = null, this.showPosData = [], this.toHidePosData = [], this.startState = null, this.newState = null, this.docState = null, this.willSort = !1, this.willChangeLayout = !1, this.hasEffect = !1, this.hasFailed = !1, this.triggerElement = null, this.show = [], this.hide = [], this.matching = [], this.toShow = [], this.toHide = [], this.toMove = [], this.toRemove = [], this.startOrder = [], this.newOrder = [], this.startSort = null, this.newSort = null, this.startFilter = null, this.newFilter = null, this.startDataset = null, this.newDataset = null, this.viewportDeltaX = 0, this.viewportDeltaY = 0, this.startX = 0, this.startY = 0, this.startHeight = 0, this.startWidth = 0, this.newX = 0, this.newY = 0, this.newHeight = 0, this.newWidth = 0, this.startContainerClassName = "", this.startDisplay = "", this.newContainerClassName = "", this.newDisplay = "", this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.Operation), e.Operation.prototype = Object.create(e.Base.prototype), e.Operation.prototype.constructor = e.Operation, e.State = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.id = "", this.activeFilter = null, this.activeSort = null, this.activeContainerClassName = "", this.container = null, this.targets = [], this.hide = [], this.show = [], this.matching = [], this.totalTargets = -1, this.totalShow = -1, this.totalHide = -1, this.totalMatching = -1, this.hasFailed = !1, this.triggerElement = null, this.activeDataset = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.State), e.State.prototype = Object.create(e.Base.prototype), e.State.prototype.constructor = e.State, e.UserInstruction = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.command = {}, this.animate = !1, this.callback = null, this.callActions("afterConstruct"), n.seal(this) }, e.BaseStatic.call(e.UserInstruction), e.UserInstruction.prototype = Object.create(e.Base.prototype), e.UserInstruction.prototype.constructor = e.UserInstruction, e.Messages = function() { e.Base.call(this), this.callActions("beforeConstruct"), this.ERROR_FACTORY_INVALID_CONTAINER = "[MixItUp] An invalid selector or element reference was passed to the mixitup factory function", this.ERROR_FACTORY_CONTAINER_NOT_FOUND = "[MixItUp] The provided selector yielded no container element", this.ERROR_CONFIG_INVALID_ANIMATION_EFFECTS = "[MixItUp] Invalid value for `animation.effects`", this.ERROR_CONFIG_INVALID_CONTROLS_SCOPE = "[MixItUp] Invalid value for `controls.scope`", this.ERROR_CONFIG_INVALID_PROPERTY = '[MixitUp] Invalid configuration object property "${erroneous}"${suggestion}', this.ERROR_CONFIG_INVALID_PROPERTY_SUGGESTION = '. Did you mean "${probableMatch}"?', this.ERROR_CONFIG_DATA_UID_KEY_NOT_SET = "[MixItUp] To use the dataset API, a UID key must be specified using `data.uidKey`", this.ERROR_DATASET_INVALID_UID_KEY = '[MixItUp] The specified UID key "${uidKey}" is not present on one or more dataset items', this.ERROR_DATASET_DUPLICATE_UID = '[MixItUp] The UID "${uid}" was found on two or more dataset items. UIDs must be unique.', this.ERROR_INSERT_INVALID_ARGUMENTS = "[MixItUp] Please provider either an index or a sibling and position to insert, not both", this.ERROR_INSERT_PREEXISTING_ELEMENT = "[MixItUp] An element to be inserted already exists in the container", this.ERROR_FILTER_INVALID_ARGUMENTS = "[MixItUp] Please provide either a selector or collection `.filter()`, not both", this.ERROR_DATASET_NOT_SET = "[MixItUp] To use the dataset API with pre-rendered targets, a starting dataset must be set using `load.dataset`", this.ERROR_DATASET_PRERENDERED_MISMATCH = "[MixItUp] `load.dataset` does not match pre-rendered targets", this.ERROR_DATASET_RENDERER_NOT_SET = "[MixItUp] To insert an element via the dataset API, a target renderer function must be provided to `render.target`", this.ERROR_SORT_NON_EXISTENT_ELEMENT = "[MixItUp] An element to be sorted does not already exist in the container", this.WARNING_FACTORY_PREEXISTING_INSTANCE = "[MixItUp] WARNING: This element already has an active MixItUp instance. The provided configuration object will be ignored. If you wish to perform additional methods on this instance, please create a reference.", this.WARNING_INSERT_NO_ELEMENTS = "[MixItUp] WARNING: No valid elements were passed to `.insert()`", this.WARNING_REMOVE_NO_ELEMENTS = "[MixItUp] WARNING: No valid elements were passed to `.remove()`", this.WARNING_MULTIMIX_INSTANCE_QUEUE_FULL = "[MixItUp] WARNING: An operation was requested but the MixItUp instance was busy. The operation was rejected because the queue is full or queuing is disabled.", this.WARNING_GET_OPERATION_INSTANCE_BUSY = "[MixItUp] WARNING: Operations can be be created while the MixItUp instance is busy.", this.WARNING_NO_PROMISE_IMPLEMENTATION = "[MixItUp] WARNING: No Promise implementations could be found. If you wish to use promises with MixItUp please install an ES6 Promise polyfill.", this.WARNING_INCONSISTENT_SORTING_ATTRIBUTES = '[MixItUp] WARNING: The requested sorting data attribute "${attribute}" was not present on one or more target elements which may product unexpected sort output', this.callActions("afterConstruct"), this.compileTemplates(), n.seal(this) }, e.BaseStatic.call(e.Messages), e.Messages.prototype = Object.create(e.Base.prototype), e.Messages.prototype.constructor = e.Messages, e.Messages.prototype.compileTemplates = function() { var t = "", e = ""; for (t in this) "string" == typeof(e = this[t]) && (this[n.camelCase(t)] = n.template(e)) }, e.messages = new e.Messages, e.Facade = function(t) { e.Base.call(this), this.callActions("beforeConstruct", arguments), this.configure = t.configure.bind(t), this.show = t.show.bind(t), this.hide = t.hide.bind(t), this.filter = t.filter.bind(t), this.toggleOn = t.toggleOn.bind(t), this.toggleOff = t.toggleOff.bind(t), this.sort = t.sort.bind(t), this.changeLayout = t.changeLayout.bind(t), this.multimix = t.multimix.bind(t), this.dataset = t.dataset.bind(t), this.tween = t.tween.bind(t), this.insert = t.insert.bind(t), this.insertBefore = t.insertBefore.bind(t), this.insertAfter = t.insertAfter.bind(t), this.prepend = t.prepend.bind(t), this.append = t.append.bind(t), this.remove = t.remove.bind(t), this.destroy = t.destroy.bind(t), this.forceRefresh = t.forceRefresh.bind(t), this.forceRender = t.forceRender.bind(t), this.isMixing = t.isMixing.bind(t), this.getOperation = t.getOperation.bind(t), this.getConfig = t.getConfig.bind(t), this.getState = t.getState.bind(t), this.callActions("afterConstruct", arguments), n.freeze(this), n.seal(this) }, e.BaseStatic.call(e.Facade), e.Facade.prototype = Object.create(e.Base.prototype), e.Facade.prototype.constructor = e.Facade, "object" == typeof exports && "object" == typeof module ? module.exports = e : "function" == typeof define && define.amd ? define(function() { return e }) : "undefined" != typeof t.mixitup && "function" == typeof t.mixitup || (t.mixitup = e), e.BaseStatic.call(e.constructor), e.NAME = "mixitup", e.CORE_VERSION = "3.3.1" }(window); "use strict"; var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { return typeof t } : function(t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t }; ! function(t) { "function" == typeof define && define.amd ? define(["jquery"], t) : "object" === ("undefined" == typeof module ? "undefined" : _typeof(module)) && module.exports ? module.exports = function(i, s) { return void 0 === s && (s = "undefined" != typeof window ? require("jquery") : require("jquery")(i)), t(s), s } : t(jQuery) }(function(t) { return t.fn.tilt = function(i) { var s = function() { this.ticking || (requestAnimationFrame(g.bind(this)), this.ticking = !0) }, e = function() { var i = this; t(this).on("mousemove", o), t(this).on("mouseenter", a), this.settings.reset && t(this).on("mouseleave", l), this.settings.glare && t(window).on("resize", d.bind(i)) }, n = function() { var i = this; void 0 !== this.timeout && clearTimeout(this.timeout), t(this).css({ transition: this.settings.speed + "ms " + this.settings.easing }), this.settings.glare && this.glareElement.css({ transition: "opacity " + this.settings.speed + "ms " + this.settings.easing }), this.timeout = setTimeout(function() { t(i).css({ transition: "" }), i.settings.glare && i.glareElement.css({ transition: "" }) }, this.settings.speed) }, a = function(i) { this.ticking = !1, t(this).css({ "will-change": "transform" }), n.call(this), t(this).trigger("tilt.mouseEnter") }, r = function(i) { return "undefined" == typeof i && (i = { pageX: t(this).offset().left + t(this).outerWidth() / 2, pageY: t(this).offset().top + t(this).outerHeight() / 2 }), { x: i.pageX, y: i.pageY } }, o = function(t) { this.mousePositions = r(t), s.call(this) }, l = function() { n.call(this), this.reset = !0, s.call(this), t(this).trigger("tilt.mouseLeave") }, h = function() { var i = t(this).outerWidth(), s = t(this).outerHeight(), e = t(this).offset().left, n = t(this).offset().top, a = (this.mousePositions.x - e) / i, r = (this.mousePositions.y - n) / s, o = (this.settings.maxTilt / 2 - a * this.settings.maxTilt).toFixed(2), l = (r * this.settings.maxTilt - this.settings.maxTilt / 2).toFixed(2), h = Math.atan2(this.mousePositions.x - (e + i / 2), -(this.mousePositions.y - (n + s / 2))) * (180 / Math.PI); return { tiltX: o, tiltY: l, percentageX: 100 * a, percentageY: 100 * r, angle: h } }, g = function() { return this.transforms = h.call(this), this.reset ? (this.reset = !1, t(this).css("transform", "perspective(" + this.settings.perspective + "px) rotateX(0deg) rotateY(0deg)"), void(this.settings.glare && (this.glareElement.css("transform", "rotate(180deg) translate(-50%, -50%)"), this.glareElement.css("opacity", "0")))) : (t(this).css("transform", "perspective(" + this.settings.perspective + "px) rotateX(" + ("x" === this.settings.disableAxis ? 0 : this.transforms.tiltY) + "deg) rotateY(" + ("y" === this.settings.disableAxis ? 0 : this.transforms.tiltX) + "deg) scale3d(" + this.settings.scale + "," + this.settings.scale + "," + this.settings.scale + ")"), this.settings.glare && (this.glareElement.css("transform", "rotate(" + this.transforms.angle + "deg) translate(-50%, -50%)"), this.glareElement.css("opacity", "" + this.transforms.percentageY * this.settings.maxGlare / 100)), t(this).trigger("change", [this.transforms]), void(this.ticking = !1)) }, c = function() { var i = this.settings.glarePrerender; if (i || t(this).append('
'), this.glareElementWrapper = t(this).find(".js-tilt-glare"), this.glareElement = t(this).find(".js-tilt-glare-inner"), !i) { var s = { position: "absolute", top: "0", left: "0", width: "100%", height: "100%" }; this.glareElementWrapper.css(s).css({ overflow: "hidden", "pointer-events": "none" }), this.glareElement.css({ position: "absolute", top: "50%", left: "50%", "background-image": "linear-gradient(0deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%)", width: "" + 2 * t(this).outerWidth(), height: "" + 2 * t(this).outerWidth(), transform: "rotate(180deg) translate(-50%, -50%)", "transform-origin": "0% 0%", opacity: "0" }) } }, d = function() { this.glareElement.css({ width: "" + 2 * t(this).outerWidth(), height: "" + 2 * t(this).outerWidth() }) }; return t.fn.tilt.destroy = function() { t(this).each(function() { t(this).find(".js-tilt-glare").remove(), t(this).css({ "will-change": "", transform: "" }), t(this).off("mousemove mouseenter mouseleave") }) }, t.fn.tilt.getValues = function() { var i = []; return t(this).each(function() { this.mousePositions = r.call(this), i.push(h.call(this)) }), i }, t.fn.tilt.reset = function() { t(this).each(function() { var i = this; this.mousePositions = r.call(this), this.settings = t(this).data("settings"), l.call(this), setTimeout(function() { i.reset = !1 }, this.settings.transition) }) }, this.each(function() { var s = this; this.settings = t.extend({ maxTilt: t(this).is("[data-tilt-max]") ? t(this).data("tilt-max") : 20, perspective: t(this).is("[data-tilt-perspective]") ? t(this).data("tilt-perspective") : 300, easing: t(this).is("[data-tilt-easing]") ? t(this).data("tilt-easing") : "cubic-bezier(.03,.98,.52,.99)", scale: t(this).is("[data-tilt-scale]") ? t(this).data("tilt-scale") : "1", speed: t(this).is("[data-tilt-speed]") ? t(this).data("tilt-speed") : "400", transition: !t(this).is("[data-tilt-transition]") || t(this).data("tilt-transition"), disableAxis: t(this).is("[data-tilt-disable-axis]") ? t(this).data("tilt-disable-axis") : null, axis: t(this).is("[data-tilt-axis]") ? t(this).data("tilt-axis") : null, reset: !t(this).is("[data-tilt-reset]") || t(this).data("tilt-reset"), glare: !!t(this).is("[data-tilt-glare]") && t(this).data("tilt-glare"), maxGlare: t(this).is("[data-tilt-maxglare]") ? t(this).data("tilt-maxglare") : 1 }, i), null !== this.settings.axis && (console.warn("Tilt.js: the axis setting has been renamed to disableAxis. See https://github.com/gijsroge/tilt.js/pull/26 for more information"), this.settings.disableAxis = this.settings.axis), this.init = function() { t(s).data("settings", s.settings), s.settings.glare && c.call(s), e.call(s) }, this.init() }) }, t("[data-tilt]").tilt(), !0 }); (function($) { $.fn.downCount = function(options, callback) { var settings = $.extend({ date: null, offset: null }, options); if (!settings.date) { $.error('Date is not defined.') } if (!Date.parse(settings.date)) { $.error('Incorrect date format, it should look like this, 12/24/2012 12:00:00.') } var container = this; var currentDate = function() { var date = new Date(); var utc = date.getTime() + (date.getTimezoneOffset() * 60000); var new_date = new Date(utc + (3600000 * settings.offset)) return new_date }; function countdown() { var target_date = new Date(settings.date), current_date = currentDate(); var difference = target_date - current_date; if (difference < 0) { clearInterval(interval); if (callback && typeof callback === 'function') callback(); return } var _second = 1000, _minute = _second * 60, _hour = _minute * 60, _day = _hour * 24; var days = Math.floor(difference / _day), hours = Math.floor((difference % _day) / _hour), minutes = Math.floor((difference % _hour) / _minute), seconds = Math.floor((difference % _minute) / _second); days = (String(days).length >= 2) ? days : '0' + days; hours = (String(hours).length >= 2) ? hours : '0' + hours; minutes = (String(minutes).length >= 2) ? minutes : '0' + minutes; seconds = (String(seconds).length >= 2) ? seconds : '0' + seconds; var ref_days = (days === 1) ? 'day' : 'days', ref_hours = (hours === 1) ? 'hour' : 'hours', ref_minutes = (minutes === 1) ? 'minute' : 'minutes', ref_seconds = (seconds === 1) ? 'second' : 'seconds'; container.find('.days').text(days); container.find('.hours').text(hours); container.find('.minutes').text(minutes); container.find('.seconds').text(seconds); container.find('.days_ref').text(ref_days); container.find('.hours_ref').text(ref_hours); container.find('.minutes_ref').text(ref_minutes); container.find('.seconds_ref').text(ref_seconds) }; var interval = setInterval(countdown, 1000) } })(jQuery); ! function(t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = t || self).Shuffle = e() }(this, function() { "use strict"; function t(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") } function e(t, e) { for (var i = 0; i < e.length; i++) { var n = e[i]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n) } } function i(t, i, n) { return i && e(t.prototype, i), n && e(t, n), t } function n(t) { return (n = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) { return t.__proto__ || Object.getPrototypeOf(t) })(t) } function s(t, e) { return (s = Object.setPrototypeOf || function(t, e) { return t.__proto__ = e, t })(t, e) } function o(t, e) { return !e || "object" != typeof e && "function" != typeof e ? function(t) { if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return t }(t) : e } function r() {} r.prototype = { on: function(t, e, i) { var n = this.e || (this.e = {}); return (n[t] || (n[t] = [])).push({ fn: e, ctx: i }), this }, once: function(t, e, i) { var n = this; function s() { n.off(t, s), e.apply(i, arguments) } return s._ = e, this.on(t, s, i) }, emit: function(t) { for (var e = [].slice.call(arguments, 1), i = ((this.e || (this.e = {}))[t] || []).slice(), n = 0, s = i.length; n < s; n++) i[n].fn.apply(i[n].ctx, e); return this }, off: function(t, e) { var i = this.e || (this.e = {}), n = i[t], s = []; if (n && e) for (var o = 0, r = n.length; o < r; o++) n[o].fn !== e && n[o].fn._ !== e && s.push(n[o]); return s.length ? i[t] = s : delete i[t], this } }; var l = r, a = r; l.TinyEmitter = a; var u = "undefined" != typeof Element ? Element.prototype : {}, h = u.matches || u.matchesSelector || u.webkitMatchesSelector || u.mozMatchesSelector || u.msMatchesSelector || u.oMatchesSelector, f = function(t, e) { if (!t || 1 !== t.nodeType) return !1; if (h) return h.call(t, e); for (var i = t.parentNode.querySelectorAll(e), n = 0; n < i.length; n++) if (i[n] == t) return !0; return !1 }; var c = function(t, e) { var i, n, s, o, r = 0; return function() { i = this, n = arguments; var t = new Date - r; return o || (t >= e ? l() : o = setTimeout(l, e - t)), s }; function l() { o = 0, r = +new Date, s = t.apply(i, n), i = null, n = null } }; function d() {} function m(t) { return parseFloat(t) || 0 } var p = function() { function e(i, n) { t(this, e), this.x = m(i), this.y = m(n) } return i(e, null, [{ key: "equals", value: function(t, e) { return t.x === e.x && t.y === e.y } }]), e }(), v = function() { function e(i, n, s, o, r) { t(this, e), this.id = r, this.left = i, this.top = n, this.width = s, this.height = o } return i(e, null, [{ key: "intersects", value: function(t, e) { return t.left < e.left + e.width && e.left < t.left + t.width && t.top < e.top + e.height && e.top < t.top + t.height } }]), e }(), y = { BASE: "shuffle", SHUFFLE_ITEM: "shuffle-item", VISIBLE: "shuffle-item--visible", HIDDEN: "shuffle-item--hidden" }, g = 0, _ = function() { function e(i) { t(this, e), g += 1, this.id = g, this.element = i, this.isVisible = !0, this.isHidden = !1 } return i(e, [{ key: "show", value: function() { this.isVisible = !0, this.element.classList.remove(y.HIDDEN), this.element.classList.add(y.VISIBLE), this.element.removeAttribute("aria-hidden") } }, { key: "hide", value: function() { this.isVisible = !1, this.element.classList.remove(y.VISIBLE), this.element.classList.add(y.HIDDEN), this.element.setAttribute("aria-hidden", !0) } }, { key: "init", value: function() { this.addClasses([y.SHUFFLE_ITEM, y.VISIBLE]), this.applyCss(e.Css.INITIAL), this.scale = e.Scale.VISIBLE, this.point = new p } }, { key: "addClasses", value: function(t) { var e = this; t.forEach(function(t) { e.element.classList.add(t) }) } }, { key: "removeClasses", value: function(t) { var e = this; t.forEach(function(t) { e.element.classList.remove(t) }) } }, { key: "applyCss", value: function(t) { var e = this; Object.keys(t).forEach(function(i) { e.element.style[i] = t[i] }) } }, { key: "dispose", value: function() { this.removeClasses([y.HIDDEN, y.VISIBLE, y.SHUFFLE_ITEM]), this.element.removeAttribute("style"), this.element = null } }]), e }(); _.Css = { INITIAL: { position: "absolute", top: 0, left: 0, visibility: "visible", willChange: "transform" }, VISIBLE: { before: { opacity: 1, visibility: "visible" }, after: { transitionDelay: "" } }, HIDDEN: { before: { opacity: 0 }, after: { visibility: "hidden", transitionDelay: "" } } }, _.Scale = { VISIBLE: 1, HIDDEN: .001 }; var E = null, I = function() { if (null !== E) return E; var t = document.body || document.documentElement, e = document.createElement("div"); return e.style.cssText = "width:10px;padding:2px;box-sizing:border-box;", t.appendChild(e), E = "10px" === window.getComputedStyle(e, null).width, t.removeChild(e), E }; function b(t, e) { var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : window.getComputedStyle(t, null), n = m(i[e]); return I() || "width" !== e ? I() || "height" !== e || (n += m(i.paddingTop) + m(i.paddingBottom) + m(i.borderTopWidth) + m(i.borderBottomWidth)) : n += m(i.paddingLeft) + m(i.paddingRight) + m(i.borderLeftWidth) + m(i.borderRightWidth), n } var S = { reverse: !1, by: null, compare: null, randomize: !1, key: "element" }; function T(t, e) { var i = Object.assign({}, S, e), n = Array.from(t), s = !1; return t.length ? i.randomize ? function(t) { for (var e = t.length; e;) { e -= 1; var i = Math.floor(Math.random() * (e + 1)), n = t[i]; t[i] = t[e], t[e] = n } return t }(t) : ("function" == typeof i.by ? t.sort(function(t, e) { if (s) return 0; var n = i.by(t[i.key]), o = i.by(e[i.key]); return void 0 === n && void 0 === o ? (s = !0, 0) : n < o || "sortFirst" === n || "sortLast" === o ? -1 : n > o || "sortLast" === n || "sortFirst" === o ? 1 : 0 }) : "function" == typeof i.compare && t.sort(i.compare), s ? n : (i.reverse && t.reverse(), t)) : [] } var k = {}, w = "transitionend", C = 0; function L(t) { return !!k[t] && (k[t].element.removeEventListener(w, k[t].listener), k[t] = null, !0) } function D(t, e) { var i = w + (C += 1), n = function(t) { t.currentTarget === t.target && (L(i), e(t)) }; return t.addEventListener(w, n), k[i] = { element: t, listener: n }, i } function z(t) { return Math.max.apply(Math, t) } function M(t, e, i, n) { var s = t / e; return Math.abs(Math.round(s) - s) < n && (s = Math.round(s)), Math.min(Math.ceil(s), i) } function A(t, e, i) { if (1 === e) return t; for (var n = [], s = 0; s <= i - e; s++) n.push(z(t.slice(s, s + e))); return n } function F(t, e) { for (var i, n = (i = t, Math.min.apply(Math, i)), s = 0, o = t.length; s < o; s++) if (t[s] >= n - e && t[s] <= n + e) return s; return 0 } function x(t, e) { var i = {}; t.forEach(function(t) { i[t.top] ? i[t.top].push(t) : i[t.top] = [t] }); var n = [], s = [], o = []; return Object.keys(i).forEach(function(t) { var r = i[t]; s.push(r); var l, a = r[r.length - 1], u = a.left + a.width, h = Math.round((e - u) / 2), f = r, c = !1; if (h > 0) { var d = []; (c = r.every(function(t) { var e = new v(t.left + h, t.top, t.width, t.height, t.id), i = !n.some(function(t) { return v.intersects(e, t) }); return d.push(e), i })) && (f = d) } if (!c && r.some(function(t) { return n.some(function(e) { var i = v.intersects(t, e); return i && (l = e), i }) })) { var m = o.findIndex(function(t) { return t.includes(l) }); o.splice(m, 1, s[m]) } n = n.concat(f), o.push(f) }), [].concat.apply([], o).sort(function(t, e) { return t.id - e.id }).map(function(t) { return new p(t.left, t.top) }) } function O(t) { return Array.from(new Set(t)) } var N = 0, H = function(e) { function r(e) { var i, s = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; t(this, r), (i = o(this, n(r).call(this))).options = Object.assign({}, r.options, s), i.options.delimeter && (i.options.delimiter = i.options.delimeter), i.lastSort = {}, i.group = r.ALL_ITEMS, i.lastFilter = r.ALL_ITEMS, i.isEnabled = !0, i.isDestroyed = !1, i.isInitialized = !1, i._transitions = [], i.isTransitioning = !1, i._queue = []; var l = i._getElementOption(e); if (!l) throw new TypeError("Shuffle needs to be initialized with an element."); return i.element = l, i.id = "shuffle_" + N, N += 1, i._init(), i.isInitialized = !0, i } return function(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), e && s(t, e) }(r, l), i(r, [{ key: "_init", value: function() { if (this.items = this._getItems(), this.options.sizer = this._getElementOption(this.options.sizer), this.element.classList.add(r.Classes.BASE), this._initItems(this.items), this._onResize = this._getResizeFunction(), window.addEventListener("resize", this._onResize), "complete" !== document.readyState) { var t = this.layout.bind(this); window.addEventListener("load", function e() { window.removeEventListener("load", e), t() }) } var e = window.getComputedStyle(this.element, null), i = r.getSize(this.element).width; this._validateStyles(e), this._setColumns(i), this.filter(this.options.group, this.options.initialSort), this.element.offsetWidth, this.setItemTransitions(this.items), this.element.style.transition = "height ".concat(this.options.speed, "ms ").concat(this.options.easing) } }, { key: "_getResizeFunction", value: function() { var t = this._handleResize.bind(this); return this.options.throttle ? this.options.throttle(t, this.options.throttleTime) : t } }, { key: "_getElementOption", value: function(t) { return "string" == typeof t ? this.element.querySelector(t) : t && t.nodeType && 1 === t.nodeType ? t : t && t.jquery ? t[0] : null } }, { key: "_validateStyles", value: function(t) { "static" === t.position && (this.element.style.position = "relative"), "hidden" !== t.overflow && (this.element.style.overflow = "hidden") } }, { key: "_filter", value: function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.lastFilter, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.items, i = this._getFilteredSets(t, e); return this._toggleFilterClasses(i), this.lastFilter = t, "string" == typeof t && (this.group = t), i } }, { key: "_getFilteredSets", value: function(t, e) { var i = this, n = [], s = []; return t === r.ALL_ITEMS ? n = e : e.forEach(function(e) { i._doesPassFilter(t, e.element) ? n.push(e) : s.push(e) }), { visible: n, hidden: s } } }, { key: "_doesPassFilter", value: function(t, e) { if ("function" == typeof t) return t.call(e, e, this); var i = e.getAttribute("data-" + r.FILTER_ATTRIBUTE_KEY), n = this.options.delimiter ? i.split(this.options.delimiter) : JSON.parse(i); function s(t) { return n.includes(t) } return Array.isArray(t) ? this.options.filterMode === r.FilterMode.ANY ? t.some(s) : t.every(s) : n.includes(t) } }, { key: "_toggleFilterClasses", value: function(t) { var e = t.visible, i = t.hidden; e.forEach(function(t) { t.show() }), i.forEach(function(t) { t.hide() }) } }, { key: "_initItems", value: function(t) { t.forEach(function(t) { t.init() }) } }, { key: "_disposeItems", value: function(t) { t.forEach(function(t) { t.dispose() }) } }, { key: "_updateItemCount", value: function() { this.visibleItems = this._getFilteredItems().length } }, { key: "setItemTransitions", value: function(t) { var e = this.options, i = e.speed, n = e.easing, s = this.options.useTransforms ? ["transform"] : ["top", "left"], o = Object.keys(_.Css.HIDDEN.before).map(function(t) { return t.replace(/([A-Z])/g, function(t, e) { return "-".concat(e.toLowerCase()) }) }), r = s.concat(o).join(); t.forEach(function(t) { t.element.style.transitionDuration = i + "ms", t.element.style.transitionTimingFunction = n, t.element.style.transitionProperty = r }) } }, { key: "_getItems", value: function() { var t = this; return Array.from(this.element.children).filter(function(e) { return f(e, t.options.itemSelector) }).map(function(t) { return new _(t) }) } }, { key: "_mergeNewItems", value: function(t) { var e = Array.from(this.element.children); return T(this.items.concat(t), { by: function(t) { return e.indexOf(t) } }) } }, { key: "_getFilteredItems", value: function() { return this.items.filter(function(t) { return t.isVisible }) } }, { key: "_getConcealedItems", value: function() { return this.items.filter(function(t) { return !t.isVisible }) } }, { key: "_getColumnSize", value: function(t, e) { var i; return 0 === (i = "function" == typeof this.options.columnWidth ? this.options.columnWidth(t) : this.options.sizer ? r.getSize(this.options.sizer).width : this.options.columnWidth ? this.options.columnWidth : this.items.length > 0 ? r.getSize(this.items[0].element, !0).width : t) && (i = t), i + e } }, { key: "_getGutterSize", value: function(t) { return "function" == typeof this.options.gutterWidth ? this.options.gutterWidth(t) : this.options.sizer ? b(this.options.sizer, "marginLeft") : this.options.gutterWidth } }, { key: "_setColumns", value: function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : r.getSize(this.element).width, e = this._getGutterSize(t), i = this._getColumnSize(t, e), n = (t + e) / i; Math.abs(Math.round(n) - n) < this.options.columnThreshold && (n = Math.round(n)), this.cols = Math.max(Math.floor(n || 0), 1), this.containerWidth = t, this.colWidth = i } }, { key: "_setContainerSize", value: function() { this.element.style.height = this._getContainerSize() + "px" } }, { key: "_getContainerSize", value: function() { return z(this.positions) } }, { key: "_getStaggerAmount", value: function(t) { return Math.min(t * this.options.staggerAmount, this.options.staggerAmountMax) } }, { key: "_dispatch", value: function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; this.isDestroyed || (e.shuffle = this, this.emit(t, e)) } }, { key: "_resetCols", value: function() { var t = this.cols; for (this.positions = []; t;) t -= 1, this.positions.push(0) } }, { key: "_layout", value: function(t) { var e = this, i = this._getNextPositions(t), n = 0; t.forEach(function(t, s) { function o() { t.applyCss(_.Css.VISIBLE.after) } if (p.equals(t.point, i[s]) && !t.isHidden) return t.applyCss(_.Css.VISIBLE.before), void o(); t.point = i[s], t.scale = _.Scale.VISIBLE, t.isHidden = !1; var r = e.getStylesForTransition(t, _.Css.VISIBLE.before); r.transitionDelay = e._getStaggerAmount(n) + "ms", e._queue.push({ item: t, styles: r, callback: o }), n += 1 }) } }, { key: "_getNextPositions", value: function(t) { var e = this; if (this.options.isCentered) { var i = t.map(function(t, i) { var n = r.getSize(t.element, !0), s = e._getItemPosition(n); return new v(s.x, s.y, n.width, n.height, i) }); return this.getTransformedPositions(i, this.containerWidth) } return t.map(function(t) { return e._getItemPosition(r.getSize(t.element, !0)) }) } }, { key: "_getItemPosition", value: function(t) { return function(t) { for (var e = t.itemSize, i = t.positions, n = t.gridSize, s = t.total, o = t.threshold, r = t.buffer, l = M(e.width, n, s, o), a = A(i, l, s), u = F(a, r), h = new p(n * u, a[u]), f = a[u] + e.height, c = 0; c < l; c++) i[u + c] = f; return h }({ itemSize: t, positions: this.positions, gridSize: this.colWidth, total: this.cols, threshold: this.options.columnThreshold, buffer: this.options.buffer }) } }, { key: "getTransformedPositions", value: function(t, e) { return x(t, e) } }, { key: "_shrink", value: function() { var t = this, e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._getConcealedItems(), i = 0; e.forEach(function(e) { function n() { e.applyCss(_.Css.HIDDEN.after) } if (e.isHidden) return e.applyCss(_.Css.HIDDEN.before), void n(); e.scale = _.Scale.HIDDEN, e.isHidden = !0; var s = t.getStylesForTransition(e, _.Css.HIDDEN.before); s.transitionDelay = t._getStaggerAmount(i) + "ms", t._queue.push({ item: e, styles: s, callback: n }), i += 1 }) } }, { key: "_handleResize", value: function() { this.isEnabled && !this.isDestroyed && this.update() } }, { key: "getStylesForTransition", value: function(t, e) { var i = Object.assign({}, e); if (this.options.useTransforms) { var n = this.options.roundTransforms ? Math.round(t.point.x) : t.point.x, s = this.options.roundTransforms ? Math.round(t.point.y) : t.point.y; i.transform = "translate(".concat(n, "px, ").concat(s, "px) scale(").concat(t.scale, ")") } else i.left = t.point.x + "px", i.top = t.point.y + "px"; return i } }, { key: "_whenTransitionDone", value: function(t, e, i) { var n = D(t, function(t) { e(), i(null, t) }); this._transitions.push(n) } }, { key: "_getTransitionFunction", value: function(t) { var e = this; return function(i) { t.item.applyCss(t.styles), e._whenTransitionDone(t.item.element, t.callback, i) } } }, { key: "_processQueue", value: function() { this.isTransitioning && this._cancelMovement(); var t = this.options.speed > 0, e = this._queue.length > 0; e && t && this.isInitialized ? this._startTransitions(this._queue) : e ? (this._styleImmediately(this._queue), this._dispatch(r.EventType.LAYOUT)) : this._dispatch(r.EventType.LAYOUT), this._queue.length = 0 } }, { key: "_startTransitions", value: function(t) { var e = this; this.isTransitioning = !0, function(t, e, i) { i || ("function" == typeof e ? (i = e, e = null) : i = d); var n = t && t.length; if (!n) return i(null, []); var s = !1, o = new Array(n); function r(t) { return function(e, r) { if (!s) { if (e) return i(e, o), void(s = !0); o[t] = r, --n || i(null, o) } } } t.forEach(e ? function(t, i) { t.call(e, r(i)) } : function(t, e) { t(r(e)) }) }(t.map(function(t) { return e._getTransitionFunction(t) }), this._movementFinished.bind(this)) } }, { key: "_cancelMovement", value: function() { this._transitions.forEach(L), this._transitions.length = 0, this.isTransitioning = !1 } }, { key: "_styleImmediately", value: function(t) { if (t.length) { var e = t.map(function(t) { return t.item.element }); r._skipTransitions(e, function() { t.forEach(function(t) { t.item.applyCss(t.styles), t.callback() }) }) } } }, { key: "_movementFinished", value: function() { this._transitions.length = 0, this.isTransitioning = !1, this._dispatch(r.EventType.LAYOUT) } }, { key: "filter", value: function(t, e) { this.isEnabled && ((!t || t && 0 === t.length) && (t = r.ALL_ITEMS), this._filter(t), this._shrink(), this._updateItemCount(), this.sort(e)) } }, { key: "sort", value: function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.lastSort; if (this.isEnabled) { this._resetCols(); var e = T(this._getFilteredItems(), t); this._layout(e), this._processQueue(), this._setContainerSize(), this.lastSort = t } } }, { key: "update", value: function() { var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; this.isEnabled && (t || this._setColumns(), this.sort()) } }, { key: "layout", value: function() { this.update(!0) } }, { key: "add", value: function(t) { var e = this, i = O(t).map(function(t) { return new _(t) }); this._initItems(i), this._resetCols(); var n = T(this._mergeNewItems(i), this.lastSort), s = this._filter(this.lastFilter, n), o = function(t) { return i.includes(t) }, r = function(t) { t.scale = _.Scale.HIDDEN, t.isHidden = !0, t.applyCss(_.Css.HIDDEN.before), t.applyCss(_.Css.HIDDEN.after) }, l = this._getNextPositions(s.visible); s.visible.forEach(function(t, i) { o(t) && (t.point = l[i], r(t), t.applyCss(e.getStylesForTransition(t, {}))) }), s.hidden.forEach(function(t) { o(t) && r(t) }), this.element.offsetWidth, this.setItemTransitions(i), this.items = this._mergeNewItems(i), this.filter(this.lastFilter) } }, { key: "disable", value: function() { this.isEnabled = !1 } }, { key: "enable", value: function() { var t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]; this.isEnabled = !0, t && this.update() } }, { key: "remove", value: function(t) { var e = this; if (t.length) { var i = O(t), n = i.map(function(t) { return e.getItemByElement(t) }).filter(function(t) { return !!t }); this._toggleFilterClasses({ visible: [], hidden: n }), this._shrink(n), this.sort(), this.items = this.items.filter(function(t) { return !n.includes(t) }), this._updateItemCount(), this.once(r.EventType.LAYOUT, function() { e._disposeItems(n), i.forEach(function(t) { t.parentNode.removeChild(t) }), e._dispatch(r.EventType.REMOVED, { collection: i }) }) } } }, { key: "getItemByElement", value: function(t) { return this.items.find(function(e) { return e.element === t }) } }, { key: "resetItems", value: function() { var t = this; this._disposeItems(this.items), this.isInitialized = !1, this.items = this._getItems(), this._initItems(this.items), this.once(r.EventType.LAYOUT, function() { t.setItemTransitions(t.items), t.isInitialized = !0 }), this.filter(this.lastFilter) } }, { key: "destroy", value: function() { this._cancelMovement(), window.removeEventListener("resize", this._onResize), this.element.classList.remove("shuffle"), this.element.removeAttribute("style"), this._disposeItems(this.items), this.items.length = 0, this._transitions.length = 0, this.options.sizer = null, this.element = null, this.isDestroyed = !0, this.isEnabled = !1 } }], [{ key: "getSize", value: function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], i = window.getComputedStyle(t, null), n = b(t, "width", i), s = b(t, "height", i); e && (n += b(t, "marginLeft", i) + b(t, "marginRight", i), s += b(t, "marginTop", i) + b(t, "marginBottom", i)); return { width: n, height: s } } }, { key: "_skipTransitions", value: function(t, e) { var i = t.map(function(t) { var e = t.style, i = e.transitionDuration, n = e.transitionDelay; return e.transitionDuration = "0ms", e.transitionDelay = "0ms", { duration: i, delay: n } }); e(), t[0].offsetWidth, t.forEach(function(t, e) { t.style.transitionDuration = i[e].duration, t.style.transitionDelay = i[e].delay }) } }]), r }(); return H.ShuffleItem = _, H.ALL_ITEMS = "all", H.FILTER_ATTRIBUTE_KEY = "groups", H.EventType = { LAYOUT: "shuffle:layout", REMOVED: "shuffle:removed" }, H.Classes = y, H.FilterMode = { ANY: "any", ALL: "all" }, H.options = { group: H.ALL_ITEMS, speed: 250, easing: "cubic-bezier(0.4, 0.0, 0.2, 1)", itemSelector: "*", sizer: null, gutterWidth: 0, columnWidth: 0, delimiter: null, buffer: 0, columnThreshold: .01, initialSort: null, throttle: c, throttleTime: 300, staggerAmount: 15, staggerAmountMax: 150, useTransforms: !0, filterMode: H.FilterMode.ANY, isCentered: !1, roundTransforms: !0 }, H.Point = p, H.Rect = v, H.__sorter = T, H.__getColumnSpan = M, H.__getAvailablePositions = A, H.__getShortColumn = F, H.__getCenteredPositions = x, H }); ! function(e, t) { "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.AOS = t() : e.AOS = t() }(this, function() { return function(e) { function t(o) { if (n[o]) return n[o].exports; var i = n[o] = { exports: {}, id: o, loaded: !1 }; return e[o].call(i.exports, i, i.exports, t), i.loaded = !0, i.exports } var n = {}; return t.m = e, t.c = n, t.p = "dist/", t(0) }([function(e, t, n) { "use strict"; function o(e) { return e && e.__esModule ? e : { default: e } } var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var o in n) Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]) } return e }, r = n(1), a = (o(r), n(6)), u = o(a), c = n(7), f = o(c), s = n(8), d = o(s), l = n(9), p = o(l), m = n(10), b = o(m), v = n(11), y = o(v), g = n(14), h = o(g), w = [], k = !1, x = document.all && !window.atob, j = { offset: 120, delay: 0, easing: "ease", duration: 400, disable: !1, once: !1, startEvent: "DOMContentLoaded", throttleDelay: 99, debounceDelay: 50, disableMutationObserver: !1 }, O = function() { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; if (e && (k = !0), k) return w = (0, y.default)(w, j), (0, b.default)(w, j.once), w }, _ = function() { w = (0, h.default)(), O() }, S = function() { w.forEach(function(e, t) { e.node.removeAttribute("data-aos"), e.node.removeAttribute("data-aos-easing"), e.node.removeAttribute("data-aos-duration"), e.node.removeAttribute("data-aos-delay") }) }, z = function(e) { return e === !0 || "mobile" === e && p.default.mobile() || "phone" === e && p.default.phone() || "tablet" === e && p.default.tablet() || "function" == typeof e && e() === !0 }, A = function(e) { return j = i(j, e), w = (0, h.default)(), z(j.disable) || x ? S() : (document.querySelector("body").setAttribute("data-aos-easing", j.easing), document.querySelector("body").setAttribute("data-aos-duration", j.duration), document.querySelector("body").setAttribute("data-aos-delay", j.delay), "DOMContentLoaded" === j.startEvent && ["complete", "interactive"].indexOf(document.readyState) > -1 ? O(!0) : "load" === j.startEvent ? window.addEventListener(j.startEvent, function() { O(!0) }) : document.addEventListener(j.startEvent, function() { O(!0) }), window.addEventListener("resize", (0, f.default)(O, j.debounceDelay, !0)), window.addEventListener("orientationchange", (0, f.default)(O, j.debounceDelay, !0)), window.addEventListener("scroll", (0, u.default)(function() { (0, b.default)(w, j.once) }, j.throttleDelay)), j.disableMutationObserver || (0, d.default)("[data-aos]", _), w) }; e.exports = { init: A, refresh: O, refreshHard: _ } }, function(e, t) {}, , , , , function(e, t) { (function(t) { "use strict"; function n(e, t, n) { function o(t) { var n = b, o = v; return b = v = void 0, k = t, g = e.apply(o, n) } function r(e) { return k = e, h = setTimeout(s, t), _ ? o(e) : g } function a(e) { var n = e - w, o = e - k, i = t - n; return S ? j(i, y - o) : i } function c(e) { var n = e - w, o = e - k; return void 0 === w || n >= t || n < 0 || S && o >= y } function s() { var e = O(); return c(e) ? d(e) : void(h = setTimeout(s, a(e))) } function d(e) { return h = void 0, z && b ? o(e) : (b = v = void 0, g) } function l() { void 0 !== h && clearTimeout(h), k = 0, b = w = v = h = void 0 } function p() { return void 0 === h ? g : d(O()) } function m() { var e = O(), n = c(e); if (b = arguments, v = this, w = e, n) { if (void 0 === h) return r(w); if (S) return h = setTimeout(s, t), o(w) } return void 0 === h && (h = setTimeout(s, t)), g } var b, v, y, g, h, w, k = 0, _ = !1, S = !1, z = !0; if ("function" != typeof e) throw new TypeError(f); return t = u(t) || 0, i(n) && (_ = !!n.leading, S = "maxWait" in n, y = S ? x(u(n.maxWait) || 0, t) : y, z = "trailing" in n ? !!n.trailing : z), m.cancel = l, m.flush = p, m } function o(e, t, o) { var r = !0, a = !0; if ("function" != typeof e) throw new TypeError(f); return i(o) && (r = "leading" in o ? !!o.leading : r, a = "trailing" in o ? !!o.trailing : a), n(e, t, { leading: r, maxWait: t, trailing: a }) } function i(e) { var t = "undefined" == typeof e ? "undefined" : c(e); return !!e && ("object" == t || "function" == t) } function r(e) { return !!e && "object" == ("undefined" == typeof e ? "undefined" : c(e)) } function a(e) { return "symbol" == ("undefined" == typeof e ? "undefined" : c(e)) || r(e) && k.call(e) == d } function u(e) { if ("number" == typeof e) return e; if (a(e)) return s; if (i(e)) { var t = "function" == typeof e.valueOf ? e.valueOf() : e; e = i(t) ? t + "" : t } if ("string" != typeof e) return 0 === e ? e : +e; e = e.replace(l, ""); var n = m.test(e); return n || b.test(e) ? v(e.slice(2), n ? 2 : 8) : p.test(e) ? s : +e } var c = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, f = "Expected a function", s = NaN, d = "[object Symbol]", l = /^\s+|\s+$/g, p = /^[-+]0x[0-9a-f]+$/i, m = /^0b[01]+$/i, b = /^0o[0-7]+$/i, v = parseInt, y = "object" == ("undefined" == typeof t ? "undefined" : c(t)) && t && t.Object === Object && t, g = "object" == ("undefined" == typeof self ? "undefined" : c(self)) && self && self.Object === Object && self, h = y || g || Function("return this")(), w = Object.prototype, k = w.toString, x = Math.max, j = Math.min, O = function() { return h.Date.now() }; e.exports = o }).call(t, function() { return this }()) }, function(e, t) { (function(t) { "use strict"; function n(e, t, n) { function i(t) { var n = b, o = v; return b = v = void 0, O = t, g = e.apply(o, n) } function r(e) { return O = e, h = setTimeout(s, t), _ ? i(e) : g } function u(e) { var n = e - w, o = e - O, i = t - n; return S ? x(i, y - o) : i } function f(e) { var n = e - w, o = e - O; return void 0 === w || n >= t || n < 0 || S && o >= y } function s() { var e = j(); return f(e) ? d(e) : void(h = setTimeout(s, u(e))) } function d(e) { return h = void 0, z && b ? i(e) : (b = v = void 0, g) } function l() { void 0 !== h && clearTimeout(h), O = 0, b = w = v = h = void 0 } function p() { return void 0 === h ? g : d(j()) } function m() { var e = j(), n = f(e); if (b = arguments, v = this, w = e, n) { if (void 0 === h) return r(w); if (S) return h = setTimeout(s, t), i(w) } return void 0 === h && (h = setTimeout(s, t)), g } var b, v, y, g, h, w, O = 0, _ = !1, S = !1, z = !0; if ("function" != typeof e) throw new TypeError(c); return t = a(t) || 0, o(n) && (_ = !!n.leading, S = "maxWait" in n, y = S ? k(a(n.maxWait) || 0, t) : y, z = "trailing" in n ? !!n.trailing : z), m.cancel = l, m.flush = p, m } function o(e) { var t = "undefined" == typeof e ? "undefined" : u(e); return !!e && ("object" == t || "function" == t) } function i(e) { return !!e && "object" == ("undefined" == typeof e ? "undefined" : u(e)) } function r(e) { return "symbol" == ("undefined" == typeof e ? "undefined" : u(e)) || i(e) && w.call(e) == s } function a(e) { if ("number" == typeof e) return e; if (r(e)) return f; if (o(e)) { var t = "function" == typeof e.valueOf ? e.valueOf() : e; e = o(t) ? t + "" : t } if ("string" != typeof e) return 0 === e ? e : +e; e = e.replace(d, ""); var n = p.test(e); return n || m.test(e) ? b(e.slice(2), n ? 2 : 8) : l.test(e) ? f : +e } var u = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, c = "Expected a function", f = NaN, s = "[object Symbol]", d = /^\s+|\s+$/g, l = /^[-+]0x[0-9a-f]+$/i, p = /^0b[01]+$/i, m = /^0o[0-7]+$/i, b = parseInt, v = "object" == ("undefined" == typeof t ? "undefined" : u(t)) && t && t.Object === Object && t, y = "object" == ("undefined" == typeof self ? "undefined" : u(self)) && self && self.Object === Object && self, g = v || y || Function("return this")(), h = Object.prototype, w = h.toString, k = Math.max, x = Math.min, j = function() { return g.Date.now() }; e.exports = n }).call(t, function() { return this }()) }, function(e, t) { "use strict"; function n(e, t) { var n = new r(o); a = t, n.observe(i.documentElement, { childList: !0, subtree: !0, removedNodes: !0 }) } function o(e) { e && e.forEach(function(e) { var t = Array.prototype.slice.call(e.addedNodes), n = Array.prototype.slice.call(e.removedNodes), o = t.concat(n).filter(function(e) { return e.hasAttribute && e.hasAttribute("data-aos") }).length; o && a() }) } Object.defineProperty(t, "__esModule", { value: !0 }); var i = window.document, r = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver, a = function() {}; t.default = n }, function(e, t) { "use strict"; function n(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function o() { return navigator.userAgent || navigator.vendor || window.opera || "" } Object.defineProperty(t, "__esModule", { value: !0 }); var i = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var o = t[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) } } return function(t, n, o) { return n && e(t.prototype, n), o && e(t, o), t } }(), r = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, a = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, u = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i, c = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, f = function() { function e() { n(this, e) } return i(e, [{ key: "phone", value: function() { var e = o(); return !(!r.test(e) && !a.test(e.substr(0, 4))) } }, { key: "mobile", value: function() { var e = o(); return !(!u.test(e) && !c.test(e.substr(0, 4))) } }, { key: "tablet", value: function() { return this.mobile() && !this.phone() } }]), e }(); t.default = new f }, function(e, t) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var n = function(e, t, n) { var o = e.node.getAttribute("data-aos-once"); t > e.position ? e.node.classList.add("aos-animate") : "undefined" != typeof o && ("false" === o || !n && "true" !== o) && e.node.classList.remove("aos-animate") }, o = function(e, t) { var o = window.pageYOffset, i = window.innerHeight; e.forEach(function(e, r) { n(e, i + o, t) }) }; t.default = o }, function(e, t, n) { "use strict"; function o(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(12), r = o(i), a = function(e, t) { return e.forEach(function(e, n) { e.node.classList.add("aos-init"), e.position = (0, r.default)(e.node, t.offset) }), e }; t.default = a }, function(e, t, n) { "use strict"; function o(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }); var i = n(13), r = o(i), a = function(e, t) { var n = 0, o = 0, i = window.innerHeight, a = { offset: e.getAttribute("data-aos-offset"), anchor: e.getAttribute("data-aos-anchor"), anchorPlacement: e.getAttribute("data-aos-anchor-placement") }; switch (a.offset && !isNaN(a.offset) && (o = parseInt(a.offset)), a.anchor && document.querySelectorAll(a.anchor) && (e = document.querySelectorAll(a.anchor)[0]), n = (0, r.default)(e).top, a.anchorPlacement) { case "top-bottom": break; case "center-bottom": n += e.offsetHeight / 2; break; case "bottom-bottom": n += e.offsetHeight; break; case "top-center": n += i / 2; break; case "bottom-center": n += i / 2 + e.offsetHeight; break; case "center-center": n += i / 2 + e.offsetHeight / 2; break; case "top-top": n += i; break; case "bottom-top": n += e.offsetHeight + i; break; case "center-top": n += e.offsetHeight / 2 + i } return a.anchorPlacement || a.offset || isNaN(t) || (o = t), n + o }; t.default = a }, function(e, t) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var n = function(e) { for (var t = 0, n = 0; e && !isNaN(e.offsetLeft) && !isNaN(e.offsetTop);) t += e.offsetLeft - ("BODY" != e.tagName ? e.scrollLeft : 0), n += e.offsetTop - ("BODY" != e.tagName ? e.scrollTop : 0), e = e.offsetParent; return { top: n, left: t } }; t.default = n }, function(e, t) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var n = function(e) { return e = e || document.querySelectorAll("[data-aos]"), Array.prototype.map.call(e, function(e) { return { node: e } }) }; t.default = n }]) }); /*! * VERSION: 2.1.3 * DATE: 2019-05-17 * UPDATES AND DOCS AT: http://greensock.com * * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin * * @license Copyright (c) 2008-2019, GreenSock. All rights reserved. * This work is subject to the terms at http://greensock.com/standard-license or for * Club GreenSock members, the software agreement that was issued with your membership. * * @author: Jack Doyle, jack@greensock.com **/ 'use strict'; var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window; (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() { "use strict"; _gsScope._gsDefine("TweenMax", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function(a, b, c) { var d = function(a) { var b, c = [], d = a.length; for (b = 0; b !== d; c.push(a[b++])); return c }, e = function(a, b, c) { var d, e, f = a.cycle; for (d in f) e = f[d], a[d] = "function" == typeof e ? e(c, b[c], b) : e[c % e.length]; delete a.cycle }, f = function(a) { if ("function" == typeof a) return a; var b = "object" == typeof a ? a : { each: a }, c = b.ease, d = b.from || 0, e = b.base || 0, f = {}, g = isNaN(d), h = b.axis, i = { center: .5, end: 1 }[d] || 0; return function(a, j, k) { var l, m, n, o, p, q, r, s, t, u = (k || b).length, v = f[u]; if (!v) { if (t = "auto" === b.grid ? 0 : (b.grid || [1 / 0])[0], !t) { for (r = -(1 / 0); r < (r = k[t++].getBoundingClientRect().left) && u > t;); t-- } for (v = f[u] = [], l = g ? Math.min(t, u) * i - .5 : d % t, m = g ? u * i / t - .5 : d / t | 0, r = 0, s = 1 / 0, q = 0; u > q; q++) n = q % t - l, o = m - (q / t | 0), v[q] = p = h ? Math.abs("y" === h ? o : n) : Math.sqrt(n * n + o * o), p > r && (r = p), s > p && (s = p); v.max = r - s, v.min = s, v.v = u = b.amount || b.each * (t > u ? u - 1 : h ? "y" === h ? u / t : t : Math.max(t, u / t)) || 0, v.b = 0 > u ? e - u : e } return u = (v[a] - v.min) / v.max, v.b + (c ? c.getRatio(u) : u) * v.v } }, g = function(a, b, d) { c.call(this, a, b, d), this._cycle = 0, this._yoyo = this.vars.yoyo === !0 || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._repeat && this._uncache(!0), this.render = g.prototype.render }, h = 1e-8, i = c._internals, j = i.isSelector, k = i.isArray, l = g.prototype = c.to({}, .1, {}), m = []; g.version = "2.1.3", l.constructor = g, l.kill()._gc = !1, g.killTweensOf = g.killDelayedCallsTo = c.killTweensOf, g.getTweensOf = c.getTweensOf, g.lagSmoothing = c.lagSmoothing, g.ticker = c.ticker, g.render = c.render, g.distribute = f, l.invalidate = function() { return this._yoyo = this.vars.yoyo === !0 || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._yoyoEase = null, this._uncache(!0), c.prototype.invalidate.call(this) }, l.updateTo = function(a, b) { var d, e = this, f = e.ratio, g = e.vars.immediateRender || a.immediateRender; b && e._startTime < e._timeline._time && (e._startTime = e._timeline._time, e._uncache(!1), e._gc ? e._enabled(!0, !1) : e._timeline.insert(e, e._startTime - e._delay)); for (d in a) e.vars[d] = a[d]; if (e._initted || g) if (b) e._initted = !1, g && e.render(0, !0, !0); else if (e._gc && e._enabled(!0, !1), e._notifyPluginsOfEnabled && e._firstPT && c._onPluginEvent("_onDisable", e), e._time / e._duration > .998) { var h = e._totalTime; e.render(0, !0, !1), e._initted = !1, e.render(h, !0, !1) } else if (e._initted = !1, e._init(), e._time > 0 || g) for (var i, j = 1 / (1 - f), k = e._firstPT; k;) i = k.s + k.c, k.c *= j, k.s = i - k.c, k = k._next; return e }, l.render = function(a, b, d) { this._initted || 0 === this._duration && this.vars.repeat && this.invalidate(); var e, f, g, j, k, l, m, n, o, p = this, q = p._dirty ? p.totalDuration() : p._totalDuration, r = p._time, s = p._totalTime, t = p._cycle, u = p._duration, v = p._rawPrevTime; if (a >= q - h && a >= 0 ? (p._totalTime = q, p._cycle = p._repeat, p._yoyo && 0 !== (1 & p._cycle) ? (p._time = 0, p.ratio = p._ease._calcEnd ? p._ease.getRatio(0) : 0) : (p._time = u, p.ratio = p._ease._calcEnd ? p._ease.getRatio(1) : 1), p._reversed || (e = !0, f = "onComplete", d = d || p._timeline.autoRemoveChildren), 0 === u && (p._initted || !p.vars.lazy || d) && (p._startTime === p._timeline._duration && (a = 0), (0 > v || 0 >= a && a >= -h || v === h && "isPause" !== p.data) && v !== a && (d = !0, v > h && (f = "onReverseComplete")), p._rawPrevTime = n = !b || a || v === a ? a : h)) : h > a ? (p._totalTime = p._time = p._cycle = 0, p.ratio = p._ease._calcEnd ? p._ease.getRatio(0) : 0, (0 !== s || 0 === u && v > 0) && (f = "onReverseComplete", e = p._reversed), a > -h ? a = 0 : 0 > a && (p._active = !1, 0 === u && (p._initted || !p.vars.lazy || d) && (v >= 0 && (d = !0), p._rawPrevTime = n = !b || a || v === a ? a : h)), p._initted || (d = !0)) : (p._totalTime = p._time = a, 0 !== p._repeat && (j = u + p._repeatDelay, p._cycle = p._totalTime / j >> 0, 0 !== p._cycle && p._cycle === p._totalTime / j && a >= s && p._cycle--, p._time = p._totalTime - p._cycle * j, p._yoyo && 0 !== (1 & p._cycle) && (p._time = u - p._time, o = p._yoyoEase || p.vars.yoyoEase, o && (p._yoyoEase || (o !== !0 || p._initted ? p._yoyoEase = o = o === !0 ? p._ease : o instanceof Ease ? o : Ease.map[o] : (o = p.vars.ease, p._yoyoEase = o = o ? o instanceof Ease ? o : "function" == typeof o ? new Ease(o, p.vars.easeParams) : Ease.map[o] || c.defaultEase : c.defaultEase)), p.ratio = o ? 1 - o.getRatio((u - p._time) / u) : 0)), p._time > u ? p._time = u : p._time < 0 && (p._time = 0)), p._easeType && !o ? (k = p._time / u, l = p._easeType, m = p._easePower, (1 === l || 3 === l && k >= .5) && (k = 1 - k), 3 === l && (k *= 2), 1 === m ? k *= k : 2 === m ? k *= k * k : 3 === m ? k *= k * k * k : 4 === m && (k *= k * k * k * k), p.ratio = 1 === l ? 1 - k : 2 === l ? k : p._time / u < .5 ? k / 2 : 1 - k / 2) : o || (p.ratio = p._ease.getRatio(p._time / u))), r === p._time && !d && t === p._cycle) return void(s !== p._totalTime && p._onUpdate && (b || p._callback("onUpdate"))); if (!p._initted) { if (p._init(), !p._initted || p._gc) return; if (!d && p._firstPT && (p.vars.lazy !== !1 && p._duration || p.vars.lazy && !p._duration)) return p._time = r, p._totalTime = s, p._rawPrevTime = v, p._cycle = t, i.lazyTweens.push(p), void(p._lazy = [a, b]); !p._time || e || o ? e && this._ease._calcEnd && !o && (p.ratio = p._ease.getRatio(0 === p._time ? 0 : 1)) : p.ratio = p._ease.getRatio(p._time / u) } for (p._lazy !== !1 && (p._lazy = !1), p._active || !p._paused && p._time !== r && a >= 0 && (p._active = !0), 0 === s && (2 === p._initted && a > 0 && p._init(), p._startAt && (a >= 0 ? p._startAt.render(a, !0, d) : f || (f = "_dummyGS")), p.vars.onStart && (0 !== p._totalTime || 0 === u) && (b || p._callback("onStart"))), g = p._firstPT; g;) g.f ? g.t[g.p](g.c * p.ratio + g.s) : g.t[g.p] = g.c * p.ratio + g.s, g = g._next; p._onUpdate && (0 > a && p._startAt && p._startTime && p._startAt.render(a, !0, d), b || (p._totalTime !== s || f) && p._callback("onUpdate")), p._cycle !== t && (b || p._gc || p.vars.onRepeat && p._callback("onRepeat")), f && (!p._gc || d) && (0 > a && p._startAt && !p._onUpdate && p._startTime && p._startAt.render(a, !0, d), e && (p._timeline.autoRemoveChildren && p._enabled(!1, !1), p._active = !1), !b && p.vars[f] && p._callback(f), 0 === u && p._rawPrevTime === h && n !== h && (p._rawPrevTime = 0)) }, g.to = function(a, b, c) { return new g(a, b, c) }, g.from = function(a, b, c) { return c.runBackwards = !0, c.immediateRender = 0 != c.immediateRender, new g(a, b, c) }, g.fromTo = function(a, b, c, d) { return d.startAt = c, d.immediateRender = 0 != d.immediateRender && 0 != c.immediateRender, new g(a, b, d) }, g.staggerTo = g.allTo = function(a, b, h, i, l, n, o) { var p, q, r, s, t = [], u = f(h.stagger || i), v = h.cycle, w = (h.startAt || m).cycle; for (k(a) || ("string" == typeof a && (a = c.selector(a) || a), j(a) && (a = d(a))), a = a || [], p = a.length - 1, r = 0; p >= r; r++) { q = {}; for (s in h) q[s] = h[s]; if (v && (e(q, a, r), null != q.duration && (b = q.duration, delete q.duration)), w) { w = q.startAt = {}; for (s in h.startAt) w[s] = h.startAt[s]; e(q.startAt, a, r) } q.delay = u(r, a[r], a) + (q.delay || 0), r === p && l && (q.onComplete = function() { h.onComplete && h.onComplete.apply(h.onCompleteScope || this, arguments), l.apply(o || h.callbackScope || this, n || m) }), t[r] = new g(a[r], b, q) } return t }, g.staggerFrom = g.allFrom = function(a, b, c, d, e, f, h) { return c.runBackwards = !0, c.immediateRender = 0 != c.immediateRender, g.staggerTo(a, b, c, d, e, f, h) }, g.staggerFromTo = g.allFromTo = function(a, b, c, d, e, f, h, i) { return d.startAt = c, d.immediateRender = 0 != d.immediateRender && 0 != c.immediateRender, g.staggerTo(a, b, d, e, f, h, i) }, g.delayedCall = function(a, b, c, d, e) { return new g(b, 0, { delay: a, onComplete: b, onCompleteParams: c, callbackScope: d, onReverseComplete: b, onReverseCompleteParams: c, immediateRender: !1, useFrames: e, overwrite: 0 }) }, g.set = function(a, b) { return new g(a, 0, b) }, g.isTweening = function(a) { return c.getTweensOf(a, !0).length > 0 }; var n = function(a, b) { for (var d = [], e = 0, f = a._first; f;) f instanceof c ? d[e++] = f : (b && (d[e++] = f), d = d.concat(n(f, b)), e = d.length), f = f._next; return d }, o = g.getAllTweens = function(b) { return n(a._rootTimeline, b).concat(n(a._rootFramesTimeline, b)) }; g.killAll = function(a, c, d, e) { null == c && (c = !0), null == d && (d = !0); var f, g, h, i = o(0 != e), j = i.length, k = c && d && e; for (h = 0; j > h; h++) g = i[h], (k || g instanceof b || (f = g.target === g.vars.onComplete) && d || c && !f) && (a ? g.totalTime(g._reversed ? 0 : g.totalDuration()) : g._enabled(!1, !1)) }, g.killChildTweensOf = function(a, b) { if (null != a) { var e, f, h, l, m, n = i.tweenLookup; if ("string" == typeof a && (a = c.selector(a) || a), j(a) && (a = d(a)), k(a)) for (l = a.length; --l > -1;) g.killChildTweensOf(a[l], b); else { e = []; for (h in n) for (f = n[h].target.parentNode; f;) f === a && (e = e.concat(n[h].tweens)), f = f.parentNode; for (m = e.length, l = 0; m > l; l++) b && e[l].totalTime(e[l].totalDuration()), e[l]._enabled(!1, !1) } } }; var p = function(a, c, d, e) { c = c !== !1, d = d !== !1, e = e !== !1; for (var f, g, h = o(e), i = c && d && e, j = h.length; --j > -1;) g = h[j], (i || g instanceof b || (f = g.target === g.vars.onComplete) && d || c && !f) && g.paused(a) }; return g.pauseAll = function(a, b, c) { p(!0, a, b, c) }, g.resumeAll = function(a, b, c) { p(!1, a, b, c) }, g.globalTimeScale = function(b) { var d = a._rootTimeline, e = c.ticker.time; return arguments.length ? (b = b || h, d._startTime = e - (e - d._startTime) * d._timeScale / b, d = a._rootFramesTimeline, e = c.ticker.frame, d._startTime = e - (e - d._startTime) * d._timeScale / b, d._timeScale = a._rootTimeline._timeScale = b, b) : d._timeScale }, l.progress = function(a, b) { return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 !== (1 & this._cycle) ? 1 - a : a) + this._cycle * (this._duration + this._repeatDelay), b) : this.duration() ? this._time / this._duration : this.ratio }, l.totalProgress = function(a, b) { return arguments.length ? this.totalTime(this.totalDuration() * a, b) : this._totalTime / this.totalDuration() }, l.time = function(a, b) { if (!arguments.length) return this._time; this._dirty && this.totalDuration(); var c = this._duration, d = this._cycle, e = d * (c + this._repeatDelay); return a > c && (a = c), this.totalTime(this._yoyo && 1 & d ? c - a + e : this._repeat ? a + e : a, b) }, l.duration = function(b) { return arguments.length ? a.prototype.duration.call(this, b) : this._duration }, l.totalDuration = function(a) { return arguments.length ? -1 === this._repeat ? this : this.duration((a - this._repeat * this._repeatDelay) / (this._repeat + 1)) : (this._dirty && (this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat, this._dirty = !1), this._totalDuration) }, l.repeat = function(a) { return arguments.length ? (this._repeat = a, this._uncache(!0)) : this._repeat }, l.repeatDelay = function(a) { return arguments.length ? (this._repeatDelay = a, this._uncache(!0)) : this._repeatDelay }, l.yoyo = function(a) { return arguments.length ? (this._yoyo = a, this) : this._yoyo }, g }, !0), _gsScope._gsDefine("TimelineLite", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function(a, b, c) { var d = function(a) { b.call(this, a); var c, d, e = this, f = e.vars; e._labels = {}, e.autoRemoveChildren = !!f.autoRemoveChildren, e.smoothChildTiming = !!f.smoothChildTiming, e._sortChildren = !0, e._onUpdate = f.onUpdate; for (d in f) c = f[d], i(c) && -1 !== c.join("").indexOf("{self}") && (f[d] = e._swapSelfInParams(c)); i(f.tweens) && e.add(f.tweens, 0, f.align, f.stagger) }, e = 1e-8, f = c._internals, g = d._internals = {}, h = f.isSelector, i = f.isArray, j = f.lazyTweens, k = f.lazyRender, l = _gsScope._gsDefine.globals, m = function(a) { var b, c = {}; for (b in a) c[b] = a[b]; return c }, n = function(a, b, c) { var d, e, f = a.cycle; for (d in f) e = f[d], a[d] = "function" == typeof e ? e(c, b[c], b) : e[c % e.length]; delete a.cycle }, o = g.pauseCallback = function() {}, p = function(a) { var b, c = [], d = a.length; for (b = 0; b !== d; c.push(a[b++])); return c }, q = function(a, b, c, d) { var e = "immediateRender"; return e in b || (b[e] = !(c && c[e] === !1 || d)), b }, r = function(a) { if ("function" == typeof a) return a; var b = "object" == typeof a ? a : { each: a }, c = b.ease, d = b.from || 0, e = b.base || 0, f = {}, g = isNaN(d), h = b.axis, i = { center: .5, end: 1 }[d] || 0; return function(a, j, k) { var l, m, n, o, p, q, r, s, t, u = (k || b).length, v = f[u]; if (!v) { if (t = "auto" === b.grid ? 0 : (b.grid || [1 / 0])[0], !t) { for (r = -(1 / 0); r < (r = k[t++].getBoundingClientRect().left) && u > t;); t-- } for (v = f[u] = [], l = g ? Math.min(t, u) * i - .5 : d % t, m = g ? u * i / t - .5 : d / t | 0, r = 0, s = 1 / 0, q = 0; u > q; q++) n = q % t - l, o = m - (q / t | 0), v[q] = p = h ? Math.abs("y" === h ? o : n) : Math.sqrt(n * n + o * o), p > r && (r = p), s > p && (s = p); v.max = r - s, v.min = s, v.v = u = b.amount || b.each * (t > u ? u - 1 : h ? "y" === h ? u / t : t : Math.max(t, u / t)) || 0, v.b = 0 > u ? e - u : e } return u = (v[a] - v.min) / v.max, v.b + (c ? c.getRatio(u) : u) * v.v } }, s = d.prototype = new b; return d.version = "2.1.3", d.distribute = r, s.constructor = d, s.kill()._gc = s._forcingPlayhead = s._hasPause = !1, s.to = function(a, b, d, e) { var f = d.repeat && l.TweenMax || c; return b ? this.add(new f(a, b, d), e) : this.set(a, d, e) }, s.from = function(a, b, d, e) { return this.add((d.repeat && l.TweenMax || c).from(a, b, q(this, d)), e) }, s.fromTo = function(a, b, d, e, f) { var g = e.repeat && l.TweenMax || c; return e = q(this, e, d), b ? this.add(g.fromTo(a, b, d, e), f) : this.set(a, e, f) }, s.staggerTo = function(a, b, e, f, g, i, j, k) { var l, o, q = new d({ onComplete: i, onCompleteParams: j, callbackScope: k, smoothChildTiming: this.smoothChildTiming }), s = r(e.stagger || f), t = e.startAt, u = e.cycle; for ("string" == typeof a && (a = c.selector(a) || a), a = a || [], h(a) && (a = p(a)), o = 0; o < a.length; o++) l = m(e), t && (l.startAt = m(t), t.cycle && n(l.startAt, a, o)), u && (n(l, a, o), null != l.duration && (b = l.duration, delete l.duration)), q.to(a[o], b, l, s(o, a[o], a)); return this.add(q, g) }, s.staggerFrom = function(a, b, c, d, e, f, g, h) { return c.runBackwards = !0, this.staggerTo(a, b, q(this, c), d, e, f, g, h) }, s.staggerFromTo = function(a, b, c, d, e, f, g, h, i) { return d.startAt = c, this.staggerTo(a, b, q(this, d, c), e, f, g, h, i) }, s.call = function(a, b, d, e) { return this.add(c.delayedCall(0, a, b, d), e) }, s.set = function(a, b, d) { return this.add(new c(a, 0, q(this, b, null, !0)), d) }, d.exportRoot = function(a, b) { a = a || {}, null == a.smoothChildTiming && (a.smoothChildTiming = !0); var e, f, g, h, i = new d(a), j = i._timeline; for (null == b && (b = !0), j._remove(i, !0), i._startTime = 0, i._rawPrevTime = i._time = i._totalTime = j._time, g = j._first; g;) h = g._next, b && g instanceof c && g.target === g.vars.onComplete || (f = g._startTime - g._delay, 0 > f && (e = 1), i.add(g, f)), g = h; return j.add(i, 0), e && i.totalDuration(), i }, s.add = function(e, f, g, h) { var j, k, l, m, n, o, p = this; if ("number" != typeof f && (f = p._parseTimeOrLabel(f, 0, !0, e)), !(e instanceof a)) { if (e instanceof Array || e && e.push && i(e)) { for (g = g || "normal", h = h || 0, j = f, k = e.length, l = 0; k > l; l++) i(m = e[l]) && (m = new d({ tweens: m })), p.add(m, j), "string" != typeof m && "function" != typeof m && ("sequence" === g ? j = m._startTime + m.totalDuration() / m._timeScale : "start" === g && (m._startTime -= m.delay())), j += h; return p._uncache(!0) } if ("string" == typeof e) return p.addLabel(e, f); if ("function" != typeof e) throw "Cannot add " + e + " into the timeline; it is not a tween, timeline, function, or string."; e = c.delayedCall(0, e) } if (b.prototype.add.call(p, e, f), (e._time || !e._duration && e._initted) && (j = (p.rawTime() - e._startTime) * e._timeScale, (!e._duration || Math.abs(Math.max(0, Math.min(e.totalDuration(), j))) - e._totalTime > 1e-5) && e.render(j, !1, !1)), (p._gc || p._time === p._duration) && !p._paused && p._duration < p.duration()) for (n = p, o = n.rawTime() > e._startTime; n._timeline;) o && n._timeline.smoothChildTiming ? n.totalTime(n._totalTime, !0) : n._gc && n._enabled(!0, !1), n = n._timeline; return p }, s.remove = function(b) { if (b instanceof a) { this._remove(b, !1); var c = b._timeline = b.vars.useFrames ? a._rootFramesTimeline : a._rootTimeline; return b._startTime = (b._paused ? b._pauseTime : c._time) - (b._reversed ? b.totalDuration() - b._totalTime : b._totalTime) / b._timeScale, this } if (b instanceof Array || b && b.push && i(b)) { for (var d = b.length; --d > -1;) this.remove(b[d]); return this } return "string" == typeof b ? this.removeLabel(b) : this.kill(null, b) }, s._remove = function(a, c) { b.prototype._remove.call(this, a, c); var d = this._last; return d ? this._time > this.duration() && (this._time = this._duration, this._totalTime = this._totalDuration) : this._time = this._totalTime = this._duration = this._totalDuration = 0, this }, s.append = function(a, b) { return this.add(a, this._parseTimeOrLabel(null, b, !0, a)) }, s.insert = s.insertMultiple = function(a, b, c, d) { return this.add(a, b || 0, c, d) }, s.appendMultiple = function(a, b, c, d) { return this.add(a, this._parseTimeOrLabel(null, b, !0, a), c, d) }, s.addLabel = function(a, b) { return this._labels[a] = this._parseTimeOrLabel(b), this }, s.addPause = function(a, b, d, e) { var f = c.delayedCall(0, o, d, e || this); return f.vars.onComplete = f.vars.onReverseComplete = b, f.data = "isPause", this._hasPause = !0, this.add(f, a) }, s.removeLabel = function(a) { return delete this._labels[a], this }, s.getLabelTime = function(a) { return null != this._labels[a] ? this._labels[a] : -1 }, s._parseTimeOrLabel = function(b, c, d, e) { var f, g; if (e instanceof a && e.timeline === this) this.remove(e); else if (e && (e instanceof Array || e.push && i(e))) for (g = e.length; --g > -1;) e[g] instanceof a && e[g].timeline === this && this.remove(e[g]); if (f = "number" != typeof b || c ? this.duration() > 99999999999 ? this.recent().endTime(!1) : this._duration : 0, "string" == typeof c) return this._parseTimeOrLabel(c, d && "number" == typeof b && null == this._labels[c] ? b - f : 0, d); if (c = c || 0, "string" != typeof b || !isNaN(b) && null == this._labels[b]) null == b && (b = f); else { if (g = b.indexOf("="), -1 === g) return null == this._labels[b] ? d ? this._labels[b] = f + c : c : this._labels[b] + c; c = parseInt(b.charAt(g - 1) + "1", 10) * Number(b.substr(g + 1)), b = g > 1 ? this._parseTimeOrLabel(b.substr(0, g - 1), 0, d) : f } return Number(b) + c }, s.seek = function(a, b) { return this.totalTime("number" == typeof a ? a : this._parseTimeOrLabel(a), b !== !1) }, s.stop = function() { return this.paused(!0) }, s.gotoAndPlay = function(a, b) { return this.play(a, b) }, s.gotoAndStop = function(a, b) { return this.pause(a, b) }, s.render = function(a, b, c) { this._gc && this._enabled(!0, !1); var d, f, g, h, i, l, m, n, o = this, p = o._time, q = o._dirty ? o.totalDuration() : o._totalDuration, r = o._startTime, s = o._timeScale, t = o._paused; if (p !== o._time && (a += o._time - p), o._hasPause && !o._forcingPlayhead && !b) { if (a > p) for (d = o._first; d && d._startTime <= a && !l;) d._duration || "isPause" !== d.data || d.ratio || 0 === d._startTime && 0 === o._rawPrevTime || (l = d), d = d._next; else for (d = o._last; d && d._startTime >= a && !l;) d._duration || "isPause" === d.data && d._rawPrevTime > 0 && (l = d), d = d._prev; l && (o._time = o._totalTime = a = l._startTime, n = o._startTime + (o._reversed ? o._duration - a : a) / o._timeScale) } if (a >= q - e && a >= 0) o._totalTime = o._time = q, o._reversed || o._hasPausedChild() || (f = !0, h = "onComplete", i = !!o._timeline.autoRemoveChildren, 0 === o._duration && (0 >= a && a >= -e || o._rawPrevTime < 0 || o._rawPrevTime === e) && o._rawPrevTime !== a && o._first && (i = !0, o._rawPrevTime > e && (h = "onReverseComplete"))), o._rawPrevTime = o._duration || !b || a || o._rawPrevTime === a ? a : e, a = q + 1e-4; else if (e > a) if (o._totalTime = o._time = 0, a > -e && (a = 0), (0 !== p || 0 === o._duration && o._rawPrevTime !== e && (o._rawPrevTime > 0 || 0 > a && o._rawPrevTime >= 0)) && (h = "onReverseComplete", f = o._reversed), 0 > a) o._active = !1, o._timeline.autoRemoveChildren && o._reversed ? (i = f = !0, h = "onReverseComplete") : o._rawPrevTime >= 0 && o._first && (i = !0), o._rawPrevTime = a; else { if (o._rawPrevTime = o._duration || !b || a || o._rawPrevTime === a ? a : e, 0 === a && f) for (d = o._first; d && 0 === d._startTime;) d._duration || (f = !1), d = d._next; a = 0, o._initted || (i = !0) } else o._totalTime = o._time = o._rawPrevTime = a; if (o._time !== p && o._first || c || i || l) { if (o._initted || (o._initted = !0), o._active || !o._paused && o._time !== p && a > 0 && (o._active = !0), 0 === p && o.vars.onStart && (0 === o._time && o._duration || b || o._callback("onStart")), m = o._time, m >= p) for (d = o._first; d && (g = d._next, m === o._time && (!o._paused || t));)(d._active || d._startTime <= m && !d._paused && !d._gc) && (l === d && (o.pause(), o._pauseTime = n), d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c)), d = g; else for (d = o._last; d && (g = d._prev, m === o._time && (!o._paused || t));) { if (d._active || d._startTime <= p && !d._paused && !d._gc) { if (l === d) { for (l = d._prev; l && l.endTime() > o._time;) l.render(l._reversed ? l.totalDuration() - (a - l._startTime) * l._timeScale : (a - l._startTime) * l._timeScale, b, c), l = l._prev; l = null, o.pause(), o._pauseTime = n } d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c) } d = g } o._onUpdate && (b || (j.length && k(), o._callback("onUpdate"))), h && (o._gc || (r === o._startTime || s !== o._timeScale) && (0 === o._time || q >= o.totalDuration()) && (f && (j.length && k(), o._timeline.autoRemoveChildren && o._enabled(!1, !1), o._active = !1), !b && o.vars[h] && o._callback(h))) } }, s._hasPausedChild = function() { for (var a = this._first; a;) { if (a._paused || a instanceof d && a._hasPausedChild()) return !0; a = a._next } return !1 }, s.getChildren = function(a, b, d, e) { e = e || -9999999999; for (var f = [], g = this._first, h = 0; g;) g._startTime < e || (g instanceof c ? b !== !1 && (f[h++] = g) : (d !== !1 && (f[h++] = g), a !== !1 && (f = f.concat(g.getChildren(!0, b, d)), h = f.length))), g = g._next; return f }, s.getTweensOf = function(a, b) { var d, e, f = this._gc, g = [], h = 0; for (f && this._enabled(!0, !0), d = c.getTweensOf(a), e = d.length; --e > -1;)(d[e].timeline === this || b && this._contains(d[e])) && (g[h++] = d[e]); return f && this._enabled(!1, !0), g }, s.recent = function() { return this._recent }, s._contains = function(a) { for (var b = a.timeline; b;) { if (b === this) return !0; b = b.timeline } return !1 }, s.shiftChildren = function(a, b, c) { c = c || 0; for (var d, e = this._first, f = this._labels; e;) e._startTime >= c && (e._startTime += a), e = e._next; if (b) for (d in f) f[d] >= c && (f[d] += a); return this._uncache(!0) }, s._kill = function(a, b) { if (!a && !b) return this._enabled(!1, !1); for (var c = b ? this.getTweensOf(b) : this.getChildren(!0, !0, !1), d = c.length, e = !1; --d > -1;) c[d]._kill(a, b) && (e = !0); return e }, s.clear = function(a) { var b = this.getChildren(!1, !0, !0), c = b.length; for (this._time = this._totalTime = 0; --c > -1;) b[c]._enabled(!1, !1); return a !== !1 && (this._labels = {}), this._uncache(!0) }, s.invalidate = function() { for (var b = this._first; b;) b.invalidate(), b = b._next; return a.prototype.invalidate.call(this) }, s._enabled = function(a, c) { if (a === this._gc) for (var d = this._first; d;) d._enabled(a, !0), d = d._next; return b.prototype._enabled.call(this, a, c) }, s.totalTime = function(b, c, d) { this._forcingPlayhead = !0; var e = a.prototype.totalTime.apply(this, arguments); return this._forcingPlayhead = !1, e }, s.duration = function(a) { return arguments.length ? (0 !== this.duration() && 0 !== a && this.timeScale(this._duration / a), this) : (this._dirty && this.totalDuration(), this._duration) }, s.totalDuration = function(a) { if (!arguments.length) { if (this._dirty) { for (var b, c, d = 0, e = this, f = e._last, g = 999999999999; f;) b = f._prev, f._dirty && f.totalDuration(), f._startTime > g && e._sortChildren && !f._paused && !e._calculatingDuration ? (e._calculatingDuration = 1, e.add(f, f._startTime - f._delay), e._calculatingDuration = 0) : g = f._startTime, f._startTime < 0 && !f._paused && (d -= f._startTime, e._timeline.smoothChildTiming && (e._startTime += f._startTime / e._timeScale, e._time -= f._startTime, e._totalTime -= f._startTime, e._rawPrevTime -= f._startTime), e.shiftChildren(-f._startTime, !1, -9999999999), g = 0), c = f._startTime + f._totalDuration / f._timeScale, c > d && (d = c), f = b; e._duration = e._totalDuration = d, e._dirty = !1 } return this._totalDuration } return a && this.totalDuration() ? this.timeScale(this._totalDuration / a) : this }, s.paused = function(b) { if (b === !1 && this._paused) for (var c = this._first; c;) c._startTime === this._time && "isPause" === c.data && (c._rawPrevTime = 0), c = c._next; return a.prototype.paused.apply(this, arguments) }, s.usesFrames = function() { for (var b = this._timeline; b._timeline;) b = b._timeline; return b === a._rootFramesTimeline }, s.rawTime = function(a) { return a && (this._paused || this._repeat && this.time() > 0 && this.totalProgress() < 1) ? this._totalTime % (this._duration + this._repeatDelay) : this._paused ? this._totalTime : (this._timeline.rawTime(a) - this._startTime) * this._timeScale }, d }, !0), _gsScope._gsDefine("TimelineMax", ["TimelineLite", "TweenLite", "easing.Ease"], function(a, b, c) { var d = function(b) { a.call(this, b), this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._cycle = 0, this._yoyo = !!this.vars.yoyo, this._dirty = !0 }, e = 1e-8, f = b._internals, g = f.lazyTweens, h = f.lazyRender, i = _gsScope._gsDefine.globals, j = new c(null, null, 1, 0), k = d.prototype = new a; return k.constructor = d, k.kill()._gc = !1, d.version = "2.1.3", k.invalidate = function() { return this._yoyo = !!this.vars.yoyo, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._uncache(!0), a.prototype.invalidate.call(this) }, k.addCallback = function(a, c, d, e) { return this.add(b.delayedCall(0, a, d, e), c) }, k.removeCallback = function(a, b) { if (a) if (null == b) this._kill(null, a); else for (var c = this.getTweensOf(a, !1), d = c.length, e = this._parseTimeOrLabel(b); --d > -1;) c[d]._startTime === e && c[d]._enabled(!1, !1); return this }, k.removePause = function(b) { return this.removeCallback(a._internals.pauseCallback, b) }, k.tweenTo = function(a, c) { c = c || {}; var d, e, f, g = { ease: j, useFrames: this.usesFrames(), immediateRender: !1, lazy: !1 }, h = c.repeat && i.TweenMax || b; for (e in c) g[e] = c[e]; return g.time = this._parseTimeOrLabel(a), d = Math.abs(Number(g.time) - this._time) / this._timeScale || .001, f = new h(this, d, g), g.onStart = function() { f.target.paused(!0), f.vars.time === f.target.time() || d !== f.duration() || f.isFromTo || f.duration(Math.abs(f.vars.time - f.target.time()) / f.target._timeScale).render(f.time(), !0, !0), c.onStart && c.onStart.apply(c.onStartScope || c.callbackScope || f, c.onStartParams || []) }, f }, k.tweenFromTo = function(a, b, c) { c = c || {}, a = this._parseTimeOrLabel(a), c.startAt = { onComplete: this.seek, onCompleteParams: [a], callbackScope: this }, c.immediateRender = c.immediateRender !== !1; var d = this.tweenTo(b, c); return d.isFromTo = 1, d.duration(Math.abs(d.vars.time - a) / this._timeScale || .001) }, k.render = function(a, b, c) { this._gc && this._enabled(!0, !1); var d, f, i, j, k, l, m, n, o, p = this, q = p._time, r = p._dirty ? p.totalDuration() : p._totalDuration, s = p._duration, t = p._totalTime, u = p._startTime, v = p._timeScale, w = p._rawPrevTime, x = p._paused, y = p._cycle; if (q !== p._time && (a += p._time - q), a >= r - e && a >= 0) p._locked || (p._totalTime = r, p._cycle = p._repeat), p._reversed || p._hasPausedChild() || (f = !0, j = "onComplete", k = !!p._timeline.autoRemoveChildren, 0 === p._duration && (0 >= a && a >= -e || 0 > w || w === e) && w !== a && p._first && (k = !0, w > e && (j = "onReverseComplete"))), p._rawPrevTime = p._duration || !b || a || p._rawPrevTime === a ? a : e, p._yoyo && 1 & p._cycle ? p._time = a = 0 : (p._time = s, a = s + 1e-4); else if (e > a) if (p._locked || (p._totalTime = p._cycle = 0), p._time = 0, a > -e && (a = 0), (0 !== q || 0 === s && w !== e && (w > 0 || 0 > a && w >= 0) && !p._locked) && (j = "onReverseComplete", f = p._reversed), 0 > a) p._active = !1, p._timeline.autoRemoveChildren && p._reversed ? (k = f = !0, j = "onReverseComplete") : w >= 0 && p._first && (k = !0), p._rawPrevTime = a; else { if (p._rawPrevTime = s || !b || a || p._rawPrevTime === a ? a : e, 0 === a && f) for (d = p._first; d && 0 === d._startTime;) d._duration || (f = !1), d = d._next; a = 0, p._initted || (k = !0) } else 0 === s && 0 > w && (k = !0), p._time = p._rawPrevTime = a, p._locked || (p._totalTime = a, 0 !== p._repeat && (l = s + p._repeatDelay, p._cycle = p._totalTime / l >> 0, p._cycle && p._cycle === p._totalTime / l && a >= t && p._cycle--, p._time = p._totalTime - p._cycle * l, p._yoyo && 1 & p._cycle && (p._time = s - p._time), p._time > s ? (p._time = s, a = s + 1e-4) : p._time < 0 ? p._time = a = 0 : a = p._time)); if (p._hasPause && !p._forcingPlayhead && !b) { if (a = p._time, a > q || p._repeat && y !== p._cycle) for (d = p._first; d && d._startTime <= a && !m;) d._duration || "isPause" !== d.data || d.ratio || 0 === d._startTime && 0 === p._rawPrevTime || (m = d), d = d._next; else for (d = p._last; d && d._startTime >= a && !m;) d._duration || "isPause" === d.data && d._rawPrevTime > 0 && (m = d), d = d._prev; m && (o = p._startTime + (p._reversed ? p._duration - m._startTime : m._startTime) / p._timeScale, m._startTime < s && (p._time = p._rawPrevTime = a = m._startTime, p._totalTime = a + p._cycle * (p._totalDuration + p._repeatDelay))) } if (p._cycle !== y && !p._locked) { var z = p._yoyo && 0 !== (1 & y), A = z === (p._yoyo && 0 !== (1 & p._cycle)), B = p._totalTime, C = p._cycle, D = p._rawPrevTime, E = p._time; if (p._totalTime = y * s, p._cycle < y ? z = !z : p._totalTime += s, p._time = q, p._rawPrevTime = 0 === s ? w - 1e-4 : w, p._cycle = y, p._locked = !0, q = z ? 0 : s, p.render(q, b, 0 === s), b || p._gc || p.vars.onRepeat && (p._cycle = C, p._locked = !1, p._callback("onRepeat")), q !== p._time) return; if (A && (p._cycle = y, p._locked = !0, q = z ? s + 1e-4 : -1e-4, p.render(q, !0, !1)), p._locked = !1, p._paused && !x) return; p._time = E, p._totalTime = B, p._cycle = C, p._rawPrevTime = D } if (!(p._time !== q && p._first || c || k || m)) return void(t !== p._totalTime && p._onUpdate && (b || p._callback("onUpdate"))); if (p._initted || (p._initted = !0), p._active || !p._paused && p._totalTime !== t && a > 0 && (p._active = !0), 0 === t && p.vars.onStart && (0 === p._totalTime && p._totalDuration || b || p._callback("onStart")), n = p._time, n >= q) for (d = p._first; d && (i = d._next, n === p._time && (!p._paused || x));)(d._active || d._startTime <= p._time && !d._paused && !d._gc) && (m === d && (p.pause(), p._pauseTime = o), d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c)), d = i; else for (d = p._last; d && (i = d._prev, n === p._time && (!p._paused || x));) { if (d._active || d._startTime <= q && !d._paused && !d._gc) { if (m === d) { for (m = d._prev; m && m.endTime() > p._time;) m.render(m._reversed ? m.totalDuration() - (a - m._startTime) * m._timeScale : (a - m._startTime) * m._timeScale, b, c), m = m._prev; m = null, p.pause(), p._pauseTime = o } d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c) } d = i } p._onUpdate && (b || (g.length && h(), p._callback("onUpdate"))), j && (p._locked || p._gc || (u === p._startTime || v !== p._timeScale) && (0 === p._time || r >= p.totalDuration()) && (f && (g.length && h(), p._timeline.autoRemoveChildren && p._enabled(!1, !1), p._active = !1), !b && p.vars[j] && p._callback(j))) }, k.getActive = function(a, b, c) { var d, e, f = [], g = this.getChildren(a || null == a, b || null == a, !!c), h = 0, i = g.length; for (d = 0; i > d; d++) e = g[d], e.isActive() && (f[h++] = e); return f }, k.getLabelAfter = function(a) { a || 0 !== a && (a = this._time); var b, c = this.getLabelsArray(), d = c.length; for (b = 0; d > b; b++) if (c[b].time > a) return c[b].name; return null }, k.getLabelBefore = function(a) { null == a && (a = this._time); for (var b = this.getLabelsArray(), c = b.length; --c > -1;) if (b[c].time < a) return b[c].name; return null }, k.getLabelsArray = function() { var a, b = [], c = 0; for (a in this._labels) b[c++] = { time: this._labels[a], name: a }; return b.sort(function(a, b) { return a.time - b.time }), b }, k.invalidate = function() { return this._locked = !1, a.prototype.invalidate.call(this) }, k.progress = function(a, b) { return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 !== (1 & this._cycle) ? 1 - a : a) + this._cycle * (this._duration + this._repeatDelay), b) : this._time / this.duration() || 0 }, k.totalProgress = function(a, b) { return arguments.length ? this.totalTime(this.totalDuration() * a, b) : this._totalTime / this.totalDuration() || 0 }, k.totalDuration = function(b) { return arguments.length ? -1 !== this._repeat && b ? this.timeScale(this.totalDuration() / b) : this : (this._dirty && (a.prototype.totalDuration.call(this), this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat), this._totalDuration) }, k.time = function(a, b) { if (!arguments.length) return this._time; this._dirty && this.totalDuration(); var c = this._duration, d = this._cycle, e = d * (c + this._repeatDelay); return a > c && (a = c), this.totalTime(this._yoyo && 1 & d ? c - a + e : this._repeat ? a + e : a, b) }, k.repeat = function(a) { return arguments.length ? (this._repeat = a, this._uncache(!0)) : this._repeat }, k.repeatDelay = function(a) { return arguments.length ? (this._repeatDelay = a, this._uncache(!0)) : this._repeatDelay }, k.yoyo = function(a) { return arguments.length ? (this._yoyo = a, this) : this._yoyo }, k.currentLabel = function(a) { return arguments.length ? this.seek(a, !0) : this.getLabelBefore(this._time + e) }, d }, !0), function() { var a = 180 / Math.PI, b = [], c = [], d = [], e = {}, f = _gsScope._gsDefine.globals, g = function(a, b, c, d) { c === d && (c = d - (d - b) / 1e6), a === b && (b = a + (c - a) / 1e6), this.a = a, this.b = b, this.c = c, this.d = d, this.da = d - a, this.ca = c - a, this.ba = b - a }, h = ",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,", i = function(a, b, c, d) { var e = { a: a }, f = {}, g = {}, h = { c: d }, i = (a + b) / 2, j = (b + c) / 2, k = (c + d) / 2, l = (i + j) / 2, m = (j + k) / 2, n = (m - l) / 8; return e.b = i + (a - i) / 4, f.b = l + n, e.c = f.a = (e.b + f.b) / 2, f.c = g.a = (l + m) / 2, g.b = m - n, h.b = k + (d - k) / 4, g.c = h.a = (g.b + h.b) / 2, [e, f, g, h] }, j = function(a, e, f, g, h) { var j, k, l, m, n, o, p, q, r, s, t, u, v, w = a.length - 1, x = 0, y = a[0].a; for (j = 0; w > j; j++) n = a[x], k = n.a, l = n.d, m = a[x + 1].d, h ? (t = b[j], u = c[j], v = (u + t) * e * .25 / (g ? .5 : d[j] || .5), o = l - (l - k) * (g ? .5 * e : 0 !== t ? v / t : 0), p = l + (m - l) * (g ? .5 * e : 0 !== u ? v / u : 0), q = l - (o + ((p - o) * (3 * t / (t + u) + .5) / 4 || 0))) : (o = l - (l - k) * e * .5, p = l + (m - l) * e * .5, q = l - (o + p) / 2), o += q, p += q, n.c = r = o, 0 !== j ? n.b = y : n.b = y = n.a + .6 * (n.c - n.a), n.da = l - k, n.ca = r - k, n.ba = y - k, f ? (s = i(k, y, r, l), a.splice(x, 1, s[0], s[1], s[2], s[3]), x += 4) : x++, y = p; n = a[x], n.b = y, n.c = y + .4 * (n.d - y), n.da = n.d - n.a, n.ca = n.c - n.a, n.ba = y - n.a, f && (s = i(n.a, y, n.c, n.d), a.splice(x, 1, s[0], s[1], s[2], s[3])) }, k = function(a, d, e, f) { var h, i, j, k, l, m, n = []; if (f) for (a = [f].concat(a), i = a.length; --i > -1;) "string" == typeof(m = a[i][d]) && "=" === m.charAt(1) && (a[i][d] = f[d] + Number(m.charAt(0) + m.substr(2))); if (h = a.length - 2, 0 > h) return n[0] = new g(a[0][d], 0, 0, a[0][d]), n; for (i = 0; h > i; i++) j = a[i][d], k = a[i + 1][d], n[i] = new g(j, 0, 0, k), e && (l = a[i + 2][d], b[i] = (b[i] || 0) + (k - j) * (k - j), c[i] = (c[i] || 0) + (l - k) * (l - k)); return n[i] = new g(a[i][d], 0, 0, a[i + 1][d]), n }, l = function(a, f, g, i, l, m) { var n, o, p, q, r, s, t, u, v = {}, w = [], x = m || a[0]; l = "string" == typeof l ? "," + l + "," : h, null == f && (f = 1); for (o in a[0]) w.push(o); if (a.length > 1) { for (u = a[a.length - 1], t = !0, n = w.length; --n > -1;) if (o = w[n], Math.abs(x[o] - u[o]) > .05) { t = !1; break } t && (a = a.concat(), m && a.unshift(m), a.push(a[1]), m = a[a.length - 3]) } for (b.length = c.length = d.length = 0, n = w.length; --n > -1;) o = w[n], e[o] = -1 !== l.indexOf("," + o + ","), v[o] = k(a, o, e[o], m); for (n = b.length; --n > -1;) b[n] = Math.sqrt(b[n]), c[n] = Math.sqrt(c[n]); if (!i) { for (n = w.length; --n > -1;) if (e[o]) for (p = v[w[n]], s = p.length - 1, q = 0; s > q; q++) r = p[q + 1].da / c[q] + p[q].da / b[q] || 0, d[q] = (d[q] || 0) + r * r; for (n = d.length; --n > -1;) d[n] = Math.sqrt(d[n]) } for (n = w.length, q = g ? 4 : 1; --n > -1;) o = w[n], p = v[o], j(p, f, g, i, e[o]), t && (p.splice(0, q), p.splice(p.length - q, q)); return v }, m = function(a, b, c) { b = b || "soft"; var d, e, f, h, i, j, k, l, m, n, o, p = {}, q = "cubic" === b ? 3 : 2, r = "soft" === b, s = []; if (r && c && (a = [c].concat(a)), null == a || a.length < q + 1) throw "invalid Bezier data"; for (m in a[0]) s.push(m); for (j = s.length; --j > -1;) { for (m = s[j], p[m] = i = [], n = 0, l = a.length, k = 0; l > k; k++) d = null == c ? a[k][m] : "string" == typeof(o = a[k][m]) && "=" === o.charAt(1) ? c[m] + Number(o.charAt(0) + o.substr(2)) : Number(o), r && k > 1 && l - 1 > k && (i[n++] = (d + i[n - 2]) / 2), i[n++] = d; for (l = n - q + 1, n = 0, k = 0; l > k; k += q) d = i[k], e = i[k + 1], f = i[k + 2], h = 2 === q ? 0 : i[k + 3], i[n++] = o = 3 === q ? new g(d, e, f, h) : new g(d, (2 * e + d) / 3, (2 * e + f) / 3, f); i.length = n } return p }, n = function(a, b, c) { for (var d, e, f, g, h, i, j, k, l, m, n, o = 1 / c, p = a.length; --p > -1;) for (m = a[p], f = m.a, g = m.d - f, h = m.c - f, i = m.b - f, d = e = 0, k = 1; c >= k; k++) j = o * k, l = 1 - j, d = e - (e = (j * j * g + 3 * l * (j * h + l * i)) * j), n = p * c + k - 1, b[n] = (b[n] || 0) + d * d }, o = function(a, b) { b = b >> 0 || 6; var c, d, e, f, g = [], h = [], i = 0, j = 0, k = b - 1, l = [], m = []; for (c in a) n(a[c], g, b); for (e = g.length, d = 0; e > d; d++) i += Math.sqrt(g[d]), f = d % b, m[f] = i, f === k && (j += i, f = d / b >> 0, l[f] = m, h[f] = j, i = 0, m = []); return { length: j, lengths: h, segments: l } }, p = _gsScope._gsDefine.plugin({ propName: "bezier", priority: -1, version: "1.3.9", API: 2, global: !0, init: function(a, b, c) { this._target = a, b instanceof Array && (b = { values: b }), this._func = {}, this._mod = {}, this._props = [], this._timeRes = null == b.timeResolution ? 6 : parseInt(b.timeResolution, 10); var d, e, f, g, h, i = b.values || [], j = {}, k = i[0], n = b.autoRotate || c.vars.orientToBezier; this._autoRotate = n ? n instanceof Array ? n : [ ["x", "y", "rotation", n === !0 ? 0 : Number(n) || 0] ] : null; for (d in k) this._props.push(d); for (f = this._props.length; --f > -1;) d = this._props[f], this._overwriteProps.push(d), e = this._func[d] = "function" == typeof a[d], j[d] = e ? a[d.indexOf("set") || "function" != typeof a["get" + d.substr(3)] ? d : "get" + d.substr(3)]() : parseFloat(a[d]), h || j[d] !== i[0][d] && (h = j); if (this._beziers = "cubic" !== b.type && "quadratic" !== b.type && "soft" !== b.type ? l(i, isNaN(b.curviness) ? 1 : b.curviness, !1, "thruBasic" === b.type, b.correlate, h) : m(i, b.type, j), this._segCount = this._beziers[d].length, this._timeRes) { var p = o(this._beziers, this._timeRes); this._length = p.length, this._lengths = p.lengths, this._segments = p.segments, this._l1 = this._li = this._s1 = this._si = 0, this._l2 = this._lengths[0], this._curSeg = this._segments[0], this._s2 = this._curSeg[0], this._prec = 1 / this._curSeg.length } if (n = this._autoRotate) for (this._initialRotations = [], n[0] instanceof Array || (this._autoRotate = n = [n]), f = n.length; --f > -1;) { for (g = 0; 3 > g; g++) d = n[f][g], this._func[d] = "function" == typeof a[d] ? a[d.indexOf("set") || "function" != typeof a["get" + d.substr(3)] ? d : "get" + d.substr(3)] : !1; d = n[f][2], this._initialRotations[f] = (this._func[d] ? this._func[d].call(this._target) : this._target[d]) || 0, this._overwriteProps.push(d) } return this._startRatio = c.vars.runBackwards ? 1 : 0, !0 }, set: function(b) { var c, d, e, f, g, h, i, j, k, l, m, n = this._segCount, o = this._func, p = this._target, q = b !== this._startRatio; if (this._timeRes) { if (k = this._lengths, l = this._curSeg, m = b * this._length, e = this._li, m > this._l2 && n - 1 > e) { for (j = n - 1; j > e && (this._l2 = k[++e]) <= m;); this._l1 = k[e - 1], this._li = e, this._curSeg = l = this._segments[e], this._s2 = l[this._s1 = this._si = 0] } else if (m < this._l1 && e > 0) { for (; e > 0 && (this._l1 = k[--e]) >= m;); 0 === e && m < this._l1 ? this._l1 = 0 : e++, this._l2 = k[e], this._li = e, this._curSeg = l = this._segments[e], this._s1 = l[(this._si = l.length - 1) - 1] || 0, this._s2 = l[this._si] } if (c = e, m -= this._l1, e = this._si, m > this._s2 && e < l.length - 1) { for (j = l.length - 1; j > e && (this._s2 = l[++e]) <= m;); this._s1 = l[e - 1], this._si = e } else if (m < this._s1 && e > 0) { for (; e > 0 && (this._s1 = l[--e]) >= m;); 0 === e && m < this._s1 ? this._s1 = 0 : e++, this._s2 = l[e], this._si = e } h = 1 === b ? 1 : (e + (m - this._s1) / (this._s2 - this._s1)) * this._prec || 0 } else c = 0 > b ? 0 : b >= 1 ? n - 1 : n * b >> 0, h = (b - c * (1 / n)) * n; for (d = 1 - h, e = this._props.length; --e > -1;) f = this._props[e], g = this._beziers[f][c], i = (h * h * g.da + 3 * d * (h * g.ca + d * g.ba)) * h + g.a, this._mod[f] && (i = this._mod[f](i, p)), o[f] ? p[f](i) : p[f] = i; if (this._autoRotate) { var r, s, t, u, v, w, x, y = this._autoRotate; for (e = y.length; --e > -1;) f = y[e][2], w = y[e][3] || 0, x = y[e][4] === !0 ? 1 : a, g = this._beziers[y[e][0]], r = this._beziers[y[e][1]], g && r && (g = g[c], r = r[c], s = g.a + (g.b - g.a) * h, u = g.b + (g.c - g.b) * h, s += (u - s) * h, u += (g.c + (g.d - g.c) * h - u) * h, t = r.a + (r.b - r.a) * h, v = r.b + (r.c - r.b) * h, t += (v - t) * h, v += (r.c + (r.d - r.c) * h - v) * h, i = q ? Math.atan2(v - t, u - s) * x + w : this._initialRotations[e], this._mod[f] && (i = this._mod[f](i, p)), o[f] ? p[f](i) : p[f] = i) } } }), q = p.prototype; p.bezierThrough = l, p.cubicToQuadratic = i, p._autoCSS = !0, p.quadraticToCubic = function(a, b, c) { return new g(a, (2 * b + a) / 3, (2 * b + c) / 3, c) }, p._cssRegister = function() { var a = f.CSSPlugin; if (a) { var b = a._internals, c = b._parseToProxy, d = b._setPluginRatio, e = b.CSSPropTween; b._registerComplexSpecialProp("bezier", { parser: function(a, b, f, g, h, i) { b instanceof Array && (b = { values: b }), i = new p; var j, k, l, m = b.values, n = m.length - 1, o = [], q = {}; if (0 > n) return h; for (j = 0; n >= j; j++) l = c(a, m[j], g, h, i, n !== j), o[j] = l.end; for (k in b) q[k] = b[k]; return q.values = o, h = new e(a, "bezier", 0, 0, l.pt, 2), h.data = l, h.plugin = i, h.setRatio = d, 0 === q.autoRotate && (q.autoRotate = !0), !q.autoRotate || q.autoRotate instanceof Array || (j = q.autoRotate === !0 ? 0 : Number(q.autoRotate), q.autoRotate = null != l.end.left ? [ ["left", "top", "rotation", j, !1] ] : null != l.end.x ? [ ["x", "y", "rotation", j, !1] ] : !1), q.autoRotate && (g._transform || g._enableTransforms(!1), l.autoRotate = g._target._gsTransform, l.proxy.rotation = l.autoRotate.rotation || 0, g._overwriteProps.push("rotation")), i._onInitTween(l.proxy, q, g._tween), h } }) } }, q._mod = function(a) { for (var b, c = this._overwriteProps, d = c.length; --d > -1;) b = a[c[d]], b && "function" == typeof b && (this._mod[c[d]] = b) }, q._kill = function(a) { var b, c, d = this._props; for (b in this._beziers) if (b in a) for (delete this._beziers[b], delete this._func[b], c = d.length; --c > -1;) d[c] === b && d.splice(c, 1); if (d = this._autoRotate) for (c = d.length; --c > -1;) a[d[c][2]] && d.splice(c, 1); return this._super._kill.call(this, a) } }(), _gsScope._gsDefine("plugins.CSSPlugin", ["plugins.TweenPlugin", "TweenLite"], function(a, b) { var c, d, e, f, g = function() { a.call(this, "css"), this._overwriteProps.length = 0, this.setRatio = g.prototype.setRatio }, h = _gsScope._gsDefine.globals, i = {}, j = g.prototype = new a("css"); j.constructor = g, g.version = "2.1.3", g.API = 2, g.defaultTransformPerspective = 0, g.defaultSkewType = "compensated", g.defaultSmoothOrigin = !0, j = "px", g.suffixMap = { top: j, right: j, bottom: j, left: j, width: j, height: j, fontSize: j, padding: j, margin: j, perspective: j, lineHeight: "" }; var k, l, m, n, o, p, q, r, s = /(?:\-|\.|\b)(\d|\.|e\-)+/g, t = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g, u = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi, v = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b),?/gi, w = /(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g, x = /(?:\d|\-|\+|=|#|\.)*/g, y = /opacity *= *([^)]*)/i, z = /opacity:([^;]*)/i, A = /alpha\(opacity *=.+?\)/i, B = /^(rgb|hsl)/, C = /([A-Z])/g, D = /-([a-z])/gi, E = /(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi, F = function(a, b) { return b.toUpperCase() }, G = /(?:Left|Right|Width)/i, H = /(M11|M12|M21|M22)=[\d\-\.e]+/gi, I = /progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i, J = /,(?=[^\)]*(?:\(|$))/gi, K = /[\s,\(]/i, L = Math.PI / 180, M = 180 / Math.PI, N = {}, O = { style: {} }, P = _gsScope.document || { createElement: function() { return O } }, Q = function(a, b) { var c = P.createElementNS ? P.createElementNS(b || "http://www.w3.org/1999/xhtml", a) : P.createElement(a); return c.style ? c : P.createElement(a) }, R = Q("div"), S = Q("img"), T = g._internals = { _specialProps: i }, U = (_gsScope.navigator || {}).userAgent || "", V = function() { var a = U.indexOf("Android"), b = Q("a"); return m = -1 !== U.indexOf("Safari") && -1 === U.indexOf("Chrome") && (-1 === a || parseFloat(U.substr(a + 8, 2)) > 3), o = m && parseFloat(U.substr(U.indexOf("Version/") + 8, 2)) < 6, n = -1 !== U.indexOf("Firefox"), (/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(U) || /Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(U)) && (p = parseFloat(RegExp.$1)), b ? (b.style.cssText = "top:1px;opacity:.55;", /^0.55/.test(b.style.opacity)) : !1 }(), W = function(a) { return y.test("string" == typeof a ? a : (a.currentStyle ? a.currentStyle.filter : a.style.filter) || "") ? parseFloat(RegExp.$1) / 100 : 1 }, X = function(a) { _gsScope.console && console.log(a) }, Y = "", Z = "", $ = function(a, b) { b = b || R; var c, d, e = b.style; if (void 0 !== e[a]) return a; for (a = a.charAt(0).toUpperCase() + a.substr(1), c = ["O", "Moz", "ms", "Ms", "Webkit"], d = 5; --d > -1 && void 0 === e[c[d] + a];); return d >= 0 ? (Z = 3 === d ? "ms" : c[d], Y = "-" + Z.toLowerCase() + "-", Z + a) : null }, _ = "undefined" != typeof window ? window : P.defaultView || { getComputedStyle: function() {} }, aa = function(a) { return _.getComputedStyle(a) }, ba = g.getStyle = function(a, b, c, d, e) { var f; return V || "opacity" !== b ? (!d && a.style[b] ? f = a.style[b] : (c = c || aa(a)) ? f = c[b] || c.getPropertyValue(b) || c.getPropertyValue(b.replace(C, "-$1").toLowerCase()) : a.currentStyle && (f = a.currentStyle[b]), null == e || f && "none" !== f && "auto" !== f && "auto auto" !== f ? f : e) : W(a) }, ca = T.convertToPixels = function(a, c, d, e, f) { if ("px" === e || !e && "lineHeight" !== c) return d; if ("auto" === e || !d) return 0; var h, i, j, k = G.test(c), l = a, m = R.style, n = 0 > d, o = 1 === d; if (n && (d = -d), o && (d *= 100), "lineHeight" !== c || e) if ("%" === e && -1 !== c.indexOf("border")) h = d / 100 * (k ? a.clientWidth : a.clientHeight); else { if (m.cssText = "border:0 solid red;position:" + ba(a, "position") + ";line-height:0;", "%" !== e && l.appendChild && "v" !== e.charAt(0) && "rem" !== e) m[k ? "borderLeftWidth" : "borderTopWidth"] = d + e; else { if (l = a.parentNode || P.body, -1 !== ba(l, "display").indexOf("flex") && (m.position = "absolute"), i = l._gsCache, j = b.ticker.frame, i && k && i.time === j) return i.width * d / 100; m[k ? "width" : "height"] = d + e } l.appendChild(R), h = parseFloat(R[k ? "offsetWidth" : "offsetHeight"]), l.removeChild(R), k && "%" === e && g.cacheWidths !== !1 && (i = l._gsCache = l._gsCache || {}, i.time = j, i.width = h / d * 100), 0 !== h || f || (h = ca(a, c, d, e, !0)) } else i = aa(a).lineHeight, a.style.lineHeight = d, h = parseFloat(aa(a).lineHeight), a.style.lineHeight = i; return o && (h /= 100), n ? -h : h }, da = T.calculateOffset = function(a, b, c) { if ("absolute" !== ba(a, "position", c)) return 0; var d = "left" === b ? "Left" : "Top", e = ba(a, "margin" + d, c); return a["offset" + d] - (ca(a, b, parseFloat(e), e.replace(x, "")) || 0) }, ea = function(a, b) { var c, d, e, f = {}; if (b = b || aa(a, null)) if (c = b.length) for (; --c > -1;) e = b[c], (-1 === e.indexOf("-transform") || Fa === e) && (f[e.replace(D, F)] = b.getPropertyValue(e)); else for (c in b)(-1 === c.indexOf("Transform") || Ea === c) && (f[c] = b[c]); else if (b = a.currentStyle || a.style) for (c in b) "string" == typeof c && void 0 === f[c] && (f[c.replace(D, F)] = b[c]); return V || (f.opacity = W(a)), d = Ta(a, b, !1), f.rotation = d.rotation, f.skewX = d.skewX, f.scaleX = d.scaleX, f.scaleY = d.scaleY, f.x = d.x, f.y = d.y, Ha && (f.z = d.z, f.rotationX = d.rotationX, f.rotationY = d.rotationY, f.scaleZ = d.scaleZ), f.filters && delete f.filters, f }, fa = function(a, b, c, d, e) { var f, g, h, i = {}, j = a.style; for (g in c) "cssText" !== g && "length" !== g && isNaN(g) && (b[g] !== (f = c[g]) || e && e[g]) && -1 === g.indexOf("Origin") && ("number" == typeof f || "string" == typeof f) && (i[g] = "auto" !== f || "left" !== g && "top" !== g ? "" !== f && "auto" !== f && "none" !== f || "string" != typeof b[g] || "" === b[g].replace(w, "") ? f : 0 : da(a, g), void 0 !== j[g] && (h = new ua(j, g, j[g], h))); if (d) for (g in d) "className" !== g && (i[g] = d[g]); return { difs: i, firstMPT: h } }, ga = { width: ["Left", "Right"], height: ["Top", "Bottom"] }, ha = ["marginLeft", "marginRight", "marginTop", "marginBottom"], ia = function(a, b, c) { if ("svg" === (a.nodeName + "").toLowerCase()) return (c || aa(a))[b] || 0; if (a.getCTM && Qa(a)) return a.getBBox()[b] || 0; var d = parseFloat("width" === b ? a.offsetWidth : a.offsetHeight), e = ga[b], f = e.length; for (c = c || aa(a, null); --f > -1;) d -= parseFloat(ba(a, "padding" + e[f], c, !0)) || 0, d -= parseFloat(ba(a, "border" + e[f] + "Width", c, !0)) || 0; return d }, ja = function(a, b) { if ("contain" === a || "auto" === a || "auto auto" === a) return a + " "; (null == a || "" === a) && (a = "0 0"); var c, d = a.split(" "), e = -1 !== a.indexOf("left") ? "0%" : -1 !== a.indexOf("right") ? "100%" : d[0], f = -1 !== a.indexOf("top") ? "0%" : -1 !== a.indexOf("bottom") ? "100%" : d[1]; if (d.length > 3 && !b) { for (d = a.split(", ").join(",").split(","), a = [], c = 0; c < d.length; c++) a.push(ja(d[c])); return a.join(",") } return null == f ? f = "center" === e ? "50%" : "0" : "center" === f && (f = "50%"), ("center" === e || isNaN(parseFloat(e)) && -1 === (e + "").indexOf("=")) && (e = "50%"), a = e + " " + f + (d.length > 2 ? " " + d[2] : ""), b && (b.oxp = -1 !== e.indexOf("%"), b.oyp = -1 !== f.indexOf("%"), b.oxr = "=" === e.charAt(1), b.oyr = "=" === f.charAt(1), b.ox = parseFloat(e.replace(w, "")), b.oy = parseFloat(f.replace(w, "")), b.v = a), b || a }, ka = function(a, b) { return "function" == typeof a && (a = a(r, q)), "string" == typeof a && "=" === a.charAt(1) ? parseInt(a.charAt(0) + "1", 10) * parseFloat(a.substr(2)) : parseFloat(a) - parseFloat(b) || 0 }, la = function(a, b) { "function" == typeof a && (a = a(r, q)); var c = "string" == typeof a && "=" === a.charAt(1); return "string" == typeof a && "v" === a.charAt(a.length - 2) && (a = (c ? a.substr(0, 2) : 0) + window["inner" + ("vh" === a.substr(-2) ? "Height" : "Width")] * (parseFloat(c ? a.substr(2) : a) / 100)), null == a ? b : c ? parseInt(a.charAt(0) + "1", 10) * parseFloat(a.substr(2)) + b : parseFloat(a) || 0 }, ma = function(a, b, c, d) { var e, f, g, h, i, j = 1e-6; return "function" == typeof a && (a = a(r, q)), null == a ? h = b : "number" == typeof a ? h = a : (e = 360, f = a.split("_"), i = "=" === a.charAt(1), g = (i ? parseInt(a.charAt(0) + "1", 10) * parseFloat(f[0].substr(2)) : parseFloat(f[0])) * (-1 === a.indexOf("rad") ? 1 : M) - (i ? 0 : b), f.length && (d && (d[c] = b + g), -1 !== a.indexOf("short") && (g %= e, g !== g % (e / 2) && (g = 0 > g ? g + e : g - e)), -1 !== a.indexOf("_cw") && 0 > g ? g = (g + 9999999999 * e) % e - (g / e | 0) * e : -1 !== a.indexOf("ccw") && g > 0 && (g = (g - 9999999999 * e) % e - (g / e | 0) * e)), h = b + g), j > h && h > -j && (h = 0), h }, na = { aqua: [0, 255, 255], lime: [0, 255, 0], silver: [192, 192, 192], black: [0, 0, 0], maroon: [128, 0, 0], teal: [0, 128, 128], blue: [0, 0, 255], navy: [0, 0, 128], white: [255, 255, 255], fuchsia: [255, 0, 255], olive: [128, 128, 0], yellow: [255, 255, 0], orange: [255, 165, 0], gray: [128, 128, 128], purple: [128, 0, 128], green: [0, 128, 0], red: [255, 0, 0], pink: [255, 192, 203], cyan: [0, 255, 255], transparent: [255, 255, 255, 0] }, oa = function(a, b, c) { return a = 0 > a ? a + 1 : a > 1 ? a - 1 : a, 255 * (1 > 6 * a ? b + (c - b) * a * 6 : .5 > a ? c : 2 > 3 * a ? b + (c - b) * (2 / 3 - a) * 6 : b) + .5 | 0 }, pa = g.parseColor = function(a, b) { var c, d, e, f, g, h, i, j, k, l, m; if (a) if ("number" == typeof a) c = [a >> 16, a >> 8 & 255, 255 & a]; else { if ("," === a.charAt(a.length - 1) && (a = a.substr(0, a.length - 1)), na[a]) c = na[a]; else if ("#" === a.charAt(0)) 4 === a.length && (d = a.charAt(1), e = a.charAt(2), f = a.charAt(3), a = "#" + d + d + e + e + f + f), a = parseInt(a.substr(1), 16), c = [a >> 16, a >> 8 & 255, 255 & a]; else if ("hsl" === a.substr(0, 3)) if (c = m = a.match(s), b) { if (-1 !== a.indexOf("=")) return a.match(t) } else g = Number(c[0]) % 360 / 360, h = Number(c[1]) / 100, i = Number(c[2]) / 100, e = .5 >= i ? i * (h + 1) : i + h - i * h, d = 2 * i - e, c.length > 3 && (c[3] = Number(c[3])), c[0] = oa(g + 1 / 3, d, e), c[1] = oa(g, d, e), c[2] = oa(g - 1 / 3, d, e); else c = a.match(s) || na.transparent; c[0] = Number(c[0]), c[1] = Number(c[1]), c[2] = Number(c[2]), c.length > 3 && (c[3] = Number(c[3])) } else c = na.black; return b && !m && (d = c[0] / 255, e = c[1] / 255, f = c[2] / 255, j = Math.max(d, e, f), k = Math.min(d, e, f), i = (j + k) / 2, j === k ? g = h = 0 : (l = j - k, h = i > .5 ? l / (2 - j - k) : l / (j + k), g = j === d ? (e - f) / l + (f > e ? 6 : 0) : j === e ? (f - d) / l + 2 : (d - e) / l + 4, g *= 60), c[0] = g + .5 | 0, c[1] = 100 * h + .5 | 0, c[2] = 100 * i + .5 | 0), c }, qa = function(a, b) { var c, d, e, f = a.match(ra) || [], g = 0, h = ""; if (!f.length) return a; for (c = 0; c < f.length; c++) d = f[c], e = a.substr(g, a.indexOf(d, g) - g), g += e.length + d.length, d = pa(d, b), 3 === d.length && d.push(1), h += e + (b ? "hsla(" + d[0] + "," + d[1] + "%," + d[2] + "%," + d[3] : "rgba(" + d.join(",")) + ")"; return h + a.substr(g) }, ra = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b"; for (j in na) ra += "|" + j + "\\b"; ra = new RegExp(ra + ")", "gi"), g.colorStringFilter = function(a) { var b, c = a[0] + " " + a[1]; ra.test(c) && (b = -1 !== c.indexOf("hsl(") || -1 !== c.indexOf("hsla("), a[0] = qa(a[0], b), a[1] = qa(a[1], b)), ra.lastIndex = 0 }, b.defaultStringFilter || (b.defaultStringFilter = g.colorStringFilter); var sa = function(a, b, c, d) { if (null == a) return function(a) { return a }; var e, f = b ? (a.match(ra) || [""])[0] : "", g = a.split(f).join("").match(u) || [], h = a.substr(0, a.indexOf(g[0])), i = ")" === a.charAt(a.length - 1) ? ")" : "", j = -1 !== a.indexOf(" ") ? " " : ",", k = g.length, l = k > 0 ? g[0].replace(s, "") : ""; return k ? e = b ? function(a) { var b, m, n, o; if ("number" == typeof a) a += l; else if (d && J.test(a)) { for (o = a.replace(J, "|").split("|"), n = 0; n < o.length; n++) o[n] = e(o[n]); return o.join(",") } if (b = (a.match(ra) || [f])[0], m = a.split(b).join("").match(u) || [], n = m.length, k > n--) for (; ++n < k;) m[n] = c ? m[(n - 1) / 2 | 0] : g[n]; return h + m.join(j) + j + b + i + (-1 !== a.indexOf("inset") ? " inset" : "") } : function(a) { var b, f, m; if ("number" == typeof a) a += l; else if (d && J.test(a)) { for (f = a.replace(J, "|").split("|"), m = 0; m < f.length; m++) f[m] = e(f[m]); return f.join(",") } if (b = a.match("," === j ? u : v) || [], m = b.length, k > m--) for (; ++m < k;) b[m] = c ? b[(m - 1) / 2 | 0] : g[m]; return (h && "none" !== a ? a.substr(0, a.indexOf(b[0])) || h : h) + b.join(j) + i } : function(a) { return a } }, ta = function(a) { return a = a.split(","), function(b, c, d, e, f, g, h) { var i, j = (c + "").split(" "); for (h = {}, i = 0; 4 > i; i++) h[a[i]] = j[i] = j[i] || j[(i - 1) / 2 >> 0]; return e.parse(b, h, f, g) } }, ua = (T._setPluginRatio = function(a) { this.plugin.setRatio(a); for (var b, c, d, e, f, g = this.data, h = g.proxy, i = g.firstMPT, j = 1e-6; i;) b = h[i.v], i.r ? b = i.r(b) : j > b && b > -j && (b = 0), i.t[i.p] = b, i = i._next; if (g.autoRotate && (g.autoRotate.rotation = g.mod ? g.mod.call(this._tween, h.rotation, this.t, this._tween) : h.rotation), 1 === a || 0 === a) for (i = g.firstMPT, f = 1 === a ? "e" : "b"; i;) { if (c = i.t, c.type) { if (1 === c.type) { for (e = c.xs0 + c.s + c.xs1, d = 1; d < c.l; d++) e += c["xn" + d] + c["xs" + (d + 1)]; c[f] = e } } else c[f] = c.s + c.xs0; i = i._next } }, function(a, b, c, d, e) { this.t = a, this.p = b, this.v = c, this.r = e, d && (d._prev = this, this._next = d) }), va = (T._parseToProxy = function(a, b, c, d, e, f) { var g, h, i, j, k, l = d, m = {}, n = {}, o = c._transform, p = N; for (c._transform = null, N = b, d = k = c.parse(a, b, d, e), N = p, f && (c._transform = o, l && (l._prev = null, l._prev && (l._prev._next = null))); d && d !== l;) { if (d.type <= 1 && (h = d.p, n[h] = d.s + d.c, m[h] = d.s, f || (j = new ua(d, "s", h, j, d.r), d.c = 0), 1 === d.type)) for (g = d.l; --g > 0;) i = "xn" + g, h = d.p + "_" + i, n[h] = d.data[i], m[h] = d[i], f || (j = new ua(d, i, h, j, d.rxp[i])); d = d._next } return { proxy: m, end: n, firstMPT: j, pt: k } }, T.CSSPropTween = function(a, b, d, e, g, h, i, j, k, l, m) { this.t = a, this.p = b, this.s = d, this.c = e, this.n = i || b, a instanceof va || f.push(this.n), this.r = j ? "function" == typeof j ? j : Math.round : j, this.type = h || 0, k && (this.pr = k, c = !0), this.b = void 0 === l ? d : l, this.e = void 0 === m ? d + e : m, g && (this._next = g, g._prev = this) }), wa = function(a, b, c, d, e, f) { var g = new va(a, b, c, d - c, e, -1, f); return g.b = c, g.e = g.xs0 = d, g }, xa = g.parseComplex = function(a, b, c, d, e, f, h, i, j, l) { c = c || f || "", "function" == typeof d && (d = d(r, q)), h = new va(a, b, 0, 0, h, l ? 2 : 1, null, !1, i, c, d), d += "", e && ra.test(d + c) && (d = [c, d], g.colorStringFilter(d), c = d[0], d = d[1]); var m, n, o, p, u, v, w, x, y, z, A, B, C, D = c.split(", ").join(",").split(" "), E = d.split(", ").join(",").split(" "), F = D.length, G = k !== !1; for ((-1 !== d.indexOf(",") || -1 !== c.indexOf(",")) && (-1 !== (d + c).indexOf("rgb") || -1 !== (d + c).indexOf("hsl") ? (D = D.join(" ").replace(J, ", ").split(" "), E = E.join(" ").replace(J, ", ").split(" ")) : (D = D.join(" ").split(",").join(", ").split(" "), E = E.join(" ").split(",").join(", ").split(" ")), F = D.length), F !== E.length && (D = (f || "").split(" "), F = D.length), h.plugin = j, h.setRatio = l, ra.lastIndex = 0, m = 0; F > m; m++) if (p = D[m], u = E[m] + "", x = parseFloat(p), x || 0 === x) h.appendXtra("", x, ka(u, x), u.replace(t, ""), G && -1 !== u.indexOf("px") ? Math.round : !1, !0); else if (e && ra.test(p)) B = u.indexOf(")") + 1, B = ")" + (B ? u.substr(B) : ""), C = -1 !== u.indexOf("hsl") && V, z = u, p = pa(p, C), u = pa(u, C), y = p.length + u.length > 6, y && !V && 0 === u[3] ? (h["xs" + h.l] += h.l ? " transparent" : "transparent", h.e = h.e.split(E[m]).join("transparent")) : (V || (y = !1), C ? h.appendXtra(z.substr(0, z.indexOf("hsl")) + (y ? "hsla(" : "hsl("), p[0], ka(u[0], p[0]), ",", !1, !0).appendXtra("", p[1], ka(u[1], p[1]), "%,", !1).appendXtra("", p[2], ka(u[2], p[2]), y ? "%," : "%" + B, !1) : h.appendXtra(z.substr(0, z.indexOf("rgb")) + (y ? "rgba(" : "rgb("), p[0], u[0] - p[0], ",", Math.round, !0).appendXtra("", p[1], u[1] - p[1], ",", Math.round).appendXtra("", p[2], u[2] - p[2], y ? "," : B, Math.round), y && (p = p.length < 4 ? 1 : p[3], h.appendXtra("", p, (u.length < 4 ? 1 : u[3]) - p, B, !1))), ra.lastIndex = 0; else if (v = p.match(s)) { if (w = u.match(t), !w || w.length !== v.length) return h; for (o = 0, n = 0; n < v.length; n++) A = v[n], z = p.indexOf(A, o), h.appendXtra(p.substr(o, z - o), Number(A), ka(w[n], A), "", G && "px" === p.substr(z + A.length, 2) ? Math.round : !1, 0 === n), o = z + A.length; h["xs" + h.l] += p.substr(o) } else h["xs" + h.l] += h.l || h["xs" + h.l] ? " " + u : u; if (-1 !== d.indexOf("=") && h.data) { for (B = h.xs0 + h.data.s, m = 1; m < h.l; m++) B += h["xs" + m] + h.data["xn" + m]; h.e = B + h["xs" + m] } return h.l || (h.type = -1, h.xs0 = h.e), h.xfirst || h }, ya = 9; for (j = va.prototype, j.l = j.pr = 0; --ya > 0;) j["xn" + ya] = 0, j["xs" + ya] = ""; j.xs0 = "", j._next = j._prev = j.xfirst = j.data = j.plugin = j.setRatio = j.rxp = null, j.appendXtra = function(a, b, c, d, e, f) { var g = this, h = g.l; return g["xs" + h] += f && (h || g["xs" + h]) ? " " + a : a || "", c || 0 === h || g.plugin ? (g.l++, g.type = g.setRatio ? 2 : 1, g["xs" + g.l] = d || "", h > 0 ? (g.data["xn" + h] = b + c, g.rxp["xn" + h] = e, g["xn" + h] = b, g.plugin || (g.xfirst = new va(g, "xn" + h, b, c, g.xfirst || g, 0, g.n, e, g.pr), g.xfirst.xs0 = 0), g) : (g.data = { s: b + c }, g.rxp = {}, g.s = b, g.c = c, g.r = e, g)) : (g["xs" + h] += b + (d || ""), g) }; var za = function(a, b) { b = b || {}, this.p = b.prefix ? $(a) || a : a, i[a] = i[this.p] = this, this.format = b.formatter || sa(b.defaultValue, b.color, b.collapsible, b.multi), b.parser && (this.parse = b.parser), this.clrs = b.color, this.multi = b.multi, this.keyword = b.keyword, this.dflt = b.defaultValue, this.allowFunc = b.allowFunc, this.pr = b.priority || 0 }, Aa = T._registerComplexSpecialProp = function(a, b, c) { "object" != typeof b && (b = { parser: c }); var d, e, f = a.split(","), g = b.defaultValue; for (c = c || [g], d = 0; d < f.length; d++) b.prefix = 0 === d && b.prefix, b.defaultValue = c[d] || g, e = new za(f[d], b) }, Ba = T._registerPluginProp = function(a) { if (!i[a]) { var b = a.charAt(0).toUpperCase() + a.substr(1) + "Plugin"; Aa(a, { parser: function(a, c, d, e, f, g, j) { var k = h.com.greensock.plugins[b]; return k ? (k._cssRegister(), i[d].parse(a, c, d, e, f, g, j)) : (X("Error: " + b + " js file not loaded."), f) } }) } }; j = za.prototype, j.parseComplex = function(a, b, c, d, e, f) { var g, h, i, j, k, l, m = this.keyword; if (this.multi && (J.test(c) || J.test(b) ? (h = b.replace(J, "|").split("|"), i = c.replace(J, "|").split("|")) : m && (h = [b], i = [c])), i) { for (j = i.length > h.length ? i.length : h.length, g = 0; j > g; g++) b = h[g] = h[g] || this.dflt, c = i[g] = i[g] || this.dflt, m && (k = b.indexOf(m), l = c.indexOf(m), k !== l && (-1 === l ? h[g] = h[g].split(m).join("") : -1 === k && (h[g] += " " + m))); b = h.join(", "), c = i.join(", ") } return xa(a, this.p, b, c, this.clrs, this.dflt, d, this.pr, e, f) }, j.parse = function(a, b, c, d, f, g, h) { return this.parseComplex(a.style, this.format(ba(a, this.p, e, !1, this.dflt)), this.format(b), f, g) }, g.registerSpecialProp = function(a, b, c) { Aa(a, { parser: function(a, d, e, f, g, h, i) { var j = new va(a, e, 0, 0, g, 2, e, !1, c); return j.plugin = h, j.setRatio = b(a, d, f._tween, e), j }, priority: c }) }, g.useSVGTransformAttr = !0; var Ca, Da = "scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent".split(","), Ea = $("transform"), Fa = Y + "transform", Ga = $("transformOrigin"), Ha = null !== $("perspective"), Ia = T.Transform = function() { this.perspective = parseFloat(g.defaultTransformPerspective) || 0, this.force3D = g.defaultForce3D !== !1 && Ha ? g.defaultForce3D || "auto" : !1 }, Ja = _gsScope.SVGElement, Ka = function(a, b, c) { var d, e = P.createElementNS("http://www.w3.org/2000/svg", a), f = /([a-z])([A-Z])/g; for (d in c) e.setAttributeNS(null, d.replace(f, "$1-$2").toLowerCase(), c[d]); return b.appendChild(e), e }, La = P.documentElement || {}, Ma = function() { var a, b, c, d = p || /Android/i.test(U) && !_gsScope.chrome; return P.createElementNS && La.appendChild && !d && (a = Ka("svg", La), b = Ka("rect", a, { width: 100, height: 50, x: 100 }), c = b.getBoundingClientRect().width, b.style[Ga] = "50% 50%", b.style[Ea] = "scaleX(0.5)", d = c === b.getBoundingClientRect().width && !(n && Ha), La.removeChild(a)), d }(), Na = function(a, b, c, d, e, f) { var h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = a._gsTransform, w = Sa(a, !0); v && (t = v.xOrigin, u = v.yOrigin), (!d || (h = d.split(" ")).length < 2) && (n = a.getBBox(), 0 === n.x && 0 === n.y && n.width + n.height === 0 && (n = { x: parseFloat(a.hasAttribute("x") ? a.getAttribute("x") : a.hasAttribute("cx") ? a.getAttribute("cx") : 0) || 0, y: parseFloat(a.hasAttribute("y") ? a.getAttribute("y") : a.hasAttribute("cy") ? a.getAttribute("cy") : 0) || 0, width: 0, height: 0 }), b = ja(b).split(" "), h = [(-1 !== b[0].indexOf("%") ? parseFloat(b[0]) / 100 * n.width : parseFloat(b[0])) + n.x, (-1 !== b[1].indexOf("%") ? parseFloat(b[1]) / 100 * n.height : parseFloat(b[1])) + n.y]), c.xOrigin = k = parseFloat(h[0]), c.yOrigin = l = parseFloat(h[1]), d && w !== Ra && (m = w[0], n = w[1], o = w[2], p = w[3], q = w[4], r = w[5], s = m * p - n * o, s && (i = k * (p / s) + l * (-o / s) + (o * r - p * q) / s, j = k * (-n / s) + l * (m / s) - (m * r - n * q) / s, k = c.xOrigin = h[0] = i, l = c.yOrigin = h[1] = j)), v && (f && (c.xOffset = v.xOffset, c.yOffset = v.yOffset, v = c), e || e !== !1 && g.defaultSmoothOrigin !== !1 ? (i = k - t, j = l - u, v.xOffset += i * w[0] + j * w[2] - i, v.yOffset += i * w[1] + j * w[3] - j) : v.xOffset = v.yOffset = 0), f || a.setAttribute("data-svg-origin", h.join(" ")) }, Oa = function(a) { var b, c = Q("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"), d = this.parentNode, e = this.nextSibling, f = this.style.cssText; if (La.appendChild(c), c.appendChild(this), this.style.display = "block", a) try { b = this.getBBox(), this._originalGetBBox = this.getBBox, this.getBBox = Oa } catch (g) {} else this._originalGetBBox && (b = this._originalGetBBox()); return e ? d.insertBefore(this, e) : d.appendChild(this), La.removeChild(c), this.style.cssText = f, b }, Pa = function(a) { try { return a.getBBox() } catch (b) { return Oa.call(a, !0) } }, Qa = function(a) { return !(!Ja || !a.getCTM || a.parentNode && !a.ownerSVGElement || !Pa(a)) }, Ra = [1, 0, 0, 1, 0, 0], Sa = function(a, b) { var c, d, e, f, g, h, i, j = a._gsTransform || new Ia, k = 1e5, l = a.style; if (Ea ? d = ba(a, Fa, null, !0) : a.currentStyle && (d = a.currentStyle.filter.match(H), d = d && 4 === d.length ? [d[0].substr(4), Number(d[2].substr(4)), Number(d[1].substr(4)), d[3].substr(4), j.x || 0, j.y || 0].join(",") : ""), c = !d || "none" === d || "matrix(1, 0, 0, 1, 0, 0)" === d, Ea && c && !a.offsetParent && a !== La && (f = l.display, l.display = "block", i = a.parentNode, i && a.offsetParent || (g = 1, h = a.nextSibling, La.appendChild(a)), d = ba(a, Fa, null, !0), c = !d || "none" === d || "matrix(1, 0, 0, 1, 0, 0)" === d, f ? l.display = f : Xa(l, "display"), g && (h ? i.insertBefore(a, h) : i ? i.appendChild(a) : La.removeChild(a))), (j.svg || a.getCTM && Qa(a)) && (c && -1 !== (l[Ea] + "").indexOf("matrix") && (d = l[Ea], c = 0), e = a.getAttribute("transform"), c && e && (e = a.transform.baseVal.consolidate().matrix, d = "matrix(" + e.a + "," + e.b + "," + e.c + "," + e.d + "," + e.e + "," + e.f + ")", c = 0)), c) return Ra; for (e = (d || "").match(s) || [], ya = e.length; --ya > -1;) f = Number(e[ya]), e[ya] = (g = f - (f |= 0)) ? (g * k + (0 > g ? -.5 : .5) | 0) / k + f : f; return b && e.length > 6 ? [e[0], e[1], e[4], e[5], e[12], e[13]] : e }, Ta = T.getTransform = function(a, c, d, e) { if (a._gsTransform && d && !e) return a._gsTransform; var f, h, i, j, k, l, m = d ? a._gsTransform || new Ia : new Ia, n = m.scaleX < 0, o = 2e-5, p = 1e5, q = Ha ? parseFloat(ba(a, Ga, c, !1, "0 0 0").split(" ")[2]) || m.zOrigin || 0 : 0, r = parseFloat(g.defaultTransformPerspective) || 0; if (m.svg = !(!a.getCTM || !Qa(a)), m.svg && (Na(a, ba(a, Ga, c, !1, "50% 50%") + "", m, a.getAttribute("data-svg-origin")), Ca = g.useSVGTransformAttr || Ma), f = Sa(a), f !== Ra) { if (16 === f.length) { var s, t, u, v, w, x = f[0], y = f[1], z = f[2], A = f[3], B = f[4], C = f[5], D = f[6], E = f[7], F = f[8], G = f[9], H = f[10], I = f[12], J = f[13], K = f[14], L = f[11], N = Math.atan2(D, H); m.zOrigin && (K = -m.zOrigin, I = F * K - f[12], J = G * K - f[13], K = H * K + m.zOrigin - f[14]), m.rotationX = N * M, N && (v = Math.cos(-N), w = Math.sin(-N), s = B * v + F * w, t = C * v + G * w, u = D * v + H * w, F = B * -w + F * v, G = C * -w + G * v, H = D * -w + H * v, L = E * -w + L * v, B = s, C = t, D = u), N = Math.atan2(-z, H), m.rotationY = N * M, N && (v = Math.cos(-N), w = Math.sin(-N), s = x * v - F * w, t = y * v - G * w, u = z * v - H * w, G = y * w + G * v, H = z * w + H * v, L = A * w + L * v, x = s, y = t, z = u), N = Math.atan2(y, x), m.rotation = N * M, N && (v = Math.cos(N), w = Math.sin(N), s = x * v + y * w, t = B * v + C * w, u = F * v + G * w, y = y * v - x * w, C = C * v - B * w, G = G * v - F * w, x = s, B = t, F = u), m.rotationX && Math.abs(m.rotationX) + Math.abs(m.rotation) > 359.9 && (m.rotationX = m.rotation = 0, m.rotationY = 180 - m.rotationY), N = Math.atan2(B, C), m.scaleX = (Math.sqrt(x * x + y * y + z * z) * p + .5 | 0) / p, m.scaleY = (Math.sqrt(C * C + D * D) * p + .5 | 0) / p, m.scaleZ = (Math.sqrt(F * F + G * G + H * H) * p + .5 | 0) / p, x /= m.scaleX, B /= m.scaleY, y /= m.scaleX, C /= m.scaleY, Math.abs(N) > o ? (m.skewX = N * M, B = 0, "simple" !== m.skewType && (m.scaleY *= 1 / Math.cos(N))) : m.skewX = 0, m.perspective = L ? 1 / (0 > L ? -L : L) : 0, m.x = I, m.y = J, m.z = K, m.svg && (m.x -= m.xOrigin - (m.xOrigin * x - m.yOrigin * B), m.y -= m.yOrigin - (m.yOrigin * y - m.xOrigin * C)) } else if (!Ha || e || !f.length || m.x !== f[4] || m.y !== f[5] || !m.rotationX && !m.rotationY) { var O = f.length >= 6, P = O ? f[0] : 1, Q = f[1] || 0, R = f[2] || 0, S = O ? f[3] : 1; m.x = f[4] || 0, m.y = f[5] || 0, i = Math.sqrt(P * P + Q * Q), j = Math.sqrt(S * S + R * R), k = P || Q ? Math.atan2(Q, P) * M : m.rotation || 0, l = R || S ? Math.atan2(R, S) * M + k : m.skewX || 0, m.scaleX = i, m.scaleY = j, m.rotation = k, m.skewX = l, Ha && (m.rotationX = m.rotationY = m.z = 0, m.perspective = r, m.scaleZ = 1), m.svg && (m.x -= m.xOrigin - (m.xOrigin * P + m.yOrigin * R), m.y -= m.yOrigin - (m.xOrigin * Q + m.yOrigin * S)) } Math.abs(m.skewX) > 90 && Math.abs(m.skewX) < 270 && (n ? (m.scaleX *= -1, m.skewX += m.rotation <= 0 ? 180 : -180, m.rotation += m.rotation <= 0 ? 180 : -180) : (m.scaleY *= -1, m.skewX += m.skewX <= 0 ? 180 : -180)), m.zOrigin = q; for (h in m) m[h] < o && m[h] > -o && (m[h] = 0) } return d && (a._gsTransform = m, m.svg && (Ca && a.style[Ea] ? b.delayedCall(.001, function() { Xa(a.style, Ea) }) : !Ca && a.getAttribute("transform") && b.delayedCall(.001, function() { a.removeAttribute("transform") }))), m }, Ua = function(a) { var b, c, d = this.data, e = -d.rotation * L, f = e + d.skewX * L, g = 1e5, h = (Math.cos(e) * d.scaleX * g | 0) / g, i = (Math.sin(e) * d.scaleX * g | 0) / g, j = (Math.sin(f) * -d.scaleY * g | 0) / g, k = (Math.cos(f) * d.scaleY * g | 0) / g, l = this.t.style, m = this.t.currentStyle; if (m) { c = i, i = -j, j = -c, b = m.filter, l.filter = ""; var n, o, q = this.t.offsetWidth, r = this.t.offsetHeight, s = "absolute" !== m.position, t = "progid:DXImageTransform.Microsoft.Matrix(M11=" + h + ", M12=" + i + ", M21=" + j + ", M22=" + k, u = d.x + q * d.xPercent / 100, v = d.y + r * d.yPercent / 100; if (null != d.ox && (n = (d.oxp ? q * d.ox * .01 : d.ox) - q / 2, o = (d.oyp ? r * d.oy * .01 : d.oy) - r / 2, u += n - (n * h + o * i), v += o - (n * j + o * k)), s ? (n = q / 2, o = r / 2, t += ", Dx=" + (n - (n * h + o * i) + u) + ", Dy=" + (o - (n * j + o * k) + v) + ")") : t += ", sizingMethod='auto expand')", -1 !== b.indexOf("DXImageTransform.Microsoft.Matrix(") ? l.filter = b.replace(I, t) : l.filter = t + " " + b, (0 === a || 1 === a) && 1 === h && 0 === i && 0 === j && 1 === k && (s && -1 === t.indexOf("Dx=0, Dy=0") || y.test(b) && 100 !== parseFloat(RegExp.$1) || -1 === b.indexOf(b.indexOf("Alpha")) && l.removeAttribute("filter")), !s) { var w, z, A, B = 8 > p ? 1 : -1; for (n = d.ieOffsetX || 0, o = d.ieOffsetY || 0, d.ieOffsetX = Math.round((q - ((0 > h ? -h : h) * q + (0 > i ? -i : i) * r)) / 2 + u), d.ieOffsetY = Math.round((r - ((0 > k ? -k : k) * r + (0 > j ? -j : j) * q)) / 2 + v), ya = 0; 4 > ya; ya++) z = ha[ya], w = m[z], c = -1 !== w.indexOf("px") ? parseFloat(w) : ca(this.t, z, parseFloat(w), w.replace(x, "")) || 0, A = c !== d[z] ? 2 > ya ? -d.ieOffsetX : -d.ieOffsetY : 2 > ya ? n - d.ieOffsetX : o - d.ieOffsetY, l[z] = (d[z] = Math.round(c - A * (0 === ya || 2 === ya ? 1 : B))) + "px" } } }, Va = T.set3DTransformRatio = T.setTransformRatio = function(a) { var b, c, d, e, f, g, h, i, j, k, l, m, o, p, q, r, s, t, u, v, w, x, y, z = this.data, A = this.t.style, B = z.rotation, C = z.rotationX, D = z.rotationY, E = z.scaleX, F = z.scaleY, G = z.scaleZ, H = z.x, I = z.y, J = z.z, K = z.svg, M = z.perspective, N = z.force3D, O = z.skewY, P = z.skewX; if (O && (P += O, B += O), ((1 === a || 0 === a) && "auto" === N && (this.tween._totalTime === this.tween._totalDuration || !this.tween._totalTime) || !N) && !J && !M && !D && !C && 1 === G || Ca && K || !Ha) return void(B || P || K ? (B *= L, x = P * L, y = 1e5, c = Math.cos(B) * E, f = Math.sin(B) * E, d = Math.sin(B - x) * -F, g = Math.cos(B - x) * F, x && "simple" === z.skewType && (b = Math.tan(x - O * L), b = Math.sqrt(1 + b * b), d *= b, g *= b, O && (b = Math.tan(O * L), b = Math.sqrt(1 + b * b), c *= b, f *= b)), K && (H += z.xOrigin - (z.xOrigin * c + z.yOrigin * d) + z.xOffset, I += z.yOrigin - (z.xOrigin * f + z.yOrigin * g) + z.yOffset, Ca && (z.xPercent || z.yPercent) && (q = this.t.getBBox(), H += .01 * z.xPercent * q.width, I += .01 * z.yPercent * q.height), q = 1e-6, q > H && H > -q && (H = 0), q > I && I > -q && (I = 0)), u = (c * y | 0) / y + "," + (f * y | 0) / y + "," + (d * y | 0) / y + "," + (g * y | 0) / y + "," + H + "," + I + ")", K && Ca ? this.t.setAttribute("transform", "matrix(" + u) : A[Ea] = (z.xPercent || z.yPercent ? "translate(" + z.xPercent + "%," + z.yPercent + "%) matrix(" : "matrix(") + u) : A[Ea] = (z.xPercent || z.yPercent ? "translate(" + z.xPercent + "%," + z.yPercent + "%) matrix(" : "matrix(") + E + ",0,0," + F + "," + H + "," + I + ")"); if (n && (q = 1e-4, q > E && E > -q && (E = G = 2e-5), q > F && F > -q && (F = G = 2e-5), !M || z.z || z.rotationX || z.rotationY || (M = 0)), B || P) B *= L, r = c = Math.cos(B), s = f = Math.sin(B), P && (B -= P * L, r = Math.cos(B), s = Math.sin(B), "simple" === z.skewType && (b = Math.tan((P - O) * L), b = Math.sqrt(1 + b * b), r *= b, s *= b, z.skewY && (b = Math.tan(O * L), b = Math.sqrt(1 + b * b), c *= b, f *= b))), d = -s, g = r; else { if (!(D || C || 1 !== G || M || K)) return void(A[Ea] = (z.xPercent || z.yPercent ? "translate(" + z.xPercent + "%," + z.yPercent + "%) translate3d(" : "translate3d(") + H + "px," + I + "px," + J + "px)" + (1 !== E || 1 !== F ? " scale(" + E + "," + F + ")" : "")); c = g = 1, d = f = 0 } k = 1, e = h = i = j = l = m = 0, o = M ? -1 / M : 0, p = z.zOrigin, q = 1e-6, v = ",", w = "0", B = D * L, B && (r = Math.cos(B), s = Math.sin(B), i = -s, l = o * -s, e = c * s, h = f * s, k = r, o *= r, c *= r, f *= r), B = C * L, B && (r = Math.cos(B), s = Math.sin(B), b = d * r + e * s, t = g * r + h * s, j = k * s, m = o * s, e = d * -s + e * r, h = g * -s + h * r, k *= r, o *= r, d = b, g = t), 1 !== G && (e *= G, h *= G, k *= G, o *= G), 1 !== F && (d *= F, g *= F, j *= F, m *= F), 1 !== E && (c *= E, f *= E, i *= E, l *= E), (p || K) && (p && (H += e * -p, I += h * -p, J += k * -p + p), K && (H += z.xOrigin - (z.xOrigin * c + z.yOrigin * d) + z.xOffset, I += z.yOrigin - (z.xOrigin * f + z.yOrigin * g) + z.yOffset), q > H && H > -q && (H = w), q > I && I > -q && (I = w), q > J && J > -q && (J = 0)), u = z.xPercent || z.yPercent ? "translate(" + z.xPercent + "%," + z.yPercent + "%) matrix3d(" : "matrix3d(", u += (q > c && c > -q ? w : c) + v + (q > f && f > -q ? w : f) + v + (q > i && i > -q ? w : i), u += v + (q > l && l > -q ? w : l) + v + (q > d && d > -q ? w : d) + v + (q > g && g > -q ? w : g), C || D || 1 !== G ? (u += v + (q > j && j > -q ? w : j) + v + (q > m && m > -q ? w : m) + v + (q > e && e > -q ? w : e), u += v + (q > h && h > -q ? w : h) + v + (q > k && k > -q ? w : k) + v + (q > o && o > -q ? w : o) + v) : u += ",0,0,0,0,1,0,", u += H + v + I + v + J + v + (M ? 1 + -J / M : 1) + ")", A[Ea] = u }; j = Ia.prototype, j.x = j.y = j.z = j.skewX = j.skewY = j.rotation = j.rotationX = j.rotationY = j.zOrigin = j.xPercent = j.yPercent = j.xOffset = j.yOffset = 0, j.scaleX = j.scaleY = j.scaleZ = 1, Aa("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin", { parser: function(a, b, c, d, f, h, i) { if (d._lastParsedTransform === i) return f; d._lastParsedTransform = i; var j = i.scale && "function" == typeof i.scale ? i.scale : 0; j && (i.scale = j(r, a)); var k, l, m, n, o, p, s, t, u, v = a._gsTransform, w = a.style, x = 1e-6, y = Da.length, z = i, A = {}, B = "transformOrigin", C = Ta(a, e, !0, z.parseTransform), D = z.transform && ("function" == typeof z.transform ? z.transform(r, q) : z.transform); if (C.skewType = z.skewType || C.skewType || g.defaultSkewType, d._transform = C, "rotationZ" in z && (z.rotation = z.rotationZ), D && "string" == typeof D && Ea) l = R.style, l[Ea] = D, l.display = "block", l.position = "absolute", -1 !== D.indexOf("%") && (l.width = ba(a, "width"), l.height = ba(a, "height")), P.body.appendChild(R), k = Ta(R, null, !1), "simple" === C.skewType && (k.scaleY *= Math.cos(k.skewX * L)), C.svg && (p = C.xOrigin, s = C.yOrigin, k.x -= C.xOffset, k.y -= C.yOffset, (z.transformOrigin || z.svgOrigin) && (D = {}, Na(a, ja(z.transformOrigin), D, z.svgOrigin, z.smoothOrigin, !0), p = D.xOrigin, s = D.yOrigin, k.x -= D.xOffset - C.xOffset, k.y -= D.yOffset - C.yOffset), (p || s) && (t = Sa(R, !0), k.x -= p - (p * t[0] + s * t[2]), k.y -= s - (p * t[1] + s * t[3]))), P.body.removeChild(R), k.perspective || (k.perspective = C.perspective), null != z.xPercent && (k.xPercent = la(z.xPercent, C.xPercent)), null != z.yPercent && (k.yPercent = la(z.yPercent, C.yPercent)); else if ("object" == typeof z) { if (k = { scaleX: la(null != z.scaleX ? z.scaleX : z.scale, C.scaleX), scaleY: la(null != z.scaleY ? z.scaleY : z.scale, C.scaleY), scaleZ: la(z.scaleZ, C.scaleZ), x: la(z.x, C.x), y: la(z.y, C.y), z: la(z.z, C.z), xPercent: la(z.xPercent, C.xPercent), yPercent: la(z.yPercent, C.yPercent), perspective: la(z.transformPerspective, C.perspective) }, o = z.directionalRotation, null != o) if ("object" == typeof o) for (l in o) z[l] = o[l]; else z.rotation = o; "string" == typeof z.x && -1 !== z.x.indexOf("%") && (k.x = 0, k.xPercent = la(z.x, C.xPercent)), "string" == typeof z.y && -1 !== z.y.indexOf("%") && (k.y = 0, k.yPercent = la(z.y, C.yPercent)), k.rotation = ma("rotation" in z ? z.rotation : "shortRotation" in z ? z.shortRotation + "_short" : C.rotation, C.rotation, "rotation", A), Ha && (k.rotationX = ma("rotationX" in z ? z.rotationX : "shortRotationX" in z ? z.shortRotationX + "_short" : C.rotationX || 0, C.rotationX, "rotationX", A), k.rotationY = ma("rotationY" in z ? z.rotationY : "shortRotationY" in z ? z.shortRotationY + "_short" : C.rotationY || 0, C.rotationY, "rotationY", A)), k.skewX = ma(z.skewX, C.skewX), k.skewY = ma(z.skewY, C.skewY) } for (Ha && null != z.force3D && (C.force3D = z.force3D, n = !0), m = C.force3D || C.z || C.rotationX || C.rotationY || k.z || k.rotationX || k.rotationY || k.perspective, m || null == z.scale || (k.scaleZ = 1); --y > -1;) u = Da[y], D = k[u] - C[u], (D > x || -x > D || null != z[u] || null != N[u]) && (n = !0, f = new va(C, u, C[u], D, f), u in A && (f.e = A[u]), f.xs0 = 0, f.plugin = h, d._overwriteProps.push(f.n)); return D = "function" == typeof z.transformOrigin ? z.transformOrigin(r, q) : z.transformOrigin, C.svg && (D || z.svgOrigin) && (p = C.xOffset, s = C.yOffset, Na(a, ja(D), k, z.svgOrigin, z.smoothOrigin), f = wa(C, "xOrigin", (v ? C : k).xOrigin, k.xOrigin, f, B), f = wa(C, "yOrigin", (v ? C : k).yOrigin, k.yOrigin, f, B), (p !== C.xOffset || s !== C.yOffset) && (f = wa(C, "xOffset", v ? p : C.xOffset, C.xOffset, f, B), f = wa(C, "yOffset", v ? s : C.yOffset, C.yOffset, f, B)), D = "0px 0px"), (D || Ha && m && C.zOrigin) && (Ea ? (n = !0, u = Ga, D || (D = (ba(a, u, e, !1, "50% 50%") + "").split(" "), D = D[0] + " " + D[1] + " " + C.zOrigin + "px"), D += "", f = new va(w, u, 0, 0, f, -1, B), f.b = w[u], f.plugin = h, Ha ? (l = C.zOrigin, D = D.split(" "), C.zOrigin = (D.length > 2 ? parseFloat(D[2]) : l) || 0, f.xs0 = f.e = D[0] + " " + (D[1] || "50%") + " 0px", f = new va(C, "zOrigin", 0, 0, f, -1, f.n), f.b = l, f.xs0 = f.e = C.zOrigin) : f.xs0 = f.e = D) : ja(D + "", C)), n && (d._transformType = C.svg && Ca || !m && 3 !== this._transformType ? 2 : 3), j && (i.scale = j), f }, allowFunc: !0, prefix: !0 }), Aa("boxShadow", { defaultValue: "0px 0px 0px 0px #999", prefix: !0, color: !0, multi: !0, keyword: "inset" }), Aa("clipPath", { defaultValue: "inset(0%)", prefix: !0, multi: !0, formatter: sa("inset(0% 0% 0% 0%)", !1, !0) }), Aa("borderRadius", { defaultValue: "0px", parser: function(a, b, c, f, g, h) { b = this.format(b); var i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y = ["borderTopLeftRadius", "borderTopRightRadius", "borderBottomRightRadius", "borderBottomLeftRadius"], z = a.style; for (q = parseFloat(a.offsetWidth), r = parseFloat(a.offsetHeight), i = b.split(" "), j = 0; j < y.length; j++) this.p.indexOf("border") && (y[j] = $(y[j])), m = l = ba(a, y[j], e, !1, "0px"), -1 !== m.indexOf(" ") && (l = m.split(" "), m = l[0], l = l[1]), n = k = i[j], o = parseFloat(m), t = m.substr((o + "").length), u = "=" === n.charAt(1), u ? (p = parseInt(n.charAt(0) + "1", 10), n = n.substr(2), p *= parseFloat(n), s = n.substr((p + "").length - (0 > p ? 1 : 0)) || "") : (p = parseFloat(n), s = n.substr((p + "").length)), "" === s && (s = d[c] || t), s !== t && (v = ca(a, "borderLeft", o, t), w = ca(a, "borderTop", o, t), "%" === s ? (m = v / q * 100 + "%", l = w / r * 100 + "%") : "em" === s ? (x = ca(a, "borderLeft", 1, "em"), m = v / x + "em", l = w / x + "em") : (m = v + "px", l = w + "px"), u && (n = parseFloat(m) + p + s, k = parseFloat(l) + p + s)), g = xa(z, y[j], m + " " + l, n + " " + k, !1, "0px", g); return g }, prefix: !0, formatter: sa("0px 0px 0px 0px", !1, !0) }), Aa("borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius", { defaultValue: "0px", parser: function(a, b, c, d, f, g) { return xa(a.style, c, this.format(ba(a, c, e, !1, "0px 0px")), this.format(b), !1, "0px", f) }, prefix: !0, formatter: sa("0px 0px", !1, !0) }), Aa("backgroundPosition", { defaultValue: "0 0", parser: function(a, b, c, d, f, g) { var h, i, j, k, l, m, n = "background-position", o = e || aa(a, null), q = this.format((o ? p ? o.getPropertyValue(n + "-x") + " " + o.getPropertyValue(n + "-y") : o.getPropertyValue(n) : a.currentStyle.backgroundPositionX + " " + a.currentStyle.backgroundPositionY) || "0 0"), r = this.format(b); if (-1 !== q.indexOf("%") != (-1 !== r.indexOf("%")) && r.split(",").length < 2 && (m = ba(a, "backgroundImage").replace(E, ""), m && "none" !== m)) { for (h = q.split(" "), i = r.split(" "), S.setAttribute("src", m), j = 2; --j > -1;) q = h[j], k = -1 !== q.indexOf("%"), k !== (-1 !== i[j].indexOf("%")) && (l = 0 === j ? a.offsetWidth - S.width : a.offsetHeight - S.height, h[j] = k ? parseFloat(q) / 100 * l + "px" : parseFloat(q) / l * 100 + "%"); q = h.join(" ") } return this.parseComplex(a.style, q, r, f, g) }, formatter: ja }), Aa("backgroundSize", { defaultValue: "0 0", formatter: function(a) { return a += "", "co" === a.substr(0, 2) ? a : ja(-1 === a.indexOf(" ") ? a + " " + a : a) } }), Aa("perspective", { defaultValue: "0px", prefix: !0 }), Aa("perspectiveOrigin", { defaultValue: "50% 50%", prefix: !0 }), Aa("transformStyle", { prefix: !0 }), Aa("backfaceVisibility", { prefix: !0 }), Aa("userSelect", { prefix: !0 }), Aa("margin", { parser: ta("marginTop,marginRight,marginBottom,marginLeft") }), Aa("padding", { parser: ta("paddingTop,paddingRight,paddingBottom,paddingLeft") }), Aa("clip", { defaultValue: "rect(0px,0px,0px,0px)", parser: function(a, b, c, d, f, g) { var h, i, j; return 9 > p ? (i = a.currentStyle, j = 8 > p ? " " : ",", h = "rect(" + i.clipTop + j + i.clipRight + j + i.clipBottom + j + i.clipLeft + ")", b = this.format(b).split(",").join(j)) : (h = this.format(ba(a, this.p, e, !1, this.dflt)), b = this.format(b)), this.parseComplex(a.style, h, b, f, g) } }), Aa("textShadow", { defaultValue: "0px 0px 0px #999", color: !0, multi: !0 }), Aa("autoRound,strictUnits", { parser: function(a, b, c, d, e) { return e } }), Aa("border", { defaultValue: "0px solid #000", parser: function(a, b, c, d, f, g) { var h = ba(a, "borderTopWidth", e, !1, "0px"), i = this.format(b).split(" "), j = i[0].replace(x, ""); return "px" !== j && (h = parseFloat(h) / ca(a, "borderTopWidth", 1, j) + j), this.parseComplex(a.style, this.format(h + " " + ba(a, "borderTopStyle", e, !1, "solid") + " " + ba(a, "borderTopColor", e, !1, "#000")), i.join(" "), f, g) }, color: !0, formatter: function(a) { var b = a.split(" "); return b[0] + " " + (b[1] || "solid") + " " + (a.match(ra) || ["#000"])[0] } }), Aa("borderWidth", { parser: ta("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth") }), Aa("float,cssFloat,styleFloat", { parser: function(a, b, c, d, e, f) { var g = a.style, h = "cssFloat" in g ? "cssFloat" : "styleFloat"; return new va(g, h, 0, 0, e, -1, c, !1, 0, g[h], b) } }); var Wa = function(a) { var b, c = this.t, d = c.filter || ba(this.data, "filter") || "", e = this.s + this.c * a | 0; 100 === e && (-1 === d.indexOf("atrix(") && -1 === d.indexOf("radient(") && -1 === d.indexOf("oader(") ? (c.removeAttribute("filter"), b = !ba(this.data, "filter")) : (c.filter = d.replace(A, ""), b = !0)), b || (this.xn1 && (c.filter = d = d || "alpha(opacity=" + e + ")"), -1 === d.indexOf("pacity") ? 0 === e && this.xn1 || (c.filter = d + " alpha(opacity=" + e + ")") : c.filter = d.replace(y, "opacity=" + e)) }; Aa("opacity,alpha,autoAlpha", { defaultValue: "1", parser: function(a, b, c, d, f, g) { var h = parseFloat(ba(a, "opacity", e, !1, "1")), i = a.style, j = "autoAlpha" === c; return "string" == typeof b && "=" === b.charAt(1) && (b = ("-" === b.charAt(0) ? -1 : 1) * parseFloat(b.substr(2)) + h), j && 1 === h && "hidden" === ba(a, "visibility", e) && 0 !== b && (h = 0), V ? f = new va(i, "opacity", h, b - h, f) : (f = new va(i, "opacity", 100 * h, 100 * (b - h), f), f.xn1 = j ? 1 : 0, i.zoom = 1, f.type = 2, f.b = "alpha(opacity=" + f.s + ")", f.e = "alpha(opacity=" + (f.s + f.c) + ")", f.data = a, f.plugin = g, f.setRatio = Wa), j && (f = new va(i, "visibility", 0, 0, f, -1, null, !1, 0, 0 !== h ? "inherit" : "hidden", 0 === b ? "hidden" : "inherit"), f.xs0 = "inherit", d._overwriteProps.push(f.n), d._overwriteProps.push(c)), f } }); var Xa = function(a, b) { b && (a.removeProperty ? (("ms" === b.substr(0, 2) || "webkit" === b.substr(0, 6)) && (b = "-" + b), a.removeProperty(b.replace(C, "-$1").toLowerCase())) : a.removeAttribute(b)) }, Ya = function(a) { if (this.t._gsClassPT = this, 1 === a || 0 === a) { this.t.setAttribute("class", 0 === a ? this.b : this.e); for (var b = this.data, c = this.t.style; b;) b.v ? c[b.p] = b.v : Xa(c, b.p), b = b._next; 1 === a && this.t._gsClassPT === this && (this.t._gsClassPT = null) } else this.t.getAttribute("class") !== this.e && this.t.setAttribute("class", this.e) }; Aa("className", { parser: function(a, b, d, f, g, h, i) { var j, k, l, m, n, o = a.getAttribute("class") || "", p = a.style.cssText; if (g = f._classNamePT = new va(a, d, 0, 0, g, 2), g.setRatio = Ya, g.pr = -11, c = !0, g.b = o, k = ea(a, e), l = a._gsClassPT) { for (m = {}, n = l.data; n;) m[n.p] = 1, n = n._next; l.setRatio(1) } return a._gsClassPT = g, g.e = "=" !== b.charAt(1) ? b : o.replace(new RegExp("(?:\\s|^)" + b.substr(2) + "(?![\\w-])"), "") + ("+" === b.charAt(0) ? " " + b.substr(2) : ""), a.setAttribute("class", g.e), j = fa(a, k, ea(a), i, m), a.setAttribute("class", o), g.data = j.firstMPT, a.style.cssText !== p && (a.style.cssText = p), g = g.xfirst = f.parse(a, j.difs, g, h) } }); var Za = function(a) { if ((1 === a || 0 === a) && this.data._totalTime === this.data._totalDuration && "isFromStart" !== this.data.data) { var b, c, d, e, f, g = this.t.style, h = i.transform.parse; if ("all" === this.e) g.cssText = "", e = !0; else for (b = this.e.split(" ").join("").split(","), d = b.length; --d > -1;) c = b[d], i[c] && (i[c].parse === h ? e = !0 : c = "transformOrigin" === c ? Ga : i[c].p), Xa(g, c); e && (Xa(g, Ea), f = this.t._gsTransform, f && (f.svg && (this.t.removeAttribute("data-svg-origin"), this.t.removeAttribute("transform")), delete this.t._gsTransform)) } }; for (Aa("clearProps", { parser: function(a, b, d, e, f) { return f = new va(a, d, 0, 0, f, 2), f.setRatio = Za, f.e = b, f.pr = -10, f.data = e._tween, c = !0, f } }), j = "bezier,throwProps,physicsProps,physics2D".split(","), ya = j.length; ya--;) Ba(j[ya]); j = g.prototype, j._firstPT = j._lastParsedTransform = j._transform = null, j._onInitTween = function(a, b, h, j) { if (!a.nodeType) return !1; this._target = q = a, this._tween = h, this._vars = b, r = j, k = b.autoRound, c = !1, d = b.suffixMap || g.suffixMap, e = aa(a, ""), f = this._overwriteProps; var n, p, s, t, u, v, w, x, y, A = a.style; if (l && "" === A.zIndex && (n = ba(a, "zIndex", e), ("auto" === n || "" === n) && this._addLazySet(A, "zIndex", 0)), "string" == typeof b && (t = A.cssText, n = ea(a, e), A.cssText = t + ";" + b, n = fa(a, n, ea(a)).difs, !V && z.test(b) && (n.opacity = parseFloat(RegExp.$1)), b = n, A.cssText = t), b.className ? this._firstPT = p = i.className.parse(a, b.className, "className", this, null, null, b) : this._firstPT = p = this.parse(a, b, null), this._transformType) { for (y = 3 === this._transformType, Ea ? m && (l = !0, "" === A.zIndex && (w = ba(a, "zIndex", e), ("auto" === w || "" === w) && this._addLazySet(A, "zIndex", 0)), o && this._addLazySet(A, "WebkitBackfaceVisibility", this._vars.WebkitBackfaceVisibility || (y ? "visible" : "hidden"))) : A.zoom = 1, s = p; s && s._next;) s = s._next; x = new va(a, "transform", 0, 0, null, 2), this._linkCSSP(x, null, s), x.setRatio = Ea ? Va : Ua, x.data = this._transform || Ta(a, e, !0), x.tween = h, x.pr = -1, f.pop() } if (c) { for (; p;) { for (v = p._next, s = t; s && s.pr > p.pr;) s = s._next; (p._prev = s ? s._prev : u) ? p._prev._next = p: t = p, (p._next = s) ? s._prev = p : u = p, p = v } this._firstPT = t } return !0 }, j.parse = function(a, b, c, f) { var g, h, j, l, m, n, o, p, s, t, u = a.style; for (g in b) { if (n = b[g], h = i[g], "function" != typeof n || h && h.allowFunc || (n = n(r, q)), h) c = h.parse(a, n, g, this, c, f, b); else { if ("--" === g.substr(0, 2)) { this._tween._propLookup[g] = this._addTween.call(this._tween, a.style, "setProperty", aa(a).getPropertyValue(g) + "", n + "", g, !1, g); continue } m = ba(a, g, e) + "", s = "string" == typeof n, "color" === g || "fill" === g || "stroke" === g || -1 !== g.indexOf("Color") || s && B.test(n) ? (s || (n = pa(n), n = (n.length > 3 ? "rgba(" : "rgb(") + n.join(",") + ")"), c = xa(u, g, m, n, !0, "transparent", c, 0, f)) : s && K.test(n) ? c = xa(u, g, m, n, !0, null, c, 0, f) : (j = parseFloat(m), o = j || 0 === j ? m.substr((j + "").length) : "", ("" === m || "auto" === m) && ("width" === g || "height" === g ? (j = ia(a, g, e), o = "px") : "left" === g || "top" === g ? (j = da(a, g, e), o = "px") : (j = "opacity" !== g ? 0 : 1, o = "")), t = s && "=" === n.charAt(1), t ? (l = parseInt(n.charAt(0) + "1", 10), n = n.substr(2), l *= parseFloat(n), p = n.replace(x, "")) : (l = parseFloat(n), p = s ? n.replace(x, "") : ""), "" === p && (p = g in d ? d[g] : o), n = l || 0 === l ? (t ? l + j : l) + p : b[g], o !== p && ("" !== p || "lineHeight" === g) && (l || 0 === l) && j && (j = ca(a, g, j, o), "%" === p ? (j /= ca(a, g, 100, "%") / 100, b.strictUnits !== !0 && (m = j + "%")) : "em" === p || "rem" === p || "vw" === p || "vh" === p ? j /= ca(a, g, 1, p) : "px" !== p && (l = ca(a, g, l, p), p = "px"), t && (l || 0 === l) && (n = l + j + p)), t && (l += j), !j && 0 !== j || !l && 0 !== l ? void 0 !== u[g] && (n || n + "" != "NaN" && null != n) ? (c = new va(u, g, l || j || 0, 0, c, -1, g, !1, 0, m, n), c.xs0 = "none" !== n || "display" !== g && -1 === g.indexOf("Style") ? n : m) : X("invalid " + g + " tween value: " + b[g]) : (c = new va(u, g, j, l - j, c, 0, g, k !== !1 && ("px" === p || "zIndex" === g), 0, m, n), c.xs0 = p)) } f && c && !c.plugin && (c.plugin = f) } return c }, j.setRatio = function(a) { var b, c, d, e = this._firstPT, f = 1e-6; if (1 !== a || this._tween._time !== this._tween._duration && 0 !== this._tween._time) if (a || this._tween._time !== this._tween._duration && 0 !== this._tween._time || this._tween._rawPrevTime === -1e-6) for (; e;) { if (b = e.c * a + e.s, e.r ? b = e.r(b) : f > b && b > -f && (b = 0), e.type) if (1 === e.type) if (d = e.l, 2 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2; else if (3 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2 + e.xn2 + e.xs3; else if (4 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2 + e.xn2 + e.xs3 + e.xn3 + e.xs4; else if (5 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2 + e.xn2 + e.xs3 + e.xn3 + e.xs4 + e.xn4 + e.xs5; else { for (c = e.xs0 + b + e.xs1, d = 1; d < e.l; d++) c += e["xn" + d] + e["xs" + (d + 1)]; e.t[e.p] = c } else -1 === e.type ? e.t[e.p] = e.xs0 : e.setRatio && e.setRatio(a); else e.t[e.p] = b + e.xs0; e = e._next } else for (; e;) 2 !== e.type ? e.t[e.p] = e.b : e.setRatio(a), e = e._next; else for (; e;) { if (2 !== e.type) if (e.r && -1 !== e.type) if (b = e.r(e.s + e.c), e.type) { if (1 === e.type) { for (d = e.l, c = e.xs0 + b + e.xs1, d = 1; d < e.l; d++) c += e["xn" + d] + e["xs" + (d + 1)]; e.t[e.p] = c } } else e.t[e.p] = b + e.xs0; else e.t[e.p] = e.e; else e.setRatio(a); e = e._next } }, j._enableTransforms = function(a) { this._transform = this._transform || Ta(this._target, e, !0), this._transformType = this._transform.svg && Ca || !a && 3 !== this._transformType ? 2 : 3 }; var $a = function(a) { this.t[this.p] = this.e, this.data._linkCSSP(this, this._next, null, !0) }; j._addLazySet = function(a, b, c) { var d = this._firstPT = new va(a, b, 0, 0, this._firstPT, 2); d.e = c, d.setRatio = $a, d.data = this }, j._linkCSSP = function(a, b, c, d) { return a && (b && (b._prev = a), a._next && (a._next._prev = a._prev), a._prev ? a._prev._next = a._next : this._firstPT === a && (this._firstPT = a._next, d = !0), c ? c._next = a : d || null !== this._firstPT || (this._firstPT = a), a._next = b, a._prev = c), a }, j._mod = function(a) { for (var b = this._firstPT; b;) "function" == typeof a[b.p] && (b.r = a[b.p]), b = b._next }, j._kill = function(b) { var c, d, e, f = b; if (b.autoAlpha || b.alpha) { f = {}; for (d in b) f[d] = b[d]; f.opacity = 1, f.autoAlpha && (f.visibility = 1) } for (b.className && (c = this._classNamePT) && (e = c.xfirst, e && e._prev ? this._linkCSSP(e._prev, c._next, e._prev._prev) : e === this._firstPT && (this._firstPT = c._next), c._next && this._linkCSSP(c._next, c._next._next, e._prev), this._classNamePT = null), c = this._firstPT; c;) c.plugin && c.plugin !== d && c.plugin._kill && (c.plugin._kill(b), d = c.plugin), c = c._next; return a.prototype._kill.call(this, f) }; var _a = function(a, b, c) { var d, e, f, g; if (a.slice) for (e = a.length; --e > -1;) _a(a[e], b, c); else for (d = a.childNodes, e = d.length; --e > -1;) f = d[e], g = f.type, f.style && (b.push(ea(f)), c && c.push(f)), 1 !== g && 9 !== g && 11 !== g || !f.childNodes.length || _a(f, b, c) }; return g.cascadeTo = function(a, c, d) { var e, f, g, h, i = b.to(a, c, d), j = [i], k = [], l = [], m = [], n = b._internals.reservedProps; for (a = i._targets || i.target, _a(a, k, m), i.render(c, !0, !0), _a(a, l), i.render(0, !0, !0), i._enabled(!0), e = m.length; --e > -1;) if (f = fa(m[e], k[e], l[e]), f.firstMPT) { f = f.difs; for (g in d) n[g] && (f[g] = d[g]); h = {}; for (g in f) h[g] = k[e][g]; j.push(b.fromTo(m[e], c, h, f)) } return j }, a.activate([g]), g }, !0), function() { var a = _gsScope._gsDefine.plugin({ propName: "roundProps", version: "1.7.0", priority: -1, API: 2, init: function(a, b, c) { return this._tween = c, !0 } }), b = function(a) { var b = 1 > a ? Math.pow(10, (a + "").length - 2) : 1; return function(c) { return (Math.round(c / a) * a * b | 0) / b } }, c = function(a, b) { for (; a;) a.f || a.blob || (a.m = b || Math.round), a = a._next }, d = a.prototype; d._onInitAllProps = function() { var a, d, e, f, g = this._tween, h = g.vars.roundProps, i = {}, j = g._propLookup.roundProps; if ("object" != typeof h || h.push) for ("string" == typeof h && (h = h.split(",")), e = h.length; --e > -1;) i[h[e]] = Math.round; else for (f in h) i[f] = b(h[f]); for (f in i) for (a = g._firstPT; a;) d = a._next, a.pg ? a.t._mod(i) : a.n === f && (2 === a.f && a.t ? c(a.t._firstPT, i[f]) : (this._add(a.t, f, a.s, a.c, i[f]), d && (d._prev = a._prev), a._prev ? a._prev._next = d : g._firstPT === a && (g._firstPT = d), a._next = a._prev = null, g._propLookup[f] = j)), a = d; return !1 }, d._add = function(a, b, c, d, e) { this._addTween(a, b, c, c + d, b, e || Math.round), this._overwriteProps.push(b) } }(), function() { _gsScope._gsDefine.plugin({ propName: "attr", API: 2, version: "0.6.1", init: function(a, b, c, d) { var e, f; if ("function" != typeof a.setAttribute) return !1; for (e in b) f = b[e], "function" == typeof f && (f = f(d, a)), this._addTween(a, "setAttribute", a.getAttribute(e) + "", f + "", e, !1, e), this._overwriteProps.push(e); return !0 } }) }(), _gsScope._gsDefine.plugin({ propName: "directionalRotation", version: "0.3.1", API: 2, init: function(a, b, c, d) { "object" != typeof b && (b = { rotation: b }), this.finals = {}; var e, f, g, h, i, j, k = b.useRadians === !0 ? 2 * Math.PI : 360, l = 1e-6; for (e in b) "useRadians" !== e && (h = b[e], "function" == typeof h && (h = h(d, a)), j = (h + "").split("_"), f = j[0], g = parseFloat("function" != typeof a[e] ? a[e] : a[e.indexOf("set") || "function" != typeof a["get" + e.substr(3)] ? e : "get" + e.substr(3)]()), h = this.finals[e] = "string" == typeof f && "=" === f.charAt(1) ? g + parseInt(f.charAt(0) + "1", 10) * Number(f.substr(2)) : Number(f) || 0, i = h - g, j.length && (f = j.join("_"), -1 !== f.indexOf("short") && (i %= k, i !== i % (k / 2) && (i = 0 > i ? i + k : i - k)), -1 !== f.indexOf("_cw") && 0 > i ? i = (i + 9999999999 * k) % k - (i / k | 0) * k : -1 !== f.indexOf("ccw") && i > 0 && (i = (i - 9999999999 * k) % k - (i / k | 0) * k)), (i > l || -l > i) && (this._addTween(a, e, g, g + i, e), this._overwriteProps.push(e))); return !0 }, set: function(a) { var b; if (1 !== a) this._super.setRatio.call(this, a); else for (b = this._firstPT; b;) b.f ? b.t[b.p](this.finals[b.p]) : b.t[b.p] = this.finals[b.p], b = b._next } })._autoCSS = !0, _gsScope._gsDefine("easing.Back", ["easing.Ease"], function(a) { var b, c, d, e, f = _gsScope.GreenSockGlobals || _gsScope, g = f.com.greensock, h = 2 * Math.PI, i = Math.PI / 2, j = g._class, k = function(b, c) { var d = j("easing." + b, function() {}, !0), e = d.prototype = new a; return e.constructor = d, e.getRatio = c, d }, l = a.register || function() {}, m = function(a, b, c, d, e) { var f = j("easing." + a, { easeOut: new b, easeIn: new c, easeInOut: new d }, !0); return l(f, a), f }, n = function(a, b, c) { this.t = a, this.v = b, c && (this.next = c, c.prev = this, this.c = c.v - b, this.gap = c.t - a) }, o = function(b, c) { var d = j("easing." + b, function(a) { this._p1 = a || 0 === a ? a : 1.70158, this._p2 = 1.525 * this._p1 }, !0), e = d.prototype = new a; return e.constructor = d, e.getRatio = c, e.config = function(a) { return new d(a) }, d }, p = m("Back", o("BackOut", function(a) { return (a -= 1) * a * ((this._p1 + 1) * a + this._p1) + 1 }), o("BackIn", function(a) { return a * a * ((this._p1 + 1) * a - this._p1) }), o("BackInOut", function(a) { return (a *= 2) < 1 ? .5 * a * a * ((this._p2 + 1) * a - this._p2) : .5 * ((a -= 2) * a * ((this._p2 + 1) * a + this._p2) + 2) })), q = j("easing.SlowMo", function(a, b, c) { b = b || 0 === b ? b : .7, null == a ? a = .7 : a > 1 && (a = 1), this._p = 1 !== a ? b : 0, this._p1 = (1 - a) / 2, this._p2 = a, this._p3 = this._p1 + this._p2, this._calcEnd = c === !0 }, !0), r = q.prototype = new a; return r.constructor = q, r.getRatio = function(a) { var b = a + (.5 - a) * this._p; return a < this._p1 ? this._calcEnd ? 1 - (a = 1 - a / this._p1) * a : b - (a = 1 - a / this._p1) * a * a * a * b : a > this._p3 ? this._calcEnd ? 1 === a ? 0 : 1 - (a = (a - this._p3) / this._p1) * a : b + (a - b) * (a = (a - this._p3) / this._p1) * a * a * a : this._calcEnd ? 1 : b }, q.ease = new q(.7, .7), r.config = q.config = function(a, b, c) { return new q(a, b, c) }, b = j("easing.SteppedEase", function(a, b) { a = a || 1, this._p1 = 1 / a, this._p2 = a + (b ? 0 : 1), this._p3 = b ? 1 : 0 }, !0), r = b.prototype = new a, r.constructor = b, r.getRatio = function(a) { return 0 > a ? a = 0 : a >= 1 && (a = .999999999), ((this._p2 * a | 0) + this._p3) * this._p1 }, r.config = b.config = function(a, c) { return new b(a, c) }, c = j("easing.ExpoScaleEase", function(a, b, c) { this._p1 = Math.log(b / a), this._p2 = b - a, this._p3 = a, this._ease = c }, !0), r = c.prototype = new a, r.constructor = c, r.getRatio = function(a) { return this._ease && (a = this._ease.getRatio(a)), (this._p3 * Math.exp(this._p1 * a) - this._p3) / this._p2 }, r.config = c.config = function(a, b, d) { return new c(a, b, d) }, d = j("easing.RoughEase", function(b) { b = b || {}; for (var c, d, e, f, g, h, i = b.taper || "none", j = [], k = 0, l = 0 | (b.points || 20), m = l, o = b.randomize !== !1, p = b.clamp === !0, q = b.template instanceof a ? b.template : null, r = "number" == typeof b.strength ? .4 * b.strength : .4; --m > -1;) c = o ? Math.random() : 1 / l * m, d = q ? q.getRatio(c) : c, "none" === i ? e = r : "out" === i ? (f = 1 - c, e = f * f * r) : "in" === i ? e = c * c * r : .5 > c ? (f = 2 * c, e = f * f * .5 * r) : (f = 2 * (1 - c), e = f * f * .5 * r), o ? d += Math.random() * e - .5 * e : m % 2 ? d += .5 * e : d -= .5 * e, p && (d > 1 ? d = 1 : 0 > d && (d = 0)), j[k++] = { x: c, y: d }; for (j.sort(function(a, b) { return a.x - b.x }), h = new n(1, 1, null), m = l; --m > -1;) g = j[m], h = new n(g.x, g.y, h); this._prev = new n(0, 0, 0 !== h.t ? h : h.next) }, !0), r = d.prototype = new a, r.constructor = d, r.getRatio = function(a) { var b = this._prev; if (a > b.t) { for (; b.next && a >= b.t;) b = b.next; b = b.prev } else for (; b.prev && a <= b.t;) b = b.prev; return this._prev = b, b.v + (a - b.t) / b.gap * b.c }, r.config = function(a) { return new d(a) }, d.ease = new d, m("Bounce", k("BounceOut", function(a) { return 1 / 2.75 > a ? 7.5625 * a * a : 2 / 2.75 > a ? 7.5625 * (a -= 1.5 / 2.75) * a + .75 : 2.5 / 2.75 > a ? 7.5625 * (a -= 2.25 / 2.75) * a + .9375 : 7.5625 * (a -= 2.625 / 2.75) * a + .984375 }), k("BounceIn", function(a) { return (a = 1 - a) < 1 / 2.75 ? 1 - 7.5625 * a * a : 2 / 2.75 > a ? 1 - (7.5625 * (a -= 1.5 / 2.75) * a + .75) : 2.5 / 2.75 > a ? 1 - (7.5625 * (a -= 2.25 / 2.75) * a + .9375) : 1 - (7.5625 * (a -= 2.625 / 2.75) * a + .984375) }), k("BounceInOut", function(a) { var b = .5 > a; return a = b ? 1 - 2 * a : 2 * a - 1, a = 1 / 2.75 > a ? 7.5625 * a * a : 2 / 2.75 > a ? 7.5625 * (a -= 1.5 / 2.75) * a + .75 : 2.5 / 2.75 > a ? 7.5625 * (a -= 2.25 / 2.75) * a + .9375 : 7.5625 * (a -= 2.625 / 2.75) * a + .984375, b ? .5 * (1 - a) : .5 * a + .5 })), m("Circ", k("CircOut", function(a) { return Math.sqrt(1 - (a -= 1) * a) }), k("CircIn", function(a) { return -(Math.sqrt(1 - a * a) - 1) }), k("CircInOut", function(a) { return (a *= 2) < 1 ? -.5 * (Math.sqrt(1 - a * a) - 1) : .5 * (Math.sqrt(1 - (a -= 2) * a) + 1) })), e = function(b, c, d) { var e = j("easing." + b, function(a, b) { this._p1 = a >= 1 ? a : 1, this._p2 = (b || d) / (1 > a ? a : 1), this._p3 = this._p2 / h * (Math.asin(1 / this._p1) || 0), this._p2 = h / this._p2 }, !0), f = e.prototype = new a; return f.constructor = e, f.getRatio = c, f.config = function(a, b) { return new e(a, b) }, e }, m("Elastic", e("ElasticOut", function(a) { return this._p1 * Math.pow(2, -10 * a) * Math.sin((a - this._p3) * this._p2) + 1 }, .3), e("ElasticIn", function(a) { return -(this._p1 * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - this._p3) * this._p2)) }, .3), e("ElasticInOut", function(a) { return (a *= 2) < 1 ? -.5 * (this._p1 * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - this._p3) * this._p2)) : this._p1 * Math.pow(2, -10 * (a -= 1)) * Math.sin((a - this._p3) * this._p2) * .5 + 1 }, .45)), m("Expo", k("ExpoOut", function(a) { return 1 - Math.pow(2, -10 * a) }), k("ExpoIn", function(a) { return Math.pow(2, 10 * (a - 1)) - .001 }), k("ExpoInOut", function(a) { return (a *= 2) < 1 ? .5 * Math.pow(2, 10 * (a - 1)) : .5 * (2 - Math.pow(2, -10 * (a - 1))) })), m("Sine", k("SineOut", function(a) { return Math.sin(a * i) }), k("SineIn", function(a) { return -Math.cos(a * i) + 1 }), k("SineInOut", function(a) { return -.5 * (Math.cos(Math.PI * a) - 1) })), j("easing.EaseLookup", { find: function(b) { return a.map[b] } }, !0), l(f.SlowMo, "SlowMo", "ease,"), l(d, "RoughEase", "ease,"), l(b, "SteppedEase", "ease,"), p }, !0) }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(), function(a, b) { "use strict"; var c = {}, d = a.document, e = a.GreenSockGlobals = a.GreenSockGlobals || a, f = e[b]; if (f) return "undefined" != typeof module && module.exports && (module.exports = f), f; var g, h, i, j, k, l = function(a) { var b, c = a.split("."), d = e; for (b = 0; b < c.length; b++) d[c[b]] = d = d[c[b]] || {}; return d }, m = l("com.greensock"), n = 1e-8, o = function(a) { var b, c = [], d = a.length; for (b = 0; b !== d; c.push(a[b++])); return c }, p = function() {}, q = function() { var a = Object.prototype.toString, b = a.call([]); return function(c) { return null != c && (c instanceof Array || "object" == typeof c && !!c.push && a.call(c) === b) } }(), r = {}, s = function(d, f, g, h) { this.sc = r[d] ? r[d].sc : [], r[d] = this, this.gsClass = null, this.func = g; var i = []; this.check = function(j) { for (var k, m, n, o, p = f.length, q = p; --p > -1;)(k = r[f[p]] || new s(f[p], [])).gsClass ? (i[p] = k.gsClass, q--) : j && k.sc.push(this); if (0 === q && g) { if (m = ("com.greensock." + d).split("."), n = m.pop(), o = l(m.join("."))[n] = this.gsClass = g.apply(g, i), h) if (e[n] = c[n] = o, "undefined" != typeof module && module.exports) if (d === b) { module.exports = c[b] = o; for (p in c) o[p] = c[p] } else c[b] && (c[b][n] = o); else "function" == typeof define && define.amd && define((a.GreenSockAMDPath ? a.GreenSockAMDPath + "/" : "") + d.split(".").pop(), [], function() { return o }); for (p = 0; p < this.sc.length; p++) this.sc[p].check() } }, this.check(!0) }, t = a._gsDefine = function(a, b, c, d) { return new s(a, b, c, d) }, u = m._class = function(a, b, c) { return b = b || function() {}, t(a, [], function() { return b }, c), b }; t.globals = e; var v = [0, 0, 1, 1], w = u("easing.Ease", function(a, b, c, d) { this._func = a, this._type = c || 0, this._power = d || 0, this._params = b ? v.concat(b) : v }, !0), x = w.map = {}, y = w.register = function(a, b, c, d) { for (var e, f, g, h, i = b.split(","), j = i.length, k = (c || "easeIn,easeOut,easeInOut").split(","); --j > -1;) for (f = i[j], e = d ? u("easing." + f, null, !0) : m.easing[f] || {}, g = k.length; --g > -1;) h = k[g], x[f + "." + h] = x[h + f] = e[h] = a.getRatio ? a : a[h] || new a }; for (i = w.prototype, i._calcEnd = !1, i.getRatio = function(a) { if (this._func) return this._params[0] = a, this._func.apply(null, this._params); var b = this._type, c = this._power, d = 1 === b ? 1 - a : 2 === b ? a : .5 > a ? 2 * a : 2 * (1 - a); return 1 === c ? d *= d : 2 === c ? d *= d * d : 3 === c ? d *= d * d * d : 4 === c && (d *= d * d * d * d), 1 === b ? 1 - d : 2 === b ? d : .5 > a ? d / 2 : 1 - d / 2 }, g = ["Linear", "Quad", "Cubic", "Quart", "Quint,Strong"], h = g.length; --h > -1;) i = g[h] + ",Power" + h, y(new w(null, null, 1, h), i, "easeOut", !0), y(new w(null, null, 2, h), i, "easeIn" + (0 === h ? ",easeNone" : "")), y(new w(null, null, 3, h), i, "easeInOut"); x.linear = m.easing.Linear.easeIn, x.swing = m.easing.Quad.easeInOut; var z = u("events.EventDispatcher", function(a) { this._listeners = {}, this._eventTarget = a || this }); i = z.prototype, i.addEventListener = function(a, b, c, d, e) { e = e || 0; var f, g, h = this._listeners[a], i = 0; for (this !== j || k || j.wake(), null == h && (this._listeners[a] = h = []), g = h.length; --g > -1;) f = h[g], f.c === b && f.s === c ? h.splice(g, 1) : 0 === i && f.pr < e && (i = g + 1); h.splice(i, 0, { c: b, s: c, up: d, pr: e }) }, i.removeEventListener = function(a, b) { var c, d = this._listeners[a]; if (d) for (c = d.length; --c > -1;) if (d[c].c === b) return void d.splice(c, 1) }, i.dispatchEvent = function(a) { var b, c, d, e = this._listeners[a]; if (e) for (b = e.length, b > 1 && (e = e.slice(0)), c = this._eventTarget; --b > -1;) d = e[b], d && (d.up ? d.c.call(d.s || c, { type: a, target: c }) : d.c.call(d.s || c)) }; var A = a.requestAnimationFrame, B = a.cancelAnimationFrame, C = Date.now || function() { return (new Date).getTime() }, D = C(); for (g = ["ms", "moz", "webkit", "o"], h = g.length; --h > -1 && !A;) A = a[g[h] + "RequestAnimationFrame"], B = a[g[h] + "CancelAnimationFrame"] || a[g[h] + "CancelRequestAnimationFrame"]; u("Ticker", function(a, b) { var c, e, f, g, h, i = this, l = C(), m = b !== !1 && A ? "auto" : !1, o = 500, q = 33, r = "tick", s = function(a) { var b, d, j = C() - D; j > o && (l += j - q), D += j, i.time = (D - l) / 1e3, b = i.time - h, (!c || b > 0 || a === !0) && (i.frame++, h += b + (b >= g ? .004 : g - b), d = !0), a !== !0 && (f = e(s)), d && i.dispatchEvent(r) }; z.call(i), i.time = i.frame = 0, i.tick = function() { s(!0) }, i.lagSmoothing = function(a, b) { return arguments.length ? (o = a || 1 / n, void(q = Math.min(b, o, 0))) : 1 / n > o }, i.sleep = function() { null != f && (m && B ? B(f) : clearTimeout(f), e = p, f = null, i === j && (k = !1)) }, i.wake = function(a) { null !== f ? i.sleep() : a ? l += -D + (D = C()) : i.frame > 10 && (D = C() - o + 5), e = 0 === c ? p : m && A ? A : function(a) { return setTimeout(a, 1e3 * (h - i.time) + 1 | 0) }, i === j && (k = !0), s(2) }, i.fps = function(a) { return arguments.length ? (c = a, g = 1 / (c || 60), h = this.time + g, void i.wake()) : c }, i.useRAF = function(a) { return arguments.length ? (i.sleep(), m = a, void i.fps(c)) : m }, i.fps(a), setTimeout(function() { "auto" === m && i.frame < 5 && "hidden" !== (d || {}).visibilityState && i.useRAF(!1) }, 1500) }), i = m.Ticker.prototype = new m.events.EventDispatcher, i.constructor = m.Ticker; var E = u("core.Animation", function(a, b) { if (this.vars = b = b || {}, this._duration = this._totalDuration = a || 0, this._delay = Number(b.delay) || 0, this._timeScale = 1, this._active = !!b.immediateRender, this.data = b.data, this._reversed = !!b.reversed, Z) { k || j.wake(); var c = this.vars.useFrames ? Y : Z; c.add(this, c._time), this.vars.paused && this.paused(!0) } }); j = E.ticker = new m.Ticker, i = E.prototype, i._dirty = i._gc = i._initted = i._paused = !1, i._totalTime = i._time = 0, i._rawPrevTime = -1, i._next = i._last = i._onUpdate = i._timeline = i.timeline = null, i._paused = !1; var F = function() { k && C() - D > 2e3 && ("hidden" !== (d || {}).visibilityState || !j.lagSmoothing()) && j.wake(); var a = setTimeout(F, 2e3); a.unref && a.unref() }; F(), i.play = function(a, b) { return null != a && this.seek(a, b), this.reversed(!1).paused(!1) }, i.pause = function(a, b) { return null != a && this.seek(a, b), this.paused(!0) }, i.resume = function(a, b) { return null != a && this.seek(a, b), this.paused(!1) }, i.seek = function(a, b) { return this.totalTime(Number(a), b !== !1) }, i.restart = function(a, b) { return this.reversed(!1).paused(!1).totalTime(a ? -this._delay : 0, b !== !1, !0) }, i.reverse = function(a, b) { return null != a && this.seek(a || this.totalDuration(), b), this.reversed(!0).paused(!1) }, i.render = function(a, b, c) {}, i.invalidate = function() { return this._time = this._totalTime = 0, this._initted = this._gc = !1, this._rawPrevTime = -1, (this._gc || !this.timeline) && this._enabled(!0), this }, i.isActive = function() { var a, b = this._timeline, c = this._startTime; return !b || !this._gc && !this._paused && b.isActive() && (a = b.rawTime(!0)) >= c && a < c + this.totalDuration() / this._timeScale - n }, i._enabled = function(a, b) { return k || j.wake(), this._gc = !a, this._active = this.isActive(), b !== !0 && (a && !this.timeline ? this._timeline.add(this, this._startTime - this._delay) : !a && this.timeline && this._timeline._remove(this, !0)), !1 }, i._kill = function(a, b) { return this._enabled(!1, !1) }, i.kill = function(a, b) { return this._kill(a, b), this }, i._uncache = function(a) { for (var b = a ? this : this.timeline; b;) b._dirty = !0, b = b.timeline; return this }, i._swapSelfInParams = function(a) { for (var b = a.length, c = a.concat(); --b > -1;) "{self}" === a[b] && (c[b] = this); return c }, i._callback = function(a) { var b = this.vars, c = b[a], d = b[a + "Params"], e = b[a + "Scope"] || b.callbackScope || this, f = d ? d.length : 0; switch (f) { case 0: c.call(e); break; case 1: c.call(e, d[0]); break; case 2: c.call(e, d[0], d[1]); break; default: c.apply(e, d) } }, i.eventCallback = function(a, b, c, d) { if ("on" === (a || "").substr(0, 2)) { var e = this.vars; if (1 === arguments.length) return e[a]; null == b ? delete e[a] : (e[a] = b, e[a + "Params"] = q(c) && -1 !== c.join("").indexOf("{self}") ? this._swapSelfInParams(c) : c, e[a + "Scope"] = d), "onUpdate" === a && (this._onUpdate = b) } return this }, i.delay = function(a) { return arguments.length ? (this._timeline.smoothChildTiming && this.startTime(this._startTime + a - this._delay), this._delay = a, this) : this._delay }, i.duration = function(a) { return arguments.length ? (this._duration = this._totalDuration = a, this._uncache(!0), this._timeline.smoothChildTiming && this._time > 0 && this._time < this._duration && 0 !== a && this.totalTime(this._totalTime * (a / this._duration), !0), this) : (this._dirty = !1, this._duration) }, i.totalDuration = function(a) { return this._dirty = !1, arguments.length ? this.duration(a) : this._totalDuration }, i.time = function(a, b) { return arguments.length ? (this._dirty && this.totalDuration(), this.totalTime(a > this._duration ? this._duration : a, b)) : this._time }, i.totalTime = function(a, b, c) { if (k || j.wake(), !arguments.length) return this._totalTime; if (this._timeline) { if (0 > a && !c && (a += this.totalDuration()), this._timeline.smoothChildTiming) { this._dirty && this.totalDuration(); var d = this._totalDuration, e = this._timeline; if (a > d && !c && (a = d), this._startTime = (this._paused ? this._pauseTime : e._time) - (this._reversed ? d - a : a) / this._timeScale, e._dirty || this._uncache(!1), e._timeline) for (; e._timeline;) e._timeline._time !== (e._startTime + e._totalTime) / e._timeScale && e.totalTime(e._totalTime, !0), e = e._timeline } this._gc && this._enabled(!0, !1), (this._totalTime !== a || 0 === this._duration) && (K.length && _(), this.render(a, b, !1), K.length && _()) } return this }, i.progress = i.totalProgress = function(a, b) { var c = this.duration(); return arguments.length ? this.totalTime(c * a, b) : c ? this._time / c : this.ratio }, i.startTime = function(a) { return arguments.length ? (a !== this._startTime && (this._startTime = a, this.timeline && this.timeline._sortChildren && this.timeline.add(this, a - this._delay)), this) : this._startTime }, i.endTime = function(a) { return this._startTime + (0 != a ? this.totalDuration() : this.duration()) / this._timeScale }, i.timeScale = function(a) { if (!arguments.length) return this._timeScale; var b, c; for (a = a || n, this._timeline && this._timeline.smoothChildTiming && (b = this._pauseTime, c = b || 0 === b ? b : this._timeline.totalTime(), this._startTime = c - (c - this._startTime) * this._timeScale / a), this._timeScale = a, c = this.timeline; c && c.timeline;) c._dirty = !0, c.totalDuration(), c = c.timeline; return this }, i.reversed = function(a) { return arguments.length ? (a != this._reversed && (this._reversed = a, this.totalTime(this._timeline && !this._timeline.smoothChildTiming ? this.totalDuration() - this._totalTime : this._totalTime, !0)), this) : this._reversed }, i.paused = function(a) { if (!arguments.length) return this._paused; var b, c, d = this._timeline; return a != this._paused && d && (k || a || j.wake(), b = d.rawTime(), c = b - this._pauseTime, !a && d.smoothChildTiming && (this._startTime += c, this._uncache(!1)), this._pauseTime = a ? b : null, this._paused = a, this._active = this.isActive(), !a && 0 !== c && this._initted && this.duration() && (b = d.smoothChildTiming ? this._totalTime : (b - this._startTime) / this._timeScale, this.render(b, b === this._totalTime, !0))), this._gc && !a && this._enabled(!0, !1), this }; var G = u("core.SimpleTimeline", function(a) { E.call(this, 0, a), this.autoRemoveChildren = this.smoothChildTiming = !0 }); i = G.prototype = new E, i.constructor = G, i.kill()._gc = !1, i._first = i._last = i._recent = null, i._sortChildren = !1, i.add = i.insert = function(a, b, c, d) { var e, f; if (a._startTime = Number(b || 0) + a._delay, a._paused && this !== a._timeline && (a._pauseTime = this.rawTime() - (a._timeline.rawTime() - a._pauseTime)), a.timeline && a.timeline._remove(a, !0), a.timeline = a._timeline = this, a._gc && a._enabled(!0, !0), e = this._last, this._sortChildren) for (f = a._startTime; e && e._startTime > f;) e = e._prev; return e ? (a._next = e._next, e._next = a) : (a._next = this._first, this._first = a), a._next ? a._next._prev = a : this._last = a, a._prev = e, this._recent = a, this._timeline && this._uncache(!0), this }, i._remove = function(a, b) { return a.timeline === this && (b || a._enabled(!1, !0), a._prev ? a._prev._next = a._next : this._first === a && (this._first = a._next), a._next ? a._next._prev = a._prev : this._last === a && (this._last = a._prev), a._next = a._prev = a.timeline = null, a === this._recent && (this._recent = this._last), this._timeline && this._uncache(!0)), this }, i.render = function(a, b, c) { var d, e = this._first; for (this._totalTime = this._time = this._rawPrevTime = a; e;) d = e._next, (e._active || a >= e._startTime && !e._paused && !e._gc) && (e._reversed ? e.render((e._dirty ? e.totalDuration() : e._totalDuration) - (a - e._startTime) * e._timeScale, b, c) : e.render((a - e._startTime) * e._timeScale, b, c)), e = d }, i.rawTime = function() { return k || j.wake(), this._totalTime }; var H = u("TweenLite", function(b, c, d) { if (E.call(this, c, d), this.render = H.prototype.render, null == b) throw "Cannot tween a null target."; this.target = b = "string" != typeof b ? b : H.selector(b) || b; var e, f, g, h = b.jquery || b.length && b !== a && b[0] && (b[0] === a || b[0].nodeType && b[0].style && !b.nodeType), i = this.vars.overwrite; if (this._overwrite = i = null == i ? X[H.defaultOverwrite] : "number" == typeof i ? i >> 0 : X[i], (h || b instanceof Array || b.push && q(b)) && "number" != typeof b[0]) for (this._targets = g = o(b), this._propLookup = [], this._siblings = [], e = 0; e < g.length; e++) f = g[e], f ? "string" != typeof f ? f.length && f !== a && f[0] && (f[0] === a || f[0].nodeType && f[0].style && !f.nodeType) ? (g.splice(e--, 1), this._targets = g = g.concat(o(f))) : (this._siblings[e] = aa(f, this, !1), 1 === i && this._siblings[e].length > 1 && ca(f, this, null, 1, this._siblings[e])) : (f = g[e--] = H.selector(f), "string" == typeof f && g.splice(e + 1, 1)) : g.splice(e--, 1); else this._propLookup = {}, this._siblings = aa(b, this, !1), 1 === i && this._siblings.length > 1 && ca(b, this, null, 1, this._siblings); (this.vars.immediateRender || 0 === c && 0 === this._delay && this.vars.immediateRender !== !1) && (this._time = -n, this.render(Math.min(0, -this._delay))) }, !0), I = function(b) { return b && b.length && b !== a && b[0] && (b[0] === a || b[0].nodeType && b[0].style && !b.nodeType) }, J = function(a, b) { var c, d = {}; for (c in a) W[c] || c in b && "transform" !== c && "x" !== c && "y" !== c && "width" !== c && "height" !== c && "className" !== c && "border" !== c || !(!T[c] || T[c] && T[c]._autoCSS) || (d[c] = a[c], delete a[c]); a.css = d }; i = H.prototype = new E, i.constructor = H, i.kill()._gc = !1, i.ratio = 0, i._firstPT = i._targets = i._overwrittenProps = i._startAt = null, i._notifyPluginsOfEnabled = i._lazy = !1, H.version = "2.1.3", H.defaultEase = i._ease = new w(null, null, 1, 1), H.defaultOverwrite = "auto", H.ticker = j, H.autoSleep = 120, H.lagSmoothing = function(a, b) { j.lagSmoothing(a, b) }, H.selector = a.$ || a.jQuery || function(b) { var c = a.$ || a.jQuery; return c ? (H.selector = c, c(b)) : (d || (d = a.document), d ? d.querySelectorAll ? d.querySelectorAll(b) : d.getElementById("#" === b.charAt(0) ? b.substr(1) : b) : b) }; var K = [], L = {}, M = /(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi, N = /[\+-]=-?[\.\d]/, O = function(a) { for (var b, c = this._firstPT, d = 1e-6; c;) b = c.blob ? 1 === a && null != this.end ? this.end : a ? this.join("") : this.start : c.c * a + c.s, c.m ? b = c.m.call(this._tween, b, this._target || c.t, this._tween) : d > b && b > -d && !c.blob && (b = 0), c.f ? c.fp ? c.t[c.p](c.fp, b) : c.t[c.p](b) : c.t[c.p] = b, c = c._next }, P = function(a) { return (1e3 * a | 0) / 1e3 + "" }, Q = function(a, b, c, d) { var e, f, g, h, i, j, k, l = [], m = 0, n = "", o = 0; for (l.start = a, l.end = b, a = l[0] = a + "", b = l[1] = b + "", c && (c(l), a = l[0], b = l[1]), l.length = 0, e = a.match(M) || [], f = b.match(M) || [], d && (d._next = null, d.blob = 1, l._firstPT = l._applyPT = d), i = f.length, h = 0; i > h; h++) k = f[h], j = b.substr(m, b.indexOf(k, m) - m), n += j || !h ? j : ",", m += j.length, o ? o = (o + 1) % 5 : "rgba(" === j.substr(-5) && (o = 1), k === e[h] || e.length <= h ? n += k : (n && (l.push(n), n = ""), g = parseFloat(e[h]), l.push(g), l._firstPT = { _next: l._firstPT, t: l, p: l.length - 1, s: g, c: ("=" === k.charAt(1) ? parseInt(k.charAt(0) + "1", 10) * parseFloat(k.substr(2)) : parseFloat(k) - g) || 0, f: 0, m: o && 4 > o ? Math.round : P }), m += k.length; return n += b.substr(m), n && l.push(n), l.setRatio = O, N.test(b) && (l.end = null), l }, R = function(a, b, c, d, e, f, g, h, i) { "function" == typeof d && (d = d(i || 0, a)); var j, k = typeof a[b], l = "function" !== k ? "" : b.indexOf("set") || "function" != typeof a["get" + b.substr(3)] ? b : "get" + b.substr(3), m = "get" !== c ? c : l ? g ? a[l](g) : a[l]() : a[b], n = "string" == typeof d && "=" === d.charAt(1), o = { t: a, p: b, s: m, f: "function" === k, pg: 0, n: e || b, m: f ? "function" == typeof f ? f : Math.round : 0, pr: 0, c: n ? parseInt(d.charAt(0) + "1", 10) * parseFloat(d.substr(2)) : parseFloat(d) - m || 0 }; return ("number" != typeof m || "number" != typeof d && !n) && (g || isNaN(m) || !n && isNaN(d) || "boolean" == typeof m || "boolean" == typeof d ? (o.fp = g, j = Q(m, n ? parseFloat(o.s) + o.c + (o.s + "").replace(/[0-9\-\.]/g, "") : d, h || H.defaultStringFilter, o), o = { t: j, p: "setRatio", s: 0, c: 1, f: 2, pg: 0, n: e || b, pr: 0, m: 0 }) : (o.s = parseFloat(m), n || (o.c = parseFloat(d) - o.s || 0))), o.c ? ((o._next = this._firstPT) && (o._next._prev = o), this._firstPT = o, o) : void 0 }, S = H._internals = { isArray: q, isSelector: I, lazyTweens: K, blobDif: Q }, T = H._plugins = {}, U = S.tweenLookup = {}, V = 0, W = S.reservedProps = { ease: 1, delay: 1, overwrite: 1, onComplete: 1, onCompleteParams: 1, onCompleteScope: 1, useFrames: 1, runBackwards: 1, startAt: 1, onUpdate: 1, onUpdateParams: 1, onUpdateScope: 1, onStart: 1, onStartParams: 1, onStartScope: 1, onReverseComplete: 1, onReverseCompleteParams: 1, onReverseCompleteScope: 1, onRepeat: 1, onRepeatParams: 1, onRepeatScope: 1, easeParams: 1, yoyo: 1, immediateRender: 1, repeat: 1, repeatDelay: 1, data: 1, paused: 1, reversed: 1, autoCSS: 1, lazy: 1, onOverwrite: 1, callbackScope: 1, stringFilter: 1, id: 1, yoyoEase: 1, stagger: 1 }, X = { none: 0, all: 1, auto: 2, concurrent: 3, allOnStart: 4, preexisting: 5, "true": 1, "false": 0 }, Y = E._rootFramesTimeline = new G, Z = E._rootTimeline = new G, $ = 30, _ = S.lazyRender = function() { var a, b, c = K.length; for (L = {}, a = 0; c > a; a++) b = K[a], b && b._lazy !== !1 && (b.render(b._lazy[0], b._lazy[1], !0), b._lazy = !1); K.length = 0 }; Z._startTime = j.time, Y._startTime = j.frame, Z._active = Y._active = !0, setTimeout(_, 1), E._updateRoot = H.render = function() { var a, b, c; if (K.length && _(), Z.render((j.time - Z._startTime) * Z._timeScale, !1, !1), Y.render((j.frame - Y._startTime) * Y._timeScale, !1, !1), K.length && _(), j.frame >= $) { $ = j.frame + (parseInt(H.autoSleep, 10) || 120); for (c in U) { for (b = U[c].tweens, a = b.length; --a > -1;) b[a]._gc && b.splice(a, 1); 0 === b.length && delete U[c] } if (c = Z._first, (!c || c._paused) && H.autoSleep && !Y._first && 1 === j._listeners.tick.length) { for (; c && c._paused;) c = c._next; c || j.sleep() } } }, j.addEventListener("tick", E._updateRoot); var aa = function(a, b, c) { var d, e, f = a._gsTweenID; if (U[f || (a._gsTweenID = f = "t" + V++)] || (U[f] = { target: a, tweens: [] }), b && (d = U[f].tweens, d[e = d.length] = b, c)) for (; --e > -1;) d[e] === b && d.splice(e, 1); return U[f].tweens }, ba = function(a, b, c, d) { var e, f, g = a.vars.onOverwrite; return g && (e = g(a, b, c, d)), g = H.onOverwrite, g && (f = g(a, b, c, d)), e !== !1 && f !== !1 }, ca = function(a, b, c, d, e) { var f, g, h, i; if (1 === d || d >= 4) { for (i = e.length, f = 0; i > f; f++) if ((h = e[f]) !== b) h._gc || h._kill(null, a, b) && (g = !0); else if (5 === d) break; return g } var j, k = b._startTime + n, l = [], m = 0, o = 0 === b._duration; for (f = e.length; --f > -1;)(h = e[f]) === b || h._gc || h._paused || (h._timeline !== b._timeline ? (j = j || da(b, 0, o), 0 === da(h, j, o) && (l[m++] = h)) : h._startTime <= k && h._startTime + h.totalDuration() / h._timeScale > k && ((o || !h._initted) && k - h._startTime <= 2 * n || (l[m++] = h))); for (f = m; --f > -1;) if (h = l[f], i = h._firstPT, 2 === d && h._kill(c, a, b) && (g = !0), 2 !== d || !h._firstPT && h._initted && i) { if (2 !== d && !ba(h, b)) continue; h._enabled(!1, !1) && (g = !0) } return g }, da = function(a, b, c) { for (var d = a._timeline, e = d._timeScale, f = a._startTime; d._timeline;) { if (f += d._startTime, e *= d._timeScale, d._paused) return -100; d = d._timeline } return f /= e, f > b ? f - b : c && f === b || !a._initted && 2 * n > f - b ? n : (f += a.totalDuration() / a._timeScale / e) > b + n ? 0 : f - b - n }; i._init = function() { var a, b, c, d, e, f, g = this.vars, h = this._overwrittenProps, i = this._duration, j = !!g.immediateRender, k = g.ease, l = this._startAt; if (g.startAt) { l && (l.render(-1, !0), l.kill()), e = {}; for (d in g.startAt) e[d] = g.startAt[d]; if (e.data = "isStart", e.overwrite = !1, e.immediateRender = !0, e.lazy = j && g.lazy !== !1, e.startAt = e.delay = null, e.onUpdate = g.onUpdate, e.onUpdateParams = g.onUpdateParams, e.onUpdateScope = g.onUpdateScope || g.callbackScope || this, this._startAt = H.to(this.target || {}, 0, e), j) if (this._time > 0) this._startAt = null; else if (0 !== i) return } else if (g.runBackwards && 0 !== i) if (l) l.render(-1, !0), l.kill(), this._startAt = null; else { 0 !== this._time && (j = !1), c = {}; for (d in g) W[d] && "autoCSS" !== d || (c[d] = g[d]); if (c.overwrite = 0, c.data = "isFromStart", c.lazy = j && g.lazy !== !1, c.immediateRender = j, this._startAt = H.to(this.target, 0, c), j) { if (0 === this._time) return } else this._startAt._init(), this._startAt._enabled(!1), this.vars.immediateRender && (this._startAt = null) } if (this._ease = k = k ? k instanceof w ? k : "function" == typeof k ? new w(k, g.easeParams) : x[k] || H.defaultEase : H.defaultEase, g.easeParams instanceof Array && k.config && (this._ease = k.config.apply(k, g.easeParams)), this._easeType = this._ease._type, this._easePower = this._ease._power, this._firstPT = null, this._targets) for (f = this._targets.length, a = 0; f > a; a++) this._initProps(this._targets[a], this._propLookup[a] = {}, this._siblings[a], h ? h[a] : null, a) && (b = !0); else b = this._initProps(this.target, this._propLookup, this._siblings, h, 0); if (b && H._onPluginEvent("_onInitAllProps", this), h && (this._firstPT || "function" != typeof this.target && this._enabled(!1, !1)), g.runBackwards) for (c = this._firstPT; c;) c.s += c.c, c.c = -c.c, c = c._next; this._onUpdate = g.onUpdate, this._initted = !0 }, i._initProps = function(b, c, d, e, f) { var g, h, i, j, k, l; if (null == b) return !1; L[b._gsTweenID] && _(), this.vars.css || b.style && b !== a && b.nodeType && T.css && this.vars.autoCSS !== !1 && J(this.vars, b); for (g in this.vars) if (l = this.vars[g], W[g]) l && (l instanceof Array || l.push && q(l)) && -1 !== l.join("").indexOf("{self}") && (this.vars[g] = l = this._swapSelfInParams(l, this)); else if (T[g] && (j = new T[g])._onInitTween(b, this.vars[g], this, f)) { for (this._firstPT = k = { _next: this._firstPT, t: j, p: "setRatio", s: 0, c: 1, f: 1, n: g, pg: 1, pr: j._priority, m: 0 }, h = j._overwriteProps.length; --h > -1;) c[j._overwriteProps[h]] = this._firstPT; (j._priority || j._onInitAllProps) && (i = !0), (j._onDisable || j._onEnable) && (this._notifyPluginsOfEnabled = !0), k._next && (k._next._prev = k) } else c[g] = R.call(this, b, g, "get", l, g, 0, null, this.vars.stringFilter, f); return e && this._kill(e, b) ? this._initProps(b, c, d, e, f) : this._overwrite > 1 && this._firstPT && d.length > 1 && ca(b, this, c, this._overwrite, d) ? (this._kill(c, b), this._initProps(b, c, d, e, f)) : (this._firstPT && (this.vars.lazy !== !1 && this._duration || this.vars.lazy && !this._duration) && (L[b._gsTweenID] = !0), i) }, i.render = function(a, b, c) { var d, e, f, g, h = this, i = h._time, j = h._duration, k = h._rawPrevTime; if (a >= j - n && a >= 0) h._totalTime = h._time = j, h.ratio = h._ease._calcEnd ? h._ease.getRatio(1) : 1, h._reversed || (d = !0, e = "onComplete", c = c || h._timeline.autoRemoveChildren), 0 === j && (h._initted || !h.vars.lazy || c) && (h._startTime === h._timeline._duration && (a = 0), (0 > k || 0 >= a && a >= -n || k === n && "isPause" !== h.data) && k !== a && (c = !0, k > n && (e = "onReverseComplete")), h._rawPrevTime = g = !b || a || k === a ? a : n); else if (n > a) h._totalTime = h._time = 0, h.ratio = h._ease._calcEnd ? h._ease.getRatio(0) : 0, (0 !== i || 0 === j && k > 0) && (e = "onReverseComplete", d = h._reversed), a > -n ? a = 0 : 0 > a && (h._active = !1, 0 === j && (h._initted || !h.vars.lazy || c) && (k >= 0 && (k !== n || "isPause" !== h.data) && (c = !0), h._rawPrevTime = g = !b || a || k === a ? a : n)), (!h._initted || h._startAt && h._startAt.progress()) && (c = !0); else if (h._totalTime = h._time = a, h._easeType) { var l = a / j, m = h._easeType, o = h._easePower; (1 === m || 3 === m && l >= .5) && (l = 1 - l), 3 === m && (l *= 2), 1 === o ? l *= l : 2 === o ? l *= l * l : 3 === o ? l *= l * l * l : 4 === o && (l *= l * l * l * l), h.ratio = 1 === m ? 1 - l : 2 === m ? l : .5 > a / j ? l / 2 : 1 - l / 2 } else h.ratio = h._ease.getRatio(a / j); if (h._time !== i || c) { if (!h._initted) { if (h._init(), !h._initted || h._gc) return; if (!c && h._firstPT && (h.vars.lazy !== !1 && h._duration || h.vars.lazy && !h._duration)) return h._time = h._totalTime = i, h._rawPrevTime = k, K.push(h), void(h._lazy = [a, b]); h._time && !d ? h.ratio = h._ease.getRatio(h._time / j) : d && h._ease._calcEnd && (h.ratio = h._ease.getRatio(0 === h._time ? 0 : 1)) } for (h._lazy !== !1 && (h._lazy = !1), h._active || !h._paused && h._time !== i && a >= 0 && (h._active = !0), 0 === i && (h._startAt && (a >= 0 ? h._startAt.render(a, !0, c) : e || (e = "_dummyGS")), h.vars.onStart && (0 !== h._time || 0 === j) && (b || h._callback("onStart"))), f = h._firstPT; f;) f.f ? f.t[f.p](f.c * h.ratio + f.s) : f.t[f.p] = f.c * h.ratio + f.s, f = f._next; h._onUpdate && (0 > a && h._startAt && a !== -1e-4 && h._startAt.render(a, !0, c), b || (h._time !== i || d || c) && h._callback("onUpdate")), e && (!h._gc || c) && (0 > a && h._startAt && !h._onUpdate && a !== -1e-4 && h._startAt.render(a, !0, c), d && (h._timeline.autoRemoveChildren && h._enabled(!1, !1), h._active = !1), !b && h.vars[e] && h._callback(e), 0 === j && h._rawPrevTime === n && g !== n && (h._rawPrevTime = 0)) } }, i._kill = function(a, b, c) { if ("all" === a && (a = null), null == a && (null == b || b === this.target)) return this._lazy = !1, this._enabled(!1, !1); b = "string" != typeof b ? b || this._targets || this.target : H.selector(b) || b; var d, e, f, g, h, i, j, k, l, m = c && this._time && c._startTime === this._startTime && this._timeline === c._timeline, n = this._firstPT; if ((q(b) || I(b)) && "number" != typeof b[0]) for (d = b.length; --d > -1;) this._kill(a, b[d], c) && (i = !0); else { if (this._targets) { for (d = this._targets.length; --d > -1;) if (b === this._targets[d]) { h = this._propLookup[d] || {}, this._overwrittenProps = this._overwrittenProps || [], e = this._overwrittenProps[d] = a ? this._overwrittenProps[d] || {} : "all"; break } } else { if (b !== this.target) return !1; h = this._propLookup, e = this._overwrittenProps = a ? this._overwrittenProps || {} : "all" } if (h) { if (j = a || h, k = a !== e && "all" !== e && a !== h && ("object" != typeof a || !a._tempKill), c && (H.onOverwrite || this.vars.onOverwrite)) { for (f in j) h[f] && (l || (l = []), l.push(f)); if ((l || !a) && !ba(this, c, b, l)) return !1 } for (f in j)(g = h[f]) && (m && (g.f ? g.t[g.p](g.s) : g.t[g.p] = g.s, i = !0), g.pg && g.t._kill(j) && (i = !0), g.pg && 0 !== g.t._overwriteProps.length || (g._prev ? g._prev._next = g._next : g === this._firstPT && (this._firstPT = g._next), g._next && (g._next._prev = g._prev), g._next = g._prev = null), delete h[f]), k && (e[f] = 1); !this._firstPT && this._initted && n && this._enabled(!1, !1) } } return i }, i.invalidate = function() { this._notifyPluginsOfEnabled && H._onPluginEvent("_onDisable", this); var a = this._time; return this._firstPT = this._overwrittenProps = this._startAt = this._onUpdate = null, this._notifyPluginsOfEnabled = this._active = this._lazy = !1, this._propLookup = this._targets ? {} : [], E.prototype.invalidate.call(this), this.vars.immediateRender && (this._time = -n, this.render(a, !1, this.vars.lazy !== !1)), this }, i._enabled = function(a, b) { if (k || j.wake(), a && this._gc) { var c, d = this._targets; if (d) for (c = d.length; --c > -1;) this._siblings[c] = aa(d[c], this, !0); else this._siblings = aa(this.target, this, !0) } return E.prototype._enabled.call(this, a, b), this._notifyPluginsOfEnabled && this._firstPT ? H._onPluginEvent(a ? "_onEnable" : "_onDisable", this) : !1 }, H.to = function(a, b, c) { return new H(a, b, c) }, H.from = function(a, b, c) { return c.runBackwards = !0, c.immediateRender = 0 != c.immediateRender, new H(a, b, c) }, H.fromTo = function(a, b, c, d) { return d.startAt = c, d.immediateRender = 0 != d.immediateRender && 0 != c.immediateRender, new H(a, b, d) }, H.delayedCall = function(a, b, c, d, e) { return new H(b, 0, { delay: a, onComplete: b, onCompleteParams: c, callbackScope: d, onReverseComplete: b, onReverseCompleteParams: c, immediateRender: !1, lazy: !1, useFrames: e, overwrite: 0 }) }, H.set = function(a, b) { return new H(a, 0, b) }, H.getTweensOf = function(a, b) { if (null == a) return []; a = "string" != typeof a ? a : H.selector(a) || a; var c, d, e, f; if ((q(a) || I(a)) && "number" != typeof a[0]) { for (c = a.length, d = []; --c > -1;) d = d.concat(H.getTweensOf(a[c], b)); for (c = d.length; --c > -1;) for (f = d[c], e = c; --e > -1;) f === d[e] && d.splice(c, 1) } else if (a._gsTweenID) for (d = aa(a).concat(), c = d.length; --c > -1;)(d[c]._gc || b && !d[c].isActive()) && d.splice(c, 1); return d || [] }, H.killTweensOf = H.killDelayedCallsTo = function(a, b, c) { "object" == typeof b && (c = b, b = !1); for (var d = H.getTweensOf(a, b), e = d.length; --e > -1;) d[e]._kill(c, a) }; var ea = u("plugins.TweenPlugin", function(a, b) { this._overwriteProps = (a || "").split(","), this._propName = this._overwriteProps[0], this._priority = b || 0, this._super = ea.prototype }, !0); if (i = ea.prototype, ea.version = "1.19.0", ea.API = 2, i._firstPT = null, i._addTween = R, i.setRatio = O, i._kill = function(a) { var b, c = this._overwriteProps, d = this._firstPT; if (null != a[this._propName]) this._overwriteProps = []; else for (b = c.length; --b > -1;) null != a[c[b]] && c.splice(b, 1); for (; d;) null != a[d.n] && (d._next && (d._next._prev = d._prev), d._prev ? (d._prev._next = d._next, d._prev = null) : this._firstPT === d && (this._firstPT = d._next)), d = d._next; return !1 }, i._mod = i._roundProps = function(a) { for (var b, c = this._firstPT; c;) b = a[this._propName] || null != c.n && a[c.n.split(this._propName + "_").join("")], b && "function" == typeof b && (2 === c.f ? c.t._applyPT.m = b : c.m = b), c = c._next }, H._onPluginEvent = function(a, b) { var c, d, e, f, g, h = b._firstPT; if ("_onInitAllProps" === a) { for (; h;) { for (g = h._next, d = e; d && d.pr > h.pr;) d = d._next; (h._prev = d ? d._prev : f) ? h._prev._next = h: e = h, (h._next = d) ? d._prev = h : f = h, h = g } h = b._firstPT = e } for (; h;) h.pg && "function" == typeof h.t[a] && h.t[a]() && (c = !0), h = h._next; return c }, ea.activate = function(a) { for (var b = a.length; --b > -1;) a[b].API === ea.API && (T[(new a[b])._propName] = a[b]); return !0 }, t.plugin = function(a) { if (!(a && a.propName && a.init && a.API)) throw "illegal plugin definition."; var b, c = a.propName, d = a.priority || 0, e = a.overwriteProps, f = { init: "_onInitTween", set: "setRatio", kill: "_kill", round: "_mod", mod: "_mod", initAll: "_onInitAllProps" }, g = u("plugins." + c.charAt(0).toUpperCase() + c.substr(1) + "Plugin", function() { ea.call(this, c, d), this._overwriteProps = e || [] }, a.global === !0), h = g.prototype = new ea(c); h.constructor = g, g.API = a.API; for (b in f) "function" == typeof a[b] && (h[f[b]] = a[b]); return g.version = a.version, ea.activate([g]), g }, g = a._gsQueue) { for (h = 0; h < g.length; h++) g[h](); for (i in r) r[i].func || a.console.log("GSAP encountered missing dependency: " + i) } k = !1 }("undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window, "TweenMax");; ! function(a, b, c, d) { function e(b, c) { this.settings = null, this.options = a.extend({}, e.Defaults, c), this.$element = a(b), this._handlers = {}, this._plugins = {}, this._supress = {}, this._current = null, this._speed = null, this._coordinates = [], this._breakpoint = null, this._width = null, this._items = [], this._clones = [], this._mergers = [], this._widths = [], this._invalidated = {}, this._pipe = [], this._drag = { time: null, target: null, pointer: null, stage: { start: null, current: null }, direction: null }, this._states = { current: {}, tags: { initializing: ["busy"], animating: ["busy"], dragging: ["interacting"] } }, a.each(["onResize", "onThrottledResize"], a.proxy(function(b, c) { this._handlers[c] = a.proxy(this[c], this) }, this)), a.each(e.Plugins, a.proxy(function(a, b) { this._plugins[a.charAt(0).toLowerCase() + a.slice(1)] = new b(this) }, this)), a.each(e.Workers, a.proxy(function(b, c) { this._pipe.push({ filter: c.filter, run: a.proxy(c.run, this) }) }, this)), this.setup(), this.initialize() } e.Defaults = { items: 3, loop: !1, center: !1, rewind: !1, checkVisibility: !0, mouseDrag: !0, touchDrag: !0, pullDrag: !0, freeDrag: !1, margin: 0, stagePadding: 0, merge: !1, mergeFit: !0, autoWidth: !1, startPosition: 0, rtl: !1, smartSpeed: 250, fluidSpeed: !1, dragEndSpeed: !1, responsive: {}, responsiveRefreshRate: 200, responsiveBaseElement: b, fallbackEasing: "swing", slideTransition: "", info: !1, nestedItemSelector: !1, itemElement: "div", stageElement: "div", refreshClass: "owl-refresh", loadedClass: "owl-loaded", loadingClass: "owl-loading", rtlClass: "owl-rtl", responsiveClass: "owl-responsive", dragClass: "owl-drag", itemClass: "owl-item", stageClass: "owl-stage", stageOuterClass: "owl-stage-outer", grabClass: "owl-grab" }, e.Width = { Default: "default", Inner: "inner", Outer: "outer" }, e.Type = { Event: "event", State: "state" }, e.Plugins = {}, e.Workers = [{ filter: ["width", "settings"], run: function() { this._width = this.$element.width() } }, { filter: ["width", "items", "settings"], run: function(a) { a.current = this._items && this._items[this.relative(this._current)] } }, { filter: ["items", "settings"], run: function() { this.$stage.children(".cloned").remove() } }, { filter: ["width", "items", "settings"], run: function(a) { var b = this.settings.margin || "", c = !this.settings.autoWidth, d = this.settings.rtl, e = { width: "auto", "margin-left": d ? b : "", "margin-right": d ? "" : b }; !c && this.$stage.children().css(e), a.css = e } }, { filter: ["width", "items", "settings"], run: function(a) { var b = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, c = null, d = this._items.length, e = !this.settings.autoWidth, f = []; for (a.items = { merge: !1, width: b }; d--;) c = this._mergers[d], c = this.settings.mergeFit && Math.min(c, this.settings.items) || c, a.items.merge = c > 1 || a.items.merge, f[d] = e ? b * c : this._items[d].width(); this._widths = f } }, { filter: ["items", "settings"], run: function() { var b = [], c = this._items, d = this.settings, e = Math.max(2 * d.items, 4), f = 2 * Math.ceil(c.length / 2), g = d.loop && c.length ? d.rewind ? e : Math.max(e, f) : 0, h = "", i = ""; for (g /= 2; g > 0;) b.push(this.normalize(b.length / 2, !0)), h += c[b[b.length - 1]][0].outerHTML, b.push(this.normalize(c.length - 1 - (b.length - 1) / 2, !0)), i = c[b[b.length - 1]][0].outerHTML + i, g -= 1; this._clones = b, a(h).addClass("cloned").appendTo(this.$stage), a(i).addClass("cloned").prependTo(this.$stage) } }, { filter: ["width", "items", "settings"], run: function() { for (var a = this.settings.rtl ? 1 : -1, b = this._clones.length + this._items.length, c = -1, d = 0, e = 0, f = []; ++c < b;) d = f[c - 1] || 0, e = this._widths[this.relative(c)] + this.settings.margin, f.push(d + e * a); this._coordinates = f } }, { filter: ["width", "items", "settings"], run: function() { var a = this.settings.stagePadding, b = this._coordinates, c = { width: Math.ceil(Math.abs(b[b.length - 1])) + 2 * a, "padding-left": a || "", "padding-right": a || "" }; this.$stage.css(c) } }, { filter: ["width", "items", "settings"], run: function(a) { var b = this._coordinates.length, c = !this.settings.autoWidth, d = this.$stage.children(); if (c && a.items.merge) for (; b--;) a.css.width = this._widths[this.relative(b)], d.eq(b).css(a.css); else c && (a.css.width = a.items.width, d.css(a.css)) } }, { filter: ["items"], run: function() { this._coordinates.length < 1 && this.$stage.removeAttr("style") } }, { filter: ["width", "items", "settings"], run: function(a) { a.current = a.current ? this.$stage.children().index(a.current) : 0, a.current = Math.max(this.minimum(), Math.min(this.maximum(), a.current)), this.reset(a.current) } }, { filter: ["position"], run: function() { this.animate(this.coordinates(this._current)) } }, { filter: ["width", "position", "items", "settings"], run: function() { var a, b, c, d, e = this.settings.rtl ? 1 : -1, f = 2 * this.settings.stagePadding, g = this.coordinates(this.current()) + f, h = g + this.width() * e, i = []; for (c = 0, d = this._coordinates.length; c < d; c++) a = this._coordinates[c - 1] || 0, b = Math.abs(this._coordinates[c]) + f * e, (this.op(a, "<=", g) && this.op(a, ">", h) || this.op(b, "<", g) && this.op(b, ">", h)) && i.push(c); this.$stage.children(".active").removeClass("active"), this.$stage.children(":eq(" + i.join("), :eq(") + ")").addClass("active"), this.$stage.children(".center").removeClass("center"), this.settings.center && this.$stage.children().eq(this.current()).addClass("center") } }], e.prototype.initializeStage = function() { this.$stage = this.$element.find("." + this.settings.stageClass), this.$stage.length || (this.$element.addClass(this.options.loadingClass), this.$stage = a("<" + this.settings.stageElement + ">", { class: this.settings.stageClass }).wrap(a("
", { class: this.settings.stageOuterClass })), this.$element.append(this.$stage.parent())) }, e.prototype.initializeItems = function() { var b = this.$element.find(".owl-item"); if (b.length) return this._items = b.get().map(function(b) { return a(b) }), this._mergers = this._items.map(function() { return 1 }), void this.refresh(); this.replace(this.$element.children().not(this.$stage.parent())), this.isVisible() ? this.refresh() : this.invalidate("width"), this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass) }, e.prototype.initialize = function() { if (this.enter("initializing"), this.trigger("initialize"), this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl), this.settings.autoWidth && !this.is("pre-loading")) { var a, b, c; a = this.$element.find("img"), b = this.settings.nestedItemSelector ? "." + this.settings.nestedItemSelector : d, c = this.$element.children(b).width(), a.length && c <= 0 && this.preloadAutoWidthImages(a) } this.initializeStage(), this.initializeItems(), this.registerEventHandlers(), this.leave("initializing"), this.trigger("initialized") }, e.prototype.isVisible = function() { return !this.settings.checkVisibility || this.$element.is(":visible") }, e.prototype.setup = function() { var b = this.viewport(), c = this.options.responsive, d = -1, e = null; c ? (a.each(c, function(a) { a <= b && a > d && (d = Number(a)) }), e = a.extend({}, this.options, c[d]), "function" == typeof e.stagePadding && (e.stagePadding = e.stagePadding()), delete e.responsive, e.responsiveClass && this.$element.attr("class", this.$element.attr("class").replace(new RegExp("(" + this.options.responsiveClass + "-)\\S+\\s", "g"), "$1" + d))) : e = a.extend({}, this.options), this.trigger("change", { property: { name: "settings", value: e } }), this._breakpoint = d, this.settings = e, this.invalidate("settings"), this.trigger("changed", { property: { name: "settings", value: this.settings } }) }, e.prototype.optionsLogic = function() { this.settings.autoWidth && (this.settings.stagePadding = !1, this.settings.merge = !1) }, e.prototype.prepare = function(b) { var c = this.trigger("prepare", { content: b }); return c.data || (c.data = a("<" + this.settings.itemElement + "/>").addClass(this.options.itemClass).append(b)), this.trigger("prepared", { content: c.data }), c.data }, e.prototype.update = function() { for (var b = 0, c = this._pipe.length, d = a.proxy(function(a) { return this[a] }, this._invalidated), e = {}; b < c;)(this._invalidated.all || a.grep(this._pipe[b].filter, d).length > 0) && this._pipe[b].run(e), b++; this._invalidated = {}, !this.is("valid") && this.enter("valid") }, e.prototype.width = function(a) { switch (a = a || e.Width.Default) { case e.Width.Inner: case e.Width.Outer: return this._width; default: return this._width - 2 * this.settings.stagePadding + this.settings.margin } }, e.prototype.refresh = function() { this.enter("refreshing"), this.trigger("refresh"), this.setup(), this.optionsLogic(), this.$element.addClass(this.options.refreshClass), this.update(), this.$element.removeClass(this.options.refreshClass), this.leave("refreshing"), this.trigger("refreshed") }, e.prototype.onThrottledResize = function() { b.clearTimeout(this.resizeTimer), this.resizeTimer = b.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate) }, e.prototype.onResize = function() { return !!this._items.length && (this._width !== this.$element.width() && (!!this.isVisible() && (this.enter("resizing"), this.trigger("resize").isDefaultPrevented() ? (this.leave("resizing"), !1) : (this.invalidate("width"), this.refresh(), this.leave("resizing"), void this.trigger("resized"))))) }, e.prototype.registerEventHandlers = function() { a.support.transition && this.$stage.on(a.support.transition.end + ".owl.core", a.proxy(this.onTransitionEnd, this)), !1 !== this.settings.responsive && this.on(b, "resize", this._handlers.onThrottledResize), this.settings.mouseDrag && (this.$element.addClass(this.options.dragClass), this.$stage.on("mousedown.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("dragstart.owl.core selectstart.owl.core", function() { return !1 })), this.settings.touchDrag && (this.$stage.on("touchstart.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("touchcancel.owl.core", a.proxy(this.onDragEnd, this))) }, e.prototype.onDragStart = function(b) { var d = null; 3 !== b.which && (a.support.transform ? (d = this.$stage.css("transform").replace(/.*\(|\)| /g, "").split(","), d = { x: d[16 === d.length ? 12 : 4], y: d[16 === d.length ? 13 : 5] }) : (d = this.$stage.position(), d = { x: this.settings.rtl ? d.left + this.$stage.width() - this.width() + this.settings.margin : d.left, y: d.top }), this.is("animating") && (a.support.transform ? this.animate(d.x) : this.$stage.stop(), this.invalidate("position")), this.$element.toggleClass(this.options.grabClass, "mousedown" === b.type), this.speed(0), this._drag.time = (new Date).getTime(), this._drag.target = a(b.target), this._drag.stage.start = d, this._drag.stage.current = d, this._drag.pointer = this.pointer(b), a(c).on("mouseup.owl.core touchend.owl.core", a.proxy(this.onDragEnd, this)), a(c).one("mousemove.owl.core touchmove.owl.core", a.proxy(function(b) { var d = this.difference(this._drag.pointer, this.pointer(b)); a(c).on("mousemove.owl.core touchmove.owl.core", a.proxy(this.onDragMove, this)), Math.abs(d.x) < Math.abs(d.y) && this.is("valid") || (b.preventDefault(), this.enter("dragging"), this.trigger("drag")) }, this))) }, e.prototype.onDragMove = function(a) { var b = null, c = null, d = null, e = this.difference(this._drag.pointer, this.pointer(a)), f = this.difference(this._drag.stage.start, e); this.is("dragging") && (a.preventDefault(), this.settings.loop ? (b = this.coordinates(this.minimum()), c = this.coordinates(this.maximum() + 1) - b, f.x = ((f.x - b) % c + c) % c + b) : (b = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()), c = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()), d = this.settings.pullDrag ? -1 * e.x / 5 : 0, f.x = Math.max(Math.min(f.x, b + d), c + d)), this._drag.stage.current = f, this.animate(f.x)) }, e.prototype.onDragEnd = function(b) { var d = this.difference(this._drag.pointer, this.pointer(b)), e = this._drag.stage.current, f = d.x > 0 ^ this.settings.rtl ? "left" : "right"; a(c).off(".owl.core"), this.$element.removeClass(this.options.grabClass), (0 !== d.x && this.is("dragging") || !this.is("valid")) && (this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed), this.current(this.closest(e.x, 0 !== d.x ? f : this._drag.direction)), this.invalidate("position"), this.update(), this._drag.direction = f, (Math.abs(d.x) > 3 || (new Date).getTime() - this._drag.time > 300) && this._drag.target.one("click.owl.core", function() { return !1 })), this.is("dragging") && (this.leave("dragging"), this.trigger("dragged")) }, e.prototype.closest = function(b, c) { var e = -1, f = 30, g = this.width(), h = this.coordinates(); return this.settings.freeDrag || a.each(h, a.proxy(function(a, i) { return "left" === c && b > i - f && b < i + f ? e = a : "right" === c && b > i - g - f && b < i - g + f ? e = a + 1 : this.op(b, "<", i) && this.op(b, ">", h[a + 1] !== d ? h[a + 1] : i - g) && (e = "left" === c ? a + 1 : a), -1 === e }, this)), this.settings.loop || (this.op(b, ">", h[this.minimum()]) ? e = b = this.minimum() : this.op(b, "<", h[this.maximum()]) && (e = b = this.maximum())), e }, e.prototype.animate = function(b) { var c = this.speed() > 0; this.is("animating") && this.onTransitionEnd(), c && (this.enter("animating"), this.trigger("translate")), a.support.transform3d && a.support.transition ? this.$stage.css({ transform: "translate3d(" + b + "px,0px,0px)", transition: this.speed() / 1e3 + "s" + (this.settings.slideTransition ? " " + this.settings.slideTransition : "") }) : c ? this.$stage.animate({ left: b + "px" }, this.speed(), this.settings.fallbackEasing, a.proxy(this.onTransitionEnd, this)) : this.$stage.css({ left: b + "px" }) }, e.prototype.is = function(a) { return this._states.current[a] && this._states.current[a] > 0 }, e.prototype.current = function(a) { if (a === d) return this._current; if (0 === this._items.length) return d; if (a = this.normalize(a), this._current !== a) { var b = this.trigger("change", { property: { name: "position", value: a } }); b.data !== d && (a = this.normalize(b.data)), this._current = a, this.invalidate("position"), this.trigger("changed", { property: { name: "position", value: this._current } }) } return this._current }, e.prototype.invalidate = function(b) { return "string" === a.type(b) && (this._invalidated[b] = !0, this.is("valid") && this.leave("valid")), a.map(this._invalidated, function(a, b) { return b }) }, e.prototype.reset = function(a) { (a = this.normalize(a)) !== d && (this._speed = 0, this._current = a, this.suppress(["translate", "translated"]), this.animate(this.coordinates(a)), this.release(["translate", "translated"])) }, e.prototype.normalize = function(a, b) { var c = this._items.length, e = b ? 0 : this._clones.length; return !this.isNumeric(a) || c < 1 ? a = d : (a < 0 || a >= c + e) && (a = ((a - e / 2) % c + c) % c + e / 2), a }, e.prototype.relative = function(a) { return a -= this._clones.length / 2, this.normalize(a, !0) }, e.prototype.maximum = function(a) { var b, c, d, e = this.settings, f = this._coordinates.length; if (e.loop) f = this._clones.length / 2 + this._items.length - 1; else if (e.autoWidth || e.merge) { if (b = this._items.length) for (c = this._items[--b].width(), d = this.$element.width(); b-- && !((c += this._items[b].width() + this.settings.margin) > d);); f = b + 1 } else f = e.center ? this._items.length - 1 : this._items.length - e.items; return a && (f -= this._clones.length / 2), Math.max(f, 0) }, e.prototype.minimum = function(a) { return a ? 0 : this._clones.length / 2 }, e.prototype.items = function(a) { return a === d ? this._items.slice() : (a = this.normalize(a, !0), this._items[a]) }, e.prototype.mergers = function(a) { return a === d ? this._mergers.slice() : (a = this.normalize(a, !0), this._mergers[a]) }, e.prototype.clones = function(b) { var c = this._clones.length / 2, e = c + this._items.length, f = function(a) { return a % 2 == 0 ? e + a / 2 : c - (a + 1) / 2 }; return b === d ? a.map(this._clones, function(a, b) { return f(b) }) : a.map(this._clones, function(a, c) { return a === b ? f(c) : null }) }, e.prototype.speed = function(a) { return a !== d && (this._speed = a), this._speed }, e.prototype.coordinates = function(b) { var c, e = 1, f = b - 1; return b === d ? a.map(this._coordinates, a.proxy(function(a, b) { return this.coordinates(b) }, this)) : (this.settings.center ? (this.settings.rtl && (e = -1, f = b + 1), c = this._coordinates[b], c += (this.width() - c + (this._coordinates[f] || 0)) / 2 * e) : c = this._coordinates[f] || 0, c = Math.ceil(c)) }, e.prototype.duration = function(a, b, c) { return 0 === c ? 0 : Math.min(Math.max(Math.abs(b - a), 1), 6) * Math.abs(c || this.settings.smartSpeed) }, e.prototype.to = function(a, b) { var c = this.current(), d = null, e = a - this.relative(c), f = (e > 0) - (e < 0), g = this._items.length, h = this.minimum(), i = this.maximum(); this.settings.loop ? (!this.settings.rewind && Math.abs(e) > g / 2 && (e += -1 * f * g), a = c + e, (d = ((a - h) % g + g) % g + h) !== a && d - e <= i && d - e > 0 && (c = d - e, a = d, this.reset(c))) : this.settings.rewind ? (i += 1, a = (a % i + i) % i) : a = Math.max(h, Math.min(i, a)), this.speed(this.duration(c, a, b)), this.current(a), this.isVisible() && this.update() }, e.prototype.next = function(a) { a = a || !1, this.to(this.relative(this.current()) + 1, a) }, e.prototype.prev = function(a) { a = a || !1, this.to(this.relative(this.current()) - 1, a) }, e.prototype.onTransitionEnd = function(a) { if (a !== d && (a.stopPropagation(), (a.target || a.srcElement || a.originalTarget) !== this.$stage.get(0))) return !1; this.leave("animating"), this.trigger("translated") }, e.prototype.viewport = function() { var d; return this.options.responsiveBaseElement !== b ? d = a(this.options.responsiveBaseElement).width() : b.innerWidth ? d = b.innerWidth : c.documentElement && c.documentElement.clientWidth ? d = c.documentElement.clientWidth : console.warn("Can not detect viewport width."), d }, e.prototype.replace = function(b) { this.$stage.empty(), this._items = [], b && (b = b instanceof jQuery ? b : a(b)), this.settings.nestedItemSelector && (b = b.find("." + this.settings.nestedItemSelector)), b.filter(function() { return 1 === this.nodeType }).each(a.proxy(function(a, b) { b = this.prepare(b), this.$stage.append(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1) }, this)), this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0), this.invalidate("items") }, e.prototype.add = function(b, c) { var e = this.relative(this._current); c = c === d ? this._items.length : this.normalize(c, !0), b = b instanceof jQuery ? b : a(b), this.trigger("add", { content: b, position: c }), b = this.prepare(b), 0 === this._items.length || c === this._items.length ? (0 === this._items.length && this.$stage.append(b), 0 !== this._items.length && this._items[c - 1].after(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)) : (this._items[c].before(b), this._items.splice(c, 0, b), this._mergers.splice(c, 0, 1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)), this._items[e] && this.reset(this._items[e].index()), this.invalidate("items"), this.trigger("added", { content: b, position: c }) }, e.prototype.remove = function(a) { (a = this.normalize(a, !0)) !== d && (this.trigger("remove", { content: this._items[a], position: a }), this._items[a].remove(), this._items.splice(a, 1), this._mergers.splice(a, 1), this.invalidate("items"), this.trigger("removed", { content: null, position: a })) }, e.prototype.preloadAutoWidthImages = function(b) { b.each(a.proxy(function(b, c) { this.enter("pre-loading"), c = a(c), a(new Image).one("load", a.proxy(function(a) { c.attr("src", a.target.src), c.css("opacity", 1), this.leave("pre-loading"), !this.is("pre-loading") && !this.is("initializing") && this.refresh() }, this)).attr("src", c.attr("src") || c.attr("data-src") || c.attr("data-src-retina")) }, this)) }, e.prototype.destroy = function() { this.$element.off(".owl.core"), this.$stage.off(".owl.core"), a(c).off(".owl.core"), !1 !== this.settings.responsive && (b.clearTimeout(this.resizeTimer), this.off(b, "resize", this._handlers.onThrottledResize)); for (var d in this._plugins) this._plugins[d].destroy(); this.$stage.children(".cloned").remove(), this.$stage.unwrap(), this.$stage.children().contents().unwrap(), this.$stage.children().unwrap(), this.$stage.remove(), this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class", this.$element.attr("class").replace(new RegExp(this.options.responsiveClass + "-\\S+\\s", "g"), "")).removeData("owl.carousel") }, e.prototype.op = function(a, b, c) { var d = this.settings.rtl; switch (b) { case "<": return d ? a > c : a < c; case ">": return d ? a < c : a > c; case ">=": return d ? a <= c : a >= c; case "<=": return d ? a >= c : a <= c } }, e.prototype.on = function(a, b, c, d) { a.addEventListener ? a.addEventListener(b, c, d) : a.attachEvent && a.attachEvent("on" + b, c) }, e.prototype.off = function(a, b, c, d) { a.removeEventListener ? a.removeEventListener(b, c, d) : a.detachEvent && a.detachEvent("on" + b, c) }, e.prototype.trigger = function(b, c, d, f, g) { var h = { item: { count: this._items.length, index: this.current() } }, i = a.camelCase(a.grep(["on", b, d], function(a) { return a }).join("-").toLowerCase()), j = a.Event([b, "owl", d || "carousel"].join(".").toLowerCase(), a.extend({ relatedTarget: this }, h, c)); return this._supress[b] || (a.each(this._plugins, function(a, b) { b.onTrigger && b.onTrigger(j) }), this.register({ type: e.Type.Event, name: b }), this.$element.trigger(j), this.settings && "function" == typeof this.settings[i] && this.settings[i].call(this, j)), j }, e.prototype.enter = function(b) { a.each([b].concat(this._states.tags[b] || []), a.proxy(function(a, b) { this._states.current[b] === d && (this._states.current[b] = 0), this._states.current[b]++ }, this)) }, e.prototype.leave = function(b) { a.each([b].concat(this._states.tags[b] || []), a.proxy(function(a, b) { this._states.current[b]-- }, this)) }, e.prototype.register = function(b) { if (b.type === e.Type.Event) { if (a.event.special[b.name] || (a.event.special[b.name] = {}), !a.event.special[b.name].owl) { var c = a.event.special[b.name]._default; a.event.special[b.name]._default = function(a) { return !c || !c.apply || a.namespace && -1 !== a.namespace.indexOf("owl") ? a.namespace && a.namespace.indexOf("owl") > -1 : c.apply(this, arguments) }, a.event.special[b.name].owl = !0 } } else b.type === e.Type.State && (this._states.tags[b.name] ? this._states.tags[b.name] = this._states.tags[b.name].concat(b.tags) : this._states.tags[b.name] = b.tags, this._states.tags[b.name] = a.grep(this._states.tags[b.name], a.proxy(function(c, d) { return a.inArray(c, this._states.tags[b.name]) === d }, this))) }, e.prototype.suppress = function(b) { a.each(b, a.proxy(function(a, b) { this._supress[b] = !0 }, this)) }, e.prototype.release = function(b) { a.each(b, a.proxy(function(a, b) { delete this._supress[b] }, this)) }, e.prototype.pointer = function(a) { var c = { x: null, y: null }; return a = a.originalEvent || a || b.event, a = a.touches && a.touches.length ? a.touches[0] : a.changedTouches && a.changedTouches.length ? a.changedTouches[0] : a, a.pageX ? (c.x = a.pageX, c.y = a.pageY) : (c.x = a.clientX, c.y = a.clientY), c }, e.prototype.isNumeric = function(a) { return !isNaN(parseFloat(a)) }, e.prototype.difference = function(a, b) { return { x: a.x - b.x, y: a.y - b.y } }, a.fn.owlCarousel = function(b) { var c = Array.prototype.slice.call(arguments, 1); return this.each(function() { var d = a(this), f = d.data("owl.carousel"); f || (f = new e(this, "object" == typeof b && b), d.data("owl.carousel", f), a.each(["next", "prev", "to", "destroy", "refresh", "replace", "add", "remove"], function(b, c) { f.register({ type: e.Type.Event, name: c }), f.$element.on(c + ".owl.carousel.core", a.proxy(function(a) { a.namespace && a.relatedTarget !== this && (this.suppress([c]), f[c].apply(this, [].slice.call(arguments, 1)), this.release([c])) }, f)) })), "string" == typeof b && "_" !== b.charAt(0) && f[b].apply(f, c) }) }, a.fn.owlCarousel.Constructor = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(b) { this._core = b, this._interval = null, this._visible = null, this._handlers = { "initialized.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.autoRefresh && this.watch() }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers) }; e.Defaults = { autoRefresh: !0, autoRefreshInterval: 500 }, e.prototype.watch = function() { this._interval || (this._visible = this._core.isVisible(), this._interval = b.setInterval(a.proxy(this.refresh, this), this._core.settings.autoRefreshInterval)) }, e.prototype.refresh = function() { this._core.isVisible() !== this._visible && (this._visible = !this._visible, this._core.$element.toggleClass("owl-hidden", !this._visible), this._visible && this._core.invalidate("width") && this._core.refresh()) }, e.prototype.destroy = function() { var a, c; b.clearInterval(this._interval); for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null) }, a.fn.owlCarousel.Constructor.Plugins.AutoRefresh = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(b) { this._core = b, this._loaded = [], this._handlers = { "initialized.owl.carousel change.owl.carousel resized.owl.carousel": a.proxy(function(b) { if (b.namespace && this._core.settings && this._core.settings.lazyLoad && (b.property && "position" == b.property.name || "initialized" == b.type)) { var c = this._core.settings, e = c.center && Math.ceil(c.items / 2) || c.items, f = c.center && -1 * e || 0, g = (b.property && b.property.value !== d ? b.property.value : this._core.current()) + f, h = this._core.clones().length, i = a.proxy(function(a, b) { this.load(b) }, this); for (c.lazyLoadEager > 0 && (e += c.lazyLoadEager, c.loop && (g -= c.lazyLoadEager, e++)); f++ < e;) this.load(h / 2 + this._core.relative(g)), h && a.each(this._core.clones(this._core.relative(g)), i), g++ } }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers) }; e.Defaults = { lazyLoad: !1, lazyLoadEager: 0 }, e.prototype.load = function(c) { var d = this._core.$stage.children().eq(c), e = d && d.find(".owl-lazy"); !e || a.inArray(d.get(0), this._loaded) > -1 || (e.each(a.proxy(function(c, d) { var e, f = a(d), g = b.devicePixelRatio > 1 && f.attr("data-src-retina") || f.attr("data-src") || f.attr("data-srcset"); this._core.trigger("load", { element: f, url: g }, "lazy"), f.is("img") ? f.one("load.owl.lazy", a.proxy(function() { f.css("opacity", 1), this._core.trigger("loaded", { element: f, url: g }, "lazy") }, this)).attr("src", g) : f.is("source") ? f.one("load.owl.lazy", a.proxy(function() { this._core.trigger("loaded", { element: f, url: g }, "lazy") }, this)).attr("srcset", g) : (e = new Image, e.onload = a.proxy(function() { f.css({ "background-image": 'url("' + g + '")', opacity: "1" }), this._core.trigger("loaded", { element: f, url: g }, "lazy") }, this), e.src = g) }, this)), this._loaded.push(d.get(0))) }, e.prototype.destroy = function() { var a, b; for (a in this.handlers) this._core.$element.off(a, this.handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.Lazy = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(c) { this._core = c, this._previousHeight = null, this._handlers = { "initialized.owl.carousel refreshed.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.autoHeight && this.update() }, this), "changed.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.autoHeight && "position" === a.property.name && this.update() }, this), "loaded.owl.lazy": a.proxy(function(a) { a.namespace && this._core.settings.autoHeight && a.element.closest("." + this._core.settings.itemClass).index() === this._core.current() && this.update() }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers), this._intervalId = null; var d = this; a(b).on("load", function() { d._core.settings.autoHeight && d.update() }), a(b).resize(function() { d._core.settings.autoHeight && (null != d._intervalId && clearTimeout(d._intervalId), d._intervalId = setTimeout(function() { d.update() }, 250)) }) }; e.Defaults = { autoHeight: !1, autoHeightClass: "owl-height" }, e.prototype.update = function() { var b = this._core._current, c = b + this._core.settings.items, d = this._core.settings.lazyLoad, e = this._core.$stage.children().toArray().slice(b, c), f = [], g = 0; a.each(e, function(b, c) { f.push(a(c).height()) }), g = Math.max.apply(null, f), g <= 1 && d && this._previousHeight && (g = this._previousHeight), this._previousHeight = g, this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass) }, e.prototype.destroy = function() { var a, b; for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.AutoHeight = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(b) { this._core = b, this._videos = {}, this._playing = null, this._handlers = { "initialized.owl.carousel": a.proxy(function(a) { a.namespace && this._core.register({ type: "state", name: "playing", tags: ["interacting"] }) }, this), "resize.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.video && this.isInFullScreen() && a.preventDefault() }, this), "refreshed.owl.carousel": a.proxy(function(a) { a.namespace && this._core.is("resizing") && this._core.$stage.find(".cloned .owl-video-frame").remove() }, this), "changed.owl.carousel": a.proxy(function(a) { a.namespace && "position" === a.property.name && this._playing && this.stop() }, this), "prepared.owl.carousel": a.proxy(function(b) { if (b.namespace) { var c = a(b.content).find(".owl-video"); c.length && (c.css("display", "none"), this.fetch(c, a(b.content))) } }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers), this._core.$element.on("click.owl.video", ".owl-video-play-icon", a.proxy(function(a) { this.play(a) }, this)) }; e.Defaults = { video: !1, videoHeight: !1, videoWidth: !1 }, e.prototype.fetch = function(a, b) { var c = function() { return a.attr("data-vimeo-id") ? "vimeo" : a.attr("data-vzaar-id") ? "vzaar" : "youtube" }(), d = a.attr("data-vimeo-id") || a.attr("data-youtube-id") || a.attr("data-vzaar-id"), e = a.attr("data-width") || this._core.settings.videoWidth, f = a.attr("data-height") || this._core.settings.videoHeight, g = a.attr("href"); if (!g) throw new Error("Missing video URL."); if (d = g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/), d[3].indexOf("youtu") > -1) c = "youtube"; else if (d[3].indexOf("vimeo") > -1) c = "vimeo"; else { if (!(d[3].indexOf("vzaar") > -1)) throw new Error("Video URL not supported."); c = "vzaar" } d = d[6], this._videos[g] = { type: c, id: d, width: e, height: f }, b.attr("data-video", g), this.thumbnail(a, this._videos[g]) }, e.prototype.thumbnail = function(b, c) { var d, e, f, g = c.width && c.height ? "width:" + c.width + "px;height:" + c.height + "px;" : "", h = b.find("img"), i = "src", j = "", k = this._core.settings, l = function(c) { e = '
', d = k.lazyLoad ? a("
", { class: "owl-video-tn " + j, srcType: c }) : a("
", { class: "owl-video-tn", style: "opacity:1;background-image:url(" + c + ")" }), b.after(d), b.after(e) }; if (b.wrap(a("
", { class: "owl-video-wrapper", style: g })), this._core.settings.lazyLoad && (i = "data-src", j = "owl-lazy"), h.length) return l(h.attr(i)), h.remove(), !1; "youtube" === c.type ? (f = "//img.youtube.com/vi/" + c.id + "/hqdefault.jpg", l(f)) : "vimeo" === c.type ? a.ajax({ type: "GET", url: "//vimeo.com/api/v2/video/" + c.id + ".json", jsonp: "callback", dataType: "jsonp", success: function(a) { f = a[0].thumbnail_large, l(f) } }) : "vzaar" === c.type && a.ajax({ type: "GET", url: "//vzaar.com/api/videos/" + c.id + ".json", jsonp: "callback", dataType: "jsonp", success: function(a) { f = a.framegrab_url, l(f) } }) }, e.prototype.stop = function() { this._core.trigger("stop", null, "video"), this._playing.find(".owl-video-frame").remove(), this._playing.removeClass("owl-video-playing"), this._playing = null, this._core.leave("playing"), this._core.trigger("stopped", null, "video") }, e.prototype.play = function(b) { var c, d = a(b.target), e = d.closest("." + this._core.settings.itemClass), f = this._videos[e.attr("data-video")], g = f.width || "100%", h = f.height || this._core.$stage.height(); this._playing || (this._core.enter("playing"), this._core.trigger("play", null, "video"), e = this._core.items(this._core.relative(e.index())), this._core.reset(e.index()), c = a(''), c.attr("height", h), c.attr("width", g), "youtube" === f.type ? c.attr("src", "//www.youtube.com/embed/" + f.id + "?autoplay=1&rel=0&v=" + f.id) : "vimeo" === f.type ? c.attr("src", "//player.vimeo.com/video/" + f.id + "?autoplay=1") : "vzaar" === f.type && c.attr("src", "//view.vzaar.com/" + f.id + "/player?autoplay=true"), a(c).wrap('
').insertAfter(e.find(".owl-video")), this._playing = e.addClass("owl-video-playing")) }, e.prototype.isInFullScreen = function() { var b = c.fullscreenElement || c.mozFullScreenElement || c.webkitFullscreenElement; return b && a(b).parent().hasClass("owl-video-frame") }, e.prototype.destroy = function() { var a, b; this._core.$element.off("click.owl.video"); for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.Video = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(b) { this.core = b, this.core.options = a.extend({}, e.Defaults, this.core.options), this.swapping = !0, this.previous = d, this.next = d, this.handlers = { "change.owl.carousel": a.proxy(function(a) { a.namespace && "position" == a.property.name && (this.previous = this.core.current(), this.next = a.property.value) }, this), "drag.owl.carousel dragged.owl.carousel translated.owl.carousel": a.proxy(function(a) { a.namespace && (this.swapping = "translated" == a.type) }, this), "translate.owl.carousel": a.proxy(function(a) { a.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn) && this.swap() }, this) }, this.core.$element.on(this.handlers) }; e.Defaults = { animateOut: !1, animateIn: !1 }, e.prototype.swap = function() { if (1 === this.core.settings.items && a.support.animation && a.support.transition) { this.core.speed(0); var b, c = a.proxy(this.clear, this), d = this.core.$stage.children().eq(this.previous), e = this.core.$stage.children().eq(this.next), f = this.core.settings.animateIn, g = this.core.settings.animateOut; this.core.current() !== this.previous && (g && (b = this.core.coordinates(this.previous) - this.core.coordinates(this.next), d.one(a.support.animation.end, c).css({ left: b + "px" }).addClass("animated owl-animated-out").addClass(g)), f && e.one(a.support.animation.end, c).addClass("animated owl-animated-in").addClass(f)) } }, e.prototype.clear = function(b) { a(b.target).css({ left: "" }).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut), this.core.onTransitionEnd() }, e.prototype.destroy = function() { var a, b; for (a in this.handlers) this.core.$element.off(a, this.handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.Animate = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { var e = function(b) { this._core = b, this._call = null, this._time = 0, this._timeout = 0, this._paused = !0, this._handlers = { "changed.owl.carousel": a.proxy(function(a) { a.namespace && "settings" === a.property.name ? this._core.settings.autoplay ? this.play() : this.stop() : a.namespace && "position" === a.property.name && this._paused && (this._time = 0) }, this), "initialized.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.autoplay && this.play() }, this), "play.owl.autoplay": a.proxy(function(a, b, c) { a.namespace && this.play(b, c) }, this), "stop.owl.autoplay": a.proxy(function(a) { a.namespace && this.stop() }, this), "mouseover.owl.autoplay": a.proxy(function() { this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause() }, this), "mouseleave.owl.autoplay": a.proxy(function() { this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.play() }, this), "touchstart.owl.core": a.proxy(function() { this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause() }, this), "touchend.owl.core": a.proxy(function() { this._core.settings.autoplayHoverPause && this.play() }, this) }, this._core.$element.on(this._handlers), this._core.options = a.extend({}, e.Defaults, this._core.options) }; e.Defaults = { autoplay: !1, autoplayTimeout: 5e3, autoplayHoverPause: !1, autoplaySpeed: !1 }, e.prototype._next = function(d) { this._call = b.setTimeout(a.proxy(this._next, this, d), this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read()), this._core.is("interacting") || c.hidden || this._core.next(d || this._core.settings.autoplaySpeed) }, e.prototype.read = function() { return (new Date).getTime() - this._time }, e.prototype.play = function(c, d) { var e; this._core.is("rotating") || this._core.enter("rotating"), c = c || this._core.settings.autoplayTimeout, e = Math.min(this._time % (this._timeout || c), c), this._paused ? (this._time = this.read(), this._paused = !1) : b.clearTimeout(this._call), this._time += this.read() % c - e, this._timeout = c, this._call = b.setTimeout(a.proxy(this._next, this, d), c - e) }, e.prototype.stop = function() { this._core.is("rotating") && (this._time = 0, this._paused = !0, b.clearTimeout(this._call), this._core.leave("rotating")) }, e.prototype.pause = function() { this._core.is("rotating") && !this._paused && (this._time = this.read(), this._paused = !0, b.clearTimeout(this._call)) }, e.prototype.destroy = function() { var a, b; this.stop(); for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) }, a.fn.owlCarousel.Constructor.Plugins.autoplay = e }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) { "use strict"; var e = function(b) { this._core = b, this._initialized = !1, this._pages = [], this._controls = {}, this._templates = [], this.$element = this._core.$element, this._overrides = { next: this._core.next, prev: this._core.prev, to: this._core.to }, this._handlers = { "prepared.owl.carousel": a.proxy(function(b) { b.namespace && this._core.settings.dotsData && this._templates.push('
' + a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot") + "
") }, this), "added.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.dotsData && this._templates.splice(a.position, 0, this._templates.pop()) }, this), "remove.owl.carousel": a.proxy(function(a) { a.namespace && this._core.settings.dotsData && this._templates.splice(a.position, 1) }, this), "changed.owl.carousel": a.proxy(function(a) { a.namespace && "position" == a.property.name && this.draw() }, this), "initialized.owl.carousel": a.proxy(function(a) { a.namespace && !this._initialized && (this._core.trigger("initialize", null, "navigation"), this.initialize(), this.update(), this.draw(), this._initialized = !0, this._core.trigger("initialized", null, "navigation")) }, this), "refreshed.owl.carousel": a.proxy(function(a) { a.namespace && this._initialized && (this._core.trigger("refresh", null, "navigation"), this.update(), this.draw(), this._core.trigger("refreshed", null, "navigation")) }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this._handlers) }; e.Defaults = { nav: !1, navText: ['', ''], navSpeed: !1, navElement: 'button type="button" role="presentation"', navContainer: !1, navContainerClass: "owl-nav", navClass: ["owl-prev", "owl-next"], slideBy: 1, dotClass: "owl-dot", dotsClass: "owl-dots", dots: !0, dotsEach: !1, dotsData: !1, dotsSpeed: !1, dotsContainer: !1 }, e.prototype.initialize = function() { var b, c = this._core.settings; this._controls.$relative = (c.navContainer ? a(c.navContainer) : a("
").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"), this._controls.$previous = a("<" + c.navElement + ">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click", a.proxy(function(a) { this.prev(c.navSpeed) }, this)), this._controls.$next = a("<" + c.navElement + ">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click", a.proxy(function(a) { this.next(c.navSpeed) }, this)), c.dotsData || (this._templates = [a('