PageSourceSearch

https://hoofpick.net/assets/js/module/bookmyslot.js

js hoofpick.net collected 2026-10-02 15:50:28 UTC 648,271 bytes, 8,317 lines download raw bytes

1try
2{
3
4
5    function dropdownEffectData(t) {
6        var e = null, n = null, i = $(t), o = $(".dropdown-menu", t), a = i.parents("ul.nav");
7        return a.height > 0 && (e = a.data("dropdown-in") || null, n = a.data("dropdown-out") || null), {target: t, dropdown: i, dropdownMenu: o, effectIn: o.data("dropdown-in") || e, effectOut: o.data("dropdown-out") || n}
8    }
9    function dropdownEffectStart(t, e) {
10        e && (t.dropdown.addClass("dropdown-animating"), t.dropdownMenu.addClass("animated"), t.dropdownMenu.addClass(e))
11    }
12    function dropdownEffectEnd(t, e) {
13        t.dropdown.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function () {
14            t.dropdown.removeClass("dropdown-animating"), t.dropdownMenu.removeClass("animated"), t.dropdownMenu.removeClass(t.effectIn), t.dropdownMenu.removeClass(t.effectOut), "function" == typeof e && e()
15        })
16    }
17    function _classCallCheck(t, e) {
18        if (!(t instanceof e))
19            throw new TypeError("Cannot call a class as a function")
20    }
21    !function (t) {
22        function e(e) {
23            if ($this = e, !1 === $this.hasClass("active")) {
24                $this.addClass("active"), $this.find("ul .btn-floating").velocity({scaleY: ".4", scaleX: ".4", translateY: "40px"}, {duration: 0});
25                n = 0;
26                $this.find("ul .btn-floating").reverse().each(function () {
27                    t(this).velocity({opacity: "1", scaleX: "1", scaleY: "1", translateY: "0"}, {duration: 80, delay: n}), n += 40
28                })
29            } else {
30                $this.removeClass("active");
31                var n = 0;
32                $this.find("ul .btn-floating").velocity("stop", !0), $this.find("ul .btn-floating").velocity({opacity: "0", scaleX: ".4", scaleY: ".4", translateY: "40px"}, {duration: 80})
33            }
34        }
35        t(document).ready(function () {
36            t.fn.reverse = [].reverse, t(document).on("mouseenter.fixedActionBtn", ".fixed-action-btn:not(.click-to-toggle)", function (e) {
37                var i = t(this);
38                n(i)
39            }), t(document).on("mouseleave.fixedActionBtn", ".fixed-action-btn:not(.click-to-toggle)", function (e) {
40                var n = t(this);
41                i(n)
42            }), t(document).on("click.fixedActionBtn", ".fixed-action-btn.click-to-toggle > a", function (e) {
43                var o = t(this).parent();
44                o.hasClass("active") ? i(o) : n(o)
45            })
46        }), t.fn.extend({openFAB: function () {
47                n(t(this))
48            }, closeFAB: function () {
49                i(t(this))
50            }});
51        var n = function (e) {
52            if ($this = e, !1 === $this.hasClass("active")) {
53                var n, i;
54                !0 === $this.hasClass("horizontal") ? i = 40 : n = 40, $this.addClass("active"), $this.find("ul .btn-floating").velocity({scaleY: ".4", scaleX: ".4", translateY: n + "px", translateX: i + "px"}, {duration: 0});
55                var o = 0;
56                $this.find("ul .btn-floating").reverse().each(function () {
57                    t(this).velocity({opacity: "1", scaleX: "1", scaleY: "1", translateY: "0", translateX: "0"}, {duration: 80, delay: o}), o += 40
58                })
59            }
60        }, i = function (t) {
61            $this = t;
62            var e, n;
63            !0 === $this.hasClass("horizontal") ? n = 40 : e = 40, $this.removeClass("active");
64            $this.find("ul .btn-floating").velocity("stop", !0), $this.find("ul .btn-floating").velocity({opacity: "0", scaleX: ".4", scaleY: ".4", translateY: e + "px", translateX: n + "px"}, {duration: 80})
65        };
66        t(".fixed-action-btn").on({click: function (n) {
67                return n.preventDefault(), e(t(".fixed-action-btn")), !1
68            }})
69    }(jQuery), function (t) {
70        t(document).ready(function () {
71            t(document).on("click.card", ".card", function (e) {
72                var n = t(this);
73                if (n.find(".card-reveal").length) {
74                    var i = t(e.target), o = i.is(".card-reveal .card-title"), a = i.is(".card-reveal .card-title i"), r = i.is(".card .activator"), s = i.is(".card .activator i");
75                    o || a ? n.find(".card-reveal").velocity({translateY: 0}, {duration: 225, queue: !1, easing: "easeInOutQuad", complete: function () {
76                            t(this).css({display: "none"})
77                        }}) : (r || s) && n.find(".card-reveal").css({display: "block"}).velocity("stop", !1).velocity({translateY: "-100%"}, {duration: 300, queue: !1, easing: "easeInOutQuad"})
78                }
79            }), t(".rotate-btn").on("click", function () {
80                var e = t(this).attr("data-card");
81                t("#" + e).toggleClass("flipped")
82            })
83        })
84    }(jQuery), $(document).ready(function (t) {
85        t(".card-share > a").on("click", function (e) {
86            e.preventDefault(), t(this).parent().find("div").toggleClass("social-reveal-active"), t(this).toggleClass("share-expanded")
87        })
88    }), function (t) {
89        t.fn.collapsible = function (e) {
90            var n = {accordion: void 0};
91            return e = t.extend(n, e), this.each(function () {
92                function n(e) {
93                    s = r.find("> li > .collapsible-header"), e.hasClass("active") ? e.parent().addClass("active") : e.parent().removeClass("active"), e.parent().hasClass("active") ? e.siblings(".collapsible-body").stop(!0, !1).slideDown({duration: 350, easing: "easeOutQuart", queue: !1, complete: function () {
94                            t(this).css("height", "")
95                        }}) : e.siblings(".collapsible-body").stop(!0, !1).slideUp({duration: 350, easing: "easeOutQuart", queue: !1, complete: function () {
96                            t(this).css("height", "")
97                        }}), s.not(e).removeClass("active").parent().removeClass("active"), s.not(e).parent().children(".collapsible-body").stop(!0, !1).slideUp({duration: 350, easing: "easeOutQuart", queue: !1, complete: function () {
98                            t(this).css("height", "")
99                        }})
100                }
101                function i(e) {
102                    e.hasClass("active") ? e.parent().addClass("active") : e.parent().removeClass("active"), e.parent().hasClass("active") ? e.siblings(".collapsible-body").stop(!0, !1).slideDown({duration: 350, easing: "easeOutQuart", queue: !1, complete: function () {
103                            t(this).css("height", "")
104                        }}) : e.siblings(".collapsible-body").stop(!0, !1).slideUp({duration: 350, easing: "easeOutQuart", queue: !1, complete: function () {
105                            t(this).css("height", "")
106                        }})
107                }
108                function o(t) {
109                    return a(t).length > 0
110                }
111                function a(t) {
112                    return t.closest("li > .collapsible-header")
113                }
114                var r = t(this), s = t(this).find("> li > .collapsible-header"), l = r.data("collapsible");
115                r.off("click.collapse", ".collapsible-header"), s.off("click.collapse"), e.accordion || "accordion" === l || void 0 === l ? ((s = r.find("> li > .collapsible-header")).on("click.collapse", function (e) {
116                    var i = t(e.target);
117                    o(i) && (i = a(i)), i.toggleClass("active"), n(i)
118                }), n(s.filter(".active").first())) : s.each(function () {
119                    t(this).on("click.collapse", function (e) {
120                        var n = t(e.target);
121                        o(n) && (n = a(n)), n.toggleClass("active"), i(n)
122                    }), t(this).hasClass("active") && i(t(this))
123                })
124            })
125        }, t(document).ready(function () {
126            t(".collapsible").collapsible()
127        })
128    }(jQuery), function (t) {
129        t.fn.scrollTo = function (e) {
130            return t(this).scrollTop(t(this).scrollTop() - t(this).offset().top + t(e).offset().top), this
131        }, t.fn.dropdown = function (e) {
132            var n = {inDuration: 300, outDuration: 225, constrain_width: !0, hover: !0, gutter: 0, belowOrigin: !1, alignment: "left"};
133            this.each(function () {
134                function i() {
135                    void 0 !== r.data("induration") && (s.inDuration = r.data("inDuration")), void 0 !== r.data("outduration") && (s.outDuration = r.data("outDuration")), void 0 !== r.data("constrainwidth") && (s.constrain_width = r.data("constrainwidth")), void 0 !== r.data("hover") && (s.hover = r.data("hover")), void 0 !== r.data("gutter") && (s.gutter = r.data("gutter")), void 0 !== r.data("beloworigin") && (s.belowOrigin = r.data("beloworigin")), void 0 !== r.data("alignment") && (s.alignment = r.data("alignment"))
136                }
137                function o(e) {
138                    "focus" === e && (l = !0), i(), c.addClass("active"), r.addClass("active"), !0 === s.constrain_width ? c.css("width", r.outerWidth()) : c.css("white-space", "nowrap");
139                    var n = window.innerHeight, o = r.innerHeight(), a = r.offset().left, u = r.offset().top - t(window).scrollTop(), d = s.alignment, h = 0, p = 0, f = 0;
140                    !0 === s.belowOrigin && (f = o);
141                    var m = 0, g = r.parent();
142                    if (!g.is("body") && g[0].scrollHeight > g[0].clientHeight && (m = g[0].scrollTop), a + c.innerWidth() > t(window).width() ? d = "right" : a - c.innerWidth() + r.innerWidth() < 0 && (d = "left"), u + c.innerHeight() > n)
143                        if (u + o - c.innerHeight() < 0) {
144                            var v = n - u - f;
145                            c.css("max-height", v)
146                        } else
147                            f || (f += o), f -= c.innerHeight();
148                    "left" === d ? (h = s.gutter, p = r.position().left + h) : "right" === d && (p = r.position().left + r.outerWidth() - c.outerWidth() + (h = -s.gutter)), c.css({position: "absolute", top: r.position().top + f + m, left: p}), c.stop(!0, !0).css("opacity", 0).slideDown({queue: !1, duration: s.inDuration, easing: "easeOutCubic", complete: function () {
149                            t(this).css("height", "")
150                        }}).animate({opacity: 1}, {queue: !1, duration: s.inDuration, easing: "easeOutSine"})
151                }
152                function a() {
153                    l = !1, c.fadeOut(s.outDuration), c.removeClass("active"), r.removeClass("active"), setTimeout(function () {
154                        c.css("max-height", "")
155                    }, s.outDuration)
156                }
157                var r = t(this), s = t.extend({}, n, e), l = !1, c = t("#" + r.attr("data-activates"));
158                if (i(), r.after(c), s.hover) {
159                    var u = !1;
160                    r.unbind("click." + r.attr("id")), r.on("mouseenter", function (t) {
161                        !1 === u && (o(), u = !0)
162                    }), r.on("mouseleave", function (e) {
163                        var n = e.toElement || e.relatedTarget;
164                        t(n).closest(".dropdown-content").is(c) || (c.stop(!0, !0), a(), u = !1)
165                    }), c.on("mouseleave", function (e) {
166                        var n = e.toElement || e.relatedTarget;
167                        t(n).closest(".dropdown-button").is(r) || (c.stop(!0, !0), a(), u = !1)
168                    })
169                } else
170                    r.unbind("click." + r.attr("id")), r.bind("click." + r.attr("id"), function (e) {
171                        l || (r[0] != e.currentTarget || r.hasClass("active") || 0 !== t(e.target).closest(".dropdown-content").length ? r.hasClass("active") && (a(), t(document).unbind("click." + c.attr("id") + " touchstart." + c.attr("id"))) : (e.preventDefault(), o("click")), c.hasClass("active") && t(document).bind("click." + c.attr("id") + " touchstart." + c.attr("id"), function (e) {
172                            c.is(e.target) || r.is(e.target) || r.find(e.target).length || (a(), t(document).unbind("click." + c.attr("id") + " touchstart." + c.attr("id")))
173                        }))
174                    });
175                r.on("open", function (t, e) {
176                    o(e)
177                }), r.on("close", a)
178            })
179        }, t(document).ready(function () {
180            t(".dropdown-button").dropdown()
181        })
182    }(jQuery);
183    var dropdownSelectors = $(".dropdown, .dropup");
184    dropdownSelectors.on({"show.bs.dropdown": function () {
185            $(this).find(".dropdown-menu").first().stop(!0, !0).fadeIn();
186            var t = dropdownEffectData(this);
187            dropdownEffectStart(t, t.effectIn)
188        }, "shown.bs.dropdown": function () {
189            var t = dropdownEffectData(this);
190            t.effectIn && t.effectOut && dropdownEffectEnd(t, function () {})
191        }, "hide.bs.dropdown": function (t) {
192            $(this).find(".dropdown-menu").first().stop(!0, !0).fadeOut();
193            var e = dropdownEffectData(this);
194            e.effectOut && (t.preventDefault(), dropdownEffectStart(e, e.effectOut), dropdownEffectEnd(e, function () {
195                e.dropdown.removeClass("open"), e.dropdown.removeClass("show")
196            }))
197        }}), function (t) {
198        t(document).on("change", '.file-field input[type="file"]', function (e) {
199            for (var n = t(e.target), i = n.closest(".file-field").find("input.file-path"), o = n[0].files, a = [], r = 0; r < o.length; r++) {
200                var s = o[r].name;
201                a.push(s)
202            }
203            i.val(a.join(", ")), i.trigger("change")
204        })
205    }(jQuery), function (t) {
206        t(document).ready(function () {
207            var e = ["text", "password", "email", "url", "tel", "number", "search", "search-md"].map(function (t) {
208                return"input[type=" + t + "]"
209            }).join(", ") + ", textarea", n = function (t) {
210                var e = t.siblings("label, i"), n = t.val().length, i = t.attr("placeholder");
211                e[(n || i ? "add" : "remove") + "Class"]("active")
212            }, i = function (t) {
213                if (t.hasClass("validate")) {
214                    var e = t.val(), n = !e.length, i = !t[0].validity.badInput;
215                    if (n && i)
216                        t.removeClass("valid").removeClass("invalid");
217                    else {
218                        var o = t.is(":valid"), a = +t.attr("length") || 0;
219                        o && (!a || a > e.length) ? t.removeClass("invalid").addClass("valid") : t.removeClass("valid").addClass("invalid")
220                    }
221                }
222            }, o = function () {
223                var e = t(void 0);
224                if (e.val().length) {
225                    var n = t(".hiddendiv"), i = e.css("font-family"), o = e.css("font-size");
226                    o && hiddenDiv.css("font-size", o), i && hiddenDiv.css("font-family", i), "off" === e.attr("wrap") && hiddenDiv.css("overflow-wrap", "normal").css("white-space", "pre"), n.text(e.val() + "\n");
227                    var a = hiddenDiv.html().replace(/\n/g, "<br>");
228                    n.html(a), n.css("width", e.is(":visible") ? e.width() : t(window).width() / 2), e.css("height", n.height())
229                }
230            };
231            t(e).each(function (e, i) {
232                var o = t(i), a = o.siblings("label, i");
233                n(o), i.validity.badInput && a.addClass("active")
234            }), t(document).on("focus", e, function (e) {
235                t(e.target).siblings("label, i").addClass("active")
236            }), t(document).on("blur", e, function (e) {
237                var n = t(e.target), o = !n.val(), a = !e.target.validity.badInput, r = void 0 === n.attr("placeholder");
238                o && a && r && n.siblings("label, i").removeClass("active"), i(n)
239            }), t(document).on("change", e, function (e) {
240                var o = t(e.target);
241                n(o), i(o)
242            }), t("input[autofocus]").siblings("label, i").addClass("active"), t(document).on("reset", function (n) {
243                var i = t(n.target);
244                i.is("form") && (i.find(e).removeClass("valid").removeClass("invalid").each(function (e, n) {
245                    var i = t(n), o = !i.val(), a = !i.attr("placeholder");
246                    o && a && i.siblings("label, i").removeClass("active")
247                }), i.find("select.initialized").each(function (e, n) {
248                    var i = t(n), o = i.siblings("input.select-dropdown"), a = i.children("[selected]").val();
249                    i.val(a), o.val(a)
250                }))
251            }), t(".hiddendiv").first().length || ($hiddenDiv = t('<div class="hiddendiv common"></div>'), t("body").append($hiddenDiv)), t(".materialize-textarea").each(o), t("body").on("keyup keydown", ".materialize-textarea", o)
252        })
253    }(jQuery), function (t, e, n, i) {
254        "use strict";
255        function o(t, e, n) {
256            return setTimeout(c(t, n), e)
257        }
258        function a(t, e, n) {
259            return!!Array.isArray(t) && (r(t, n[e], n), !0)
260        }
261        function r(t, e, n) {
262            var o;
263            if (t)
264                if (t.forEach)
265                    t.forEach(e, n);
266                else if (t.length !== i)
267                    for (o = 0; o < t.length; )
268                        e.call(n, t[o], o, t), o++;
269                else
270                    for (o in t)
271                        t.hasOwnProperty(o) && e.call(n, t[o], o, t)
272        }
273        function s(e, n, i) {
274            var o = "DEPRECATED METHOD: " + n + "\n" + i + " AT \n";
275            return function () {
276                var n = new Error("get-stack-trace"), i = n && n.stack ? n.stack.replace(/^[^\(]+?[\n$]/gm, "").replace(/^\s+at\s+/gm, "").replace(/^Object.<anonymous>\s*\(/gm, "{anonymous}()@") : "Unknown Stack Trace", a = t.console && (t.console.warn || t.console.log);
277                return a && a.call(t.console, o, i), e.apply(this, arguments)
278            }
279        }
280        function l(t, e, n) {
281            var i, o = e.prototype;
282            (i = t.prototype = Object.create(o)).constructor = t, i._super = o, n && ut(i, n)
283        }
284        function c(t, e) {
285            return function () {
286                return t.apply(e, arguments)
287            }
288        }
289        function u(t, e) {
290            return typeof t == pt ? t.apply(e ? e[0] || i : i, e) : t
291        }
292        function d(t, e) {
293            return t === i ? e : t
294        }
295        function h(t, e, n) {
296            r(g(e), function (e) {
297                t.addEventListener(e, n, !1)
298            })
299        }
300        function p(t, e, n) {
301            r(g(e), function (e) {
302                t.removeEventListener(e, n, !1)
303            })
304        }
305        function f(t, e) {
306            for (; t; ) {
307                if (t == e)
308                    return!0;
309                t = t.parentNode
310            }
311            return!1
312        }
313        function m(t, e) {
314            return t.indexOf(e) > -1
315        }
316        function g(t) {
317            return t.trim().split(/\s+/g)
318        }
319        function v(t, e, n) {
320            if (t.indexOf && !n)
321                return t.indexOf(e);
322            for (var i = 0; i < t.length; ) {
323                if (n && t[i][n] == e || !n && t[i] === e)
324                    return i;
325                i++
326            }
327            return-1
328        }
329        function y(t) {
330            return Array.prototype.slice.call(t, 0)
331        }
332        function b(t, e, n) {
333            for (var i = [], o = [], a = 0; a < t.length; ) {
334                var r = e ? t[a][e] : t[a];
335                v(o, r) < 0 && i.push(t[a]), o[a] = r, a++
336            }
337            return n && (i = e ? i.sort(function (t, n) {
338                return t[e] > n[e]
339            }) : i.sort()), i
340        }
341        function x(t, e) {
342            for (var n, o, a = e[0].toUpperCase() + e.slice(1), r = 0; r < dt.length; ) {
343                if (n = dt[r], (o = n ? n + a : e)in t)
344                    return o;
345                r++
346            }
347            return i
348        }
349        function w() {
350            return bt++
351        }
352        function k(e) {
353            var n = e.ownerDocument || e;
354            return n.defaultView || n.parentWindow || t
355        }
356        function C(t, e) {
357            var n = this;
358            this.manager = t, this.callback = e, this.element = t.element, this.target = t.options.inputTarget, this.domHandler = function (e) {
359                u(t.options.enable, [t]) && n.handler(e)
360            }, this.init()
361        }
362        function S(t) {
363            var e = t.options.inputClass;
364            return new (e || (kt ? V : Ct ? H : wt ? Y : W))(t, T)
365        }
366        function T(t, e, n) {
367            var i = n.pointers.length, o = n.changedPointers.length, a = e & Tt && i - o == 0, r = e & (It | At) && i - o == 0;
368            n.isFirst = !!a, n.isFinal = !!r, a && (t.session = {}), n.eventType = e, M(t, n), t.emit("hammer.input", n), t.recognize(n), t.session.prevInput = n
369        }
370        function M(t, e) {
371            var n = t.session, i = e.pointers, o = i.length;
372            n.firstInput || (n.firstInput = P(e)), o > 1 && !n.firstMultiple ? n.firstMultiple = P(e) : 1 === o && (n.firstMultiple = !1);
vendor: 23,844 bytes, lines 373-773
373            var a = n.firstInput, r = n.firstMultiple, s = r ? r.center : a.center, l = e.center = _(i);
374            e.timeStamp = gt(), e.deltaTime = e.timeStamp - a.timeStamp, e.angle = L(s, l), e.distance = O(s, l), I(n, e), e.offsetDirection = E(e.deltaX, e.deltaY);
375            var c = D(e.deltaTime, e.deltaX, e.deltaY);
376            e.overallVelocityX = c.x, e.overallVelocityY = c.y, e.overallVelocity = mt(c.x) > mt(c.y) ? c.x : c.y, e.scale = r ? R(r.pointers, i) : 1, e.rotation = r ? F(r.pointers, i) : 0, e.maxPointers = n.prevInput ? e.pointers.length > n.prevInput.maxPointers ? e.pointers.length : n.prevInput.maxPointers : e.pointers.length, A(n, e);
377            var u = t.element;
378            f(e.srcEvent.target, u) && (u = e.srcEvent.target), e.target = u
379        }
380        function I(t, e) {
381            var n = e.center, i = t.offsetDelta || {}, o = t.prevDelta || {}, a = t.prevInput || {};
382            e.eventType !== Tt && a.eventType !== It || (o = t.prevDelta = {x: a.deltaX || 0, y: a.deltaY || 0}, i = t.offsetDelta = {x: n.x, y: n.y}), e.deltaX = o.x + (n.x - i.x), e.deltaY = o.y + (n.y - i.y)
383        }
384        function A(t, e) {
385            var n, o, a, r, s = t.lastInterval || e, l = e.timeStamp - s.timeStamp;
386            if (e.eventType != At && (l > St || s.velocity === i)) {
387                var c = e.deltaX - s.deltaX, u = e.deltaY - s.deltaY, d = D(l, c, u);
388                o = d.x, a = d.y, n = mt(d.x) > mt(d.y) ? d.x : d.y, r = E(c, u), t.lastInterval = e
389            } else
390                n = s.velocity, o = s.velocityX, a = s.velocityY, r = s.direction;
391            e.velocity = n, e.velocityX = o, e.velocityY = a, e.direction = r
392        }
393        function P(t) {
394            for (var e = [], n = 0; n < t.pointers.length; )
395                e[n] = {clientX: ft(t.pointers[n].clientX), clientY: ft(t.pointers[n].clientY)}, n++;
396            return{timeStamp: gt(), pointers: e, center: _(e), deltaX: t.deltaX, deltaY: t.deltaY}
397        }
398        function _(t) {
399            var e = t.length;
400            if (1 === e)
401                return{x: ft(t[0].clientX), y: ft(t[0].clientY)};
402            for (var n = 0, i = 0, o = 0; o < e; )
403                n += t[o].clientX, i += t[o].clientY, o++;
404            return{x: ft(n / e), y: ft(i / e)}
405        }
406        function D(t, e, n) {
407            return{x: e / t || 0, y: n / t || 0}
408        }
409        function E(t, e) {
410            return t === e ? Pt : mt(t) >= mt(e) ? t < 0 ? _t : Dt : e < 0 ? Et : Ot
411        }
412        function O(t, e, n) {
413            n || (n = Wt);
414            var i = e[n[0]] - t[n[0]], o = e[n[1]] - t[n[1]];
415            return Math.sqrt(i * i + o * o)
416        }
417        function L(t, e, n) {
418            n || (n = Wt);
419            var i = e[n[0]] - t[n[0]], o = e[n[1]] - t[n[1]];
420            return 180 * Math.atan2(o, i) / Math.PI
421        }
422        function F(t, e) {
423            return L(e[1], e[0], Vt) + L(t[1], t[0], Vt)
424        }
425        function R(t, e) {
426            return O(e[0], e[1], Vt) / O(t[0], t[1], Vt)
427        }
428        function W() {
429            this.evEl = Nt, this.evWin = Ht, this.pressed = !1, C.apply(this, arguments)
430        }
431        function V() {
432            this.evEl = jt, this.evWin = $t, C.apply(this, arguments), this.store = this.manager.session.pointerEvents = []
433        }
434        function z() {
435            this.evTarget = qt, this.evWin = Ut, this.started = !1, C.apply(this, arguments)
436        }
437        function N(t, e) {
438            var n = y(t.touches), i = y(t.changedTouches);
439            return e & (It | At) && (n = b(n.concat(i), "identifier", !0)), [n, i]
440        }
441        function H() {
442            this.evTarget = Zt, this.targetIds = {}, C.apply(this, arguments)
443        }
444        function B(t, e) {
445            var n = y(t.touches), i = this.targetIds;
446            if (e & (Tt | Mt) && 1 === n.length)
447                return i[n[0].identifier] = !0, [n, n];
448            var o, a, r = y(t.changedTouches), s = [], l = this.target;
449            if (a = n.filter(function (t) {
450                return f(t.target, l)
451            }), e === Tt)
452                for (o = 0; o < a.length; )
453                    i[a[o].identifier] = !0, o++;
454            for (o = 0; o < r.length; )
455                i[r[o].identifier] && s.push(r[o]), e & (It | At) && delete i[r[o].identifier], o++;
456            return s.length ? [b(a.concat(s), "identifier", !0), s] : void 0
457        }
458        function Y() {
459            C.apply(this, arguments);
460            var t = c(this.handler, this);
461            this.touch = new H(this.manager, t), this.mouse = new W(this.manager, t), this.primaryTouch = null, this.lastTouches = []
462        }
463        function j(t, e) {
464            t & Tt ? (this.primaryTouch = e.changedPointers[0].identifier, $.call(this, e)) : t & (It | At) && $.call(this, e)
465        }
466        function $(t) {
467            var e = t.changedPointers[0];
468            if (e.identifier === this.primaryTouch) {
469                var n = {x: e.clientX, y: e.clientY};
470                this.lastTouches.push(n);
471                var i = this.lastTouches;
472                setTimeout(function () {
473                    var t = i.indexOf(n);
474                    t > -1 && i.splice(t, 1)
475                }, Gt)
476            }
477        }
478        function X(t) {
479            for (var e = t.srcEvent.clientX, n = t.srcEvent.clientY, i = 0; i < this.lastTouches.length; i++) {
480                var o = this.lastTouches[i], a = Math.abs(e - o.x), r = Math.abs(n - o.y);
481                if (a <= Kt && r <= Kt)
482                    return!0
483            }
484            return!1
485        }
486        function q(t, e) {
487            this.manager = t, this.set(e)
488        }
489        function U(t) {
490            if (m(t, ie))
491                return ie;
492            var e = m(t, oe), n = m(t, ae);
493            return e && n ? ie : e || n ? e ? oe : ae : m(t, ne) ? ne : ee
494        }
495        function Q(t) {
496            this.options = ut({}, this.defaults, t || {}), this.id = w(), this.manager = null, this.options.enable = d(this.options.enable, !0), this.state = se, this.simultaneous = {}, this.requireFail = []
497        }
498        function Z(t) {
499            return t & he ? "cancel" : t & ue ? "end" : t & ce ? "move" : t & le ? "start" : ""
500        }
501        function G(t) {
502            return t == Ot ? "down" : t == Et ? "up" : t == _t ? "left" : t == Dt ? "right" : ""
503        }
504        function K(t, e) {
505            var n = e.manager;
506            return n ? n.get(t) : t
507        }
508        function J() {
509            Q.apply(this, arguments)
510        }
511        function tt() {
512            J.apply(this, arguments), this.pX = null, this.pY = null
513        }
514        function et() {
515            J.apply(this, arguments)
516        }
517        function nt() {
518            Q.apply(this, arguments), this._timer = null, this._input = null
519        }
520        function it() {
521            J.apply(this, arguments)
522        }
523        function ot() {
524            J.apply(this, arguments)
525        }
526        function at() {
527            Q.apply(this, arguments), this.pTime = !1, this.pCenter = !1, this._timer = null, this._input = null, this.count = 0
528        }
529        function rt(t, e) {
530            return e = e || {}, e.recognizers = d(e.recognizers, rt.defaults.preset), new st(t, e)
531        }
532        function st(t, e) {
533            this.options = ut({}, rt.defaults, e || {}), this.options.inputTarget = this.options.inputTarget || t, this.handlers = {}, this.session = {}, this.recognizers = [], this.oldCssProps = {}, this.element = t, this.input = S(this), this.touchAction = new q(this, this.options.touchAction), lt(this, !0), r(this.options.recognizers, function (t) {
534                var e = this.add(new t[0](t[1]));
535                t[2] && e.recognizeWith(t[2]), t[3] && e.requireFailure(t[3])
536            }, this)
537        }
538        function lt(t, e) {
539            var n = t.element;
540            if (n.style) {
541                var i;
542                r(t.options.cssProps, function (o, a) {
543                    i = x(n.style, a), e ? (t.oldCssProps[i] = n.style[i], n.style[i] = o) : n.style[i] = t.oldCssProps[i] || ""
544                }), e || (t.oldCssProps = {})
545            }
546        }
547        function ct(t, n) {
548            var i = e.createEvent("Event");
549            i.initEvent(t, !0, !0), i.gesture = n, n.target.dispatchEvent(i)
550        }
551        var ut, dt = ["", "webkit", "Moz", "MS", "ms", "o"], ht = e.createElement("div"), pt = "function", ft = Math.round, mt = Math.abs, gt = Date.now;
552        ut = "function" != typeof Object.assign ? function (t) {
553            if (t === i || null === t)
554                throw new TypeError("Cannot convert undefined or null to object");
555            for (var e = Object(t), n = 1; n < arguments.length; n++) {
556                var o = arguments[n];
557                if (o !== i && null !== o)
558                    for (var a in o)
559                        o.hasOwnProperty(a) && (e[a] = o[a])
560            }
561            return e
562        } : Object.assign;
563        var vt = s(function (t, e, n) {
564            for (var o = Object.keys(e), a = 0; a < o.length; )
565                (!n || n && t[o[a]] === i) && (t[o[a]] = e[o[a]]), a++;
566            return t
567        }, "extend", "Use `assign`."), yt = s(function (t, e) {
568            return vt(t, e, !0)
569        }, "merge", "Use `assign`."), bt = 1, xt = /mobile|tablet|ip(ad|hone|od)|android/i, wt = "ontouchstart"in t, kt = x(t, "PointerEvent") !== i, Ct = wt && xt.test(navigator.userAgent), St = 25, Tt = 1, Mt = 2, It = 4, At = 8, Pt = 1, _t = 2, Dt = 4, Et = 8, Ot = 16, Lt = _t | Dt, Ft = Et | Ot, Rt = Lt | Ft, Wt = ["x", "y"], Vt = ["clientX", "clientY"];
570        C.prototype = {handler: function () {}, init: function () {
571                this.evEl && h(this.element, this.evEl, this.domHandler), this.evTarget && h(this.target, this.evTarget, this.domHandler), this.evWin && h(k(this.element), this.evWin, this.domHandler)
572            }, destroy: function () {
573                this.evEl && p(this.element, this.evEl, this.domHandler), this.evTarget && p(this.target, this.evTarget, this.domHandler), this.evWin && p(k(this.element), this.evWin, this.domHandler)
574            }};
575        var zt = {mousedown: Tt, mousemove: Mt, mouseup: It}, Nt = "mousedown", Ht = "mousemove mouseup";
576        l(W, C, {handler: function (t) {
577                var e = zt[t.type];
578                e & Tt && 0 === t.button && (this.pressed = !0), e & Mt && 1 !== t.which && (e = It), this.pressed && (e & It && (this.pressed = !1), this.callback(this.manager, e, {pointers: [t], changedPointers: [t], pointerType: "mouse", srcEvent: t}))
579            }});
580        var Bt = {pointerdown: Tt, pointermove: Mt, pointerup: It, pointercancel: At, pointerout: At}, Yt = {2: "touch", 3: "pen", 4: "mouse", 5: "kinect"}, jt = "pointerdown", $t = "pointermove pointerup pointercancel";
581        t.MSPointerEvent && !t.PointerEvent && (jt = "MSPointerDown", $t = "MSPointerMove MSPointerUp MSPointerCancel"), l(V, C, {handler: function (t) {
582                var e = this.store, n = !1, i = t.type.toLowerCase().replace("ms", ""), o = Bt[i], a = Yt[t.pointerType] || t.pointerType, r = "touch" == a, s = v(e, t.pointerId, "pointerId");
583                o & Tt && (0 === t.button || r) ? s < 0 && (e.push(t), s = e.length - 1) : o & (It | At) && (n = !0), s < 0 || (e[s] = t, this.callback(this.manager, o, {pointers: e, changedPointers: [t], pointerType: a, srcEvent: t}), n && e.splice(s, 1))
584            }});
585        var Xt = {touchstart: Tt, touchmove: Mt, touchend: It, touchcancel: At}, qt = "touchstart", Ut = "touchstart touchmove touchend touchcancel";
586        l(z, C, {handler: function (t) {
587                var e = Xt[t.type];
588                if (e === Tt && (this.started = !0), this.started) {
589                    var n = N.call(this, t, e);
590                    e & (It | At) && n[0].length - n[1].length == 0 && (this.started = !1), this.callback(this.manager, e, {pointers: n[0], changedPointers: n[1], pointerType: "touch", srcEvent: t})
591                }
592            }});
593        var Qt = {touchstart: Tt, touchmove: Mt, touchend: It, touchcancel: At}, Zt = "touchstart touchmove touchend touchcancel";
594        l(H, C, {handler: function (t) {
595                var e = Qt[t.type], n = B.call(this, t, e);
596                n && this.callback(this.manager, e, {pointers: n[0], changedPointers: n[1], pointerType: "touch", srcEvent: t})
597            }});
598        var Gt = 2500, Kt = 25;
599        l(Y, C, {handler: function (t, e, n) {
600                var i = "touch" == n.pointerType, o = "mouse" == n.pointerType;
601                if (!(o && n.sourceCapabilities && n.sourceCapabilities.firesTouchEvents)) {
602                    if (i)
603                        j.call(this, e, n);
604                    else if (o && X.call(this, n))
605                        return;
606                    this.callback(t, e, n)
607                }
608            }, destroy: function () {
609                this.touch.destroy(), this.mouse.destroy()
610            }});
611        var Jt = x(ht.style, "touchAction"), te = Jt !== i, ee = "auto", ne = "manipulation", ie = "none", oe = "pan-x", ae = "pan-y", re = function () {
612            if (!te)
613                return!1;
614            var e = {}, n = t.CSS && t.CSS.supports;
615            return["auto", "manipulation", "pan-y", "pan-x", "pan-x pan-y", "none"].forEach(function (i) {
616                e[i] = !n || t.CSS.supports("touch-action", i)
617            }), e
618        }();
619        q.prototype = {set: function (t) {
620                "compute" == t && (t = this.compute()), te && this.manager.element.style && re[t] && (this.manager.element.style[Jt] = t), this.actions = t.toLowerCase().trim()
621            }, update: function () {
622                this.set(this.manager.options.touchAction)
623            }, compute: function () {
624                var t = [];
625                return r(this.manager.recognizers, function (e) {
626                    u(e.options.enable, [e]) && (t = t.concat(e.getTouchAction()))
627                }), U(t.join(" "))
628            }, preventDefaults: function (t) {
629                var e = t.srcEvent, n = t.offsetDirection;
630                if (this.manager.session.prevented)
631                    e.preventDefault();
632                else {
633                    var i = this.actions, o = m(i, ie) && !re[ie], a = m(i, ae) && !re[ae], r = m(i, oe) && !re[oe];
634                    if (o) {
635                        var s = 1 === t.pointers.length, l = t.distance < 2, c = t.deltaTime < 250;
636                        if (s && l && c)
637                            return
638                    }
639                    if (!r || !a)
640                        return o || a && n & Lt || r && n & Ft ? this.preventSrc(e) : void 0
641                }
642            }, preventSrc: function (t) {
643                this.manager.session.prevented = !0, t.preventDefault()
644            }};
645        var se = 1, le = 2, ce = 4, ue = 8, de = ue, he = 16;
646        Q.prototype = {defaults: {}, set: function (t) {
647                return ut(this.options, t), this.manager && this.manager.touchAction.update(), this
648            }, recognizeWith: function (t) {
649                if (a(t, "recognizeWith", this))
650                    return this;
651                var e = this.simultaneous;
652                return t = K(t, this), e[t.id] || (e[t.id] = t, t.recognizeWith(this)), this
653            }, dropRecognizeWith: function (t) {
654                return a(t, "dropRecognizeWith", this) ? this : (t = K(t, this), delete this.simultaneous[t.id], this)
655            }, requireFailure: function (t) {
656                if (a(t, "requireFailure", this))
657                    return this;
658                var e = this.requireFail;
659                return t = K(t, this), -1 === v(e, t) && (e.push(t), t.requireFailure(this)), this
660            }, dropRequireFailure: function (t) {
661                if (a(t, "dropRequireFailure", this))
662                    return this;
663                t = K(t, this);
664                var e = v(this.requireFail, t);
665                return e > -1 && this.requireFail.splice(e, 1), this
666            }, hasRequireFailures: function () {
667                return this.requireFail.length > 0
668            }, canRecognizeWith: function (t) {
669                return!!this.simultaneous[t.id]
670            }, emit: function (t) {
671                function e(e) {
672                    n.manager.emit(e, t)
673                }
674                var n = this, i = this.state;
675                i < ue && e(n.options.event + Z(i)), e(n.options.event), t.additionalEvent && e(t.additionalEvent), i >= ue && e(n.options.event + Z(i))
676            }, tryEmit: function (t) {
677                if (this.canEmit())
678                    return this.emit(t);
679                this.state = 32
680            }, canEmit: function () {
681                for (var t = 0; t < this.requireFail.length; ) {
682                    if (!(this.requireFail[t].state & (32 | se)))
683                        return!1;
684                    t++
685                }
686                return!0
687            }, recognize: function (t) {
688                var e = ut({}, t);
689                if (!u(this.options.enable, [this, e]))
690                    return this.reset(), void(this.state = 32);
691                this.state & (de | he | 32) && (this.state = se), this.state = this.process(e), this.state & (le | ce | ue | he) && this.tryEmit(e)
692            }, process: function (t) {}, getTouchAction: function () {}, reset: function () {}}, l(J, Q, {defaults: {pointers: 1}, attrTest: function (t) {
693                var e = this.options.pointers;
694                return 0 === e || t.pointers.length === e
695            }, process: function (t) {
696                var e = this.state, n = t.eventType, i = e & (le | ce), o = this.attrTest(t);
697                return i && (n & At || !o) ? e | he : i || o ? n & It ? e | ue : e & le ? e | ce : le : 32
698            }}), l(tt, J, {defaults: {event: "pan", threshold: 10, pointers: 1, direction: Rt}, getTouchAction: function () {
699                var t = this.options.direction, e = [];
700                return t & Lt && e.push(ae), t & Ft && e.push(oe), e
701            }, directionTest: function (t) {
702                var e = this.options, n = !0, i = t.distance, o = t.direction, a = t.deltaX, r = t.deltaY;
703                return o & e.direction || (e.direction & Lt ? (o = 0 === a ? Pt : a < 0 ? _t : Dt, n = a != this.pX, i = Math.abs(t.deltaX)) : (o = 0 === r ? Pt : r < 0 ? Et : Ot, n = r != this.pY, i = Math.abs(t.deltaY))), t.direction = o, n && i > e.threshold && o & e.direction
704            }, attrTest: function (t) {
705                return J.prototype.attrTest.call(this, t) && (this.state & le || !(this.state & le) && this.directionTest(t))
706            }, emit: function (t) {
707                this.pX = t.deltaX, this.pY = t.deltaY;
708                var e = G(t.direction);
709                e && (t.additionalEvent = this.options.event + e), this._super.emit.call(this, t)
710            }}), l(et, J, {defaults: {event: "pinch", threshold: 0, pointers: 2}, getTouchAction: function () {
711                return[ie]
712            }, attrTest: function (t) {
713                return this._super.attrTest.call(this, t) && (Math.abs(t.scale - 1) > this.options.threshold || this.state & le)
714            }, emit: function (t) {
715                if (1 !== t.scale) {
716                    var e = t.scale < 1 ? "in" : "out";
717                    t.additionalEvent = this.options.event + e
718                }
719                this._super.emit.call(this, t)
720            }}), l(nt, Q, {defaults: {event: "press", pointers: 1, time: 251, threshold: 9}, getTouchAction: function () {
721                return[ee]
722            }, process: function (t) {
723                var e = this.options, n = t.pointers.length === e.pointers, i = t.distance < e.threshold, a = t.deltaTime > e.time;
724                if (this._input = t, !i || !n || t.eventType & (It | At) && !a)
725                    this.reset();
726                else if (t.eventType & Tt)
727                    this.reset(), this._timer = o(function () {
728                        this.state = de, this.tryEmit()
729                    }, e.time, this);
730                else if (t.eventType & It)
731                    return de;
732                return 32
733            }, reset: function () {
734                clearTimeout(this._timer)
735            }, emit: function (t) {
736                this.state === de && (t && t.eventType & It ? this.manager.emit(this.options.event + "up", t) : (this._input.timeStamp = gt(), this.manager.emit(this.options.event, this._input)))
737            }}), l(it, J, {defaults: {event: "rotate", threshold: 0, pointers: 2}, getTouchAction: function () {
738                return[ie]
739            }, attrTest: function (t) {
740                return this._super.attrTest.call(this, t) && (Math.abs(t.rotation) > this.options.threshold || this.state & le)
741            }}), l(ot, J, {defaults: {event: "swipe", threshold: 10, velocity: .3, direction: Lt | Ft, pointers: 1}, getTouchAction: function () {
742                return tt.prototype.getTouchAction.call(this)
743            }, attrTest: function (t) {
744                var e, n = this.options.direction;
745                return n & (Lt | Ft) ? e = t.overallVelocity : n & Lt ? e = t.overallVelocityX : n & Ft && (e = t.overallVelocityY), this._super.attrTest.call(this, t) && n & t.offsetDirection && t.distance > this.options.threshold && t.maxPointers == this.options.pointers && mt(e) > this.options.velocity && t.eventType & It
746            }, emit: function (t) {
747                var e = G(t.offsetDirection);
748                e && this.manager.emit(this.options.event + e, t), this.manager.emit(this.options.event, t)
749            }}), l(at, Q, {defaults: {event: "tap", pointers: 1, taps: 1, interval: 300, time: 250, threshold: 9, posThreshold: 10}, getTouchAction: function () {
750                return[ne]
751            }, process: function (t) {
752                var e = this.options, n = t.pointers.length === e.pointers, i = t.distance < e.threshold, a = t.deltaTime < e.time;
753                if (this.reset(), t.eventType & Tt && 0 === this.count)
754                    return this.failTimeout();
755                if (i && a && n) {
756                    if (t.eventType != It)
757                        return this.failTimeout();
758                    var r = !this.pTime || t.timeStamp - this.pTime < e.interval, s = !this.pCenter || O(this.pCenter, t.center) < e.posThreshold;
759                    if (this.pTime = t.timeStamp, this.pCenter = t.center, s && r ? this.count += 1 : this.count = 1, this._input = t, 0 === this.count % e.taps)
760                        return this.hasRequireFailures() ? (this._timer = o(function () {
761                            this.state = de, this.tryEmit()
762                        }, e.interval, this), le) : de
763                }
764                return 32
765            }, failTimeout: function () {
766                return this._timer = o(function () {
767                    this.state = 32
768                }, this.options.interval, this), 32
769            }, reset: function () {
770                clearTimeout(this._timer)
771            }, emit: function () {
772                this.state == de && (this._input.tapCount = this.count, this.manager.emit(this.options.event, this._input))
773            }}), rt.VERSION = "2.0.7", rt.defaults = {domEvents: !1, touchAction: "compute", enable: !0, inputTarget: null, inputClass: null, preset
773: [[it, {enable: !1}], [et, {enable: !1}, ["rotate"]], [ot, {direction: Lt}], [tt, {direction: Lt}, ["swipe"]], [at], [at, {event: "doubletap", taps: 2}, ["tap"]], [nt]], cssProps: {userSelect: "none", touchSelect: "none", touchCallout: "none", contentZooming: "none", userDrag: "none", tapHighlightColor: "rgba(0,0,0,0)"}};
774        st.prototype = {set: function (t) {
775                return ut(this.options, t), t.touchAction && this.touchAction.update(), t.inputTarget && (this.input.destroy(), this.input.target = t.inputTarget, this.input.init()), this
776            }, stop: function (t) {
777                this.session.stopped = t ? 2 : 1
778            }, recognize: function (t) {
779                var e = this.session;
780                if (!e.stopped) {
781                    this.touchAction.preventDefaults(t);
782                    var n, i = this.recognizers, o = e.curRecognizer;
783                    (!o || o && o.state & de) && (o = e.curRecognizer = null);
784                    for (var a = 0; a < i.length; )
785                        n = i[a], 2 === e.stopped || o && n != o && !n.canRecognizeWith(o) ? n.reset() : n.recognize(t), !o && n.state & (le | ce | ue) && (o = e.curRecognizer = n), a++
786                }
787            }, get: function (t) {
788                if (t instanceof Q)
789                    return t;
790                for (var e = this.recognizers, n = 0; n < e.length; n++)
791                    if (e[n].options.event == t)
792                        return e[n];
793                return null
794            }, add: function (t) {
795                if (a(t, "add", this))
796                    return this;
797                var e = this.get(t.options.event);
798                return e && this.remove(e), this.recognizers.push(t), t.manager = this, this.touchAction.update(), t
799            }, remove: function (t) {
800                if (a(t, "remove", this))
801                    return this;
802                if (t = this.get(t)) {
803                    var e = this.recognizers, n = v(e, t);
804                    -1 !== n && (e.splice(n, 1), this.touchAction.update())
805                }
806                return this
807            }, on: function (t, e) {
808                if (t !== i && e !== i) {
809                    var n = this.handlers;
810                    return r(g(t), function (t) {
811                        n[t] = n[t] || [], n[t].push(e)
812                    }), this
813                }
814            }, off: function (t, e) {
815                if (t !== i) {
816                    var n = this.handlers;
817                    return r(g(t), function (t) {
818                        e ? n[t] && n[t].splice(v(n[t], e), 1) : delete n[t]
819                    }), this
820                }
821            }, emit: function (t, e) {
822                this.options.domEvents && ct(t, e);
823                var n = this.handlers[t] && this.handlers[t].slice();
824                if (n && n.length) {
825                    e.type = t, e.preventDefault = function () {
826                        e.srcEvent.preventDefault()
827                    };
828                    for (var i = 0; i < n.length; )
829                        n[i](e), i++
830                }
831            }, destroy: function () {
832                this.element && lt(this, !1), this.handlers = {}, this.session = {}, this.input.destroy(), this.element = null
833            }}, ut(rt, {INPUT_START: Tt, INPUT_MOVE: Mt, INPUT_END: It, INPUT_CANCEL: At, STATE_POSSIBLE: se, STATE_BEGAN: le, STATE_CHANGED: ce, STATE_ENDED: ue, STATE_RECOGNIZED: de, STATE_CANCELLED: he, STATE_FAILED: 32, DIRECTION_NONE: Pt, DIRECTION_LEFT: _t, DIRECTION_RIGHT: Dt, DIRECTION_UP: Et, DIRECTION_DOWN: Ot, DIRECTION_HORIZONTAL: Lt, DIRECTION_VERTICAL: Ft, DIRECTION_ALL: Rt, Manager: st, Input: C, TouchAction: q, TouchInput: H, MouseInput: W, PointerEventInput: V, TouchMouseInput: Y, SingleTouchInput: z, Recognizer: Q, AttrRecognizer: J, Tap: at, Pan: tt, Swipe: ot, Pinch: et, Rotate: it, Press: nt, on: h, off: p, each: r, merge: yt, extend: vt, assign: ut, inherit: l, bindFn: c, prefixed: x}), (void 0 !== t ? t : "undefined" != typeof self ? self : {}).Hammer = rt, "function" == typeof define && define.amd ? define(function () {
834            return rt
835        }) : "undefined" != typeof module && module.exports ? module.exports = rt : t.Hammer = rt
836    }(window, document), jQuery.easing.jswing = jQuery.easing.swing, jQuery.extend(jQuery.easing, {def: "easeOutQuad", swing: function (t, e, n, i, o) {
837            return jQuery.easing[jQuery.easing.def](t, e, n, i, o)
838        }, easeInQuad: function (t, e, n, i, o) {
839            return i * (e /= o) * e + n
840        }, easeOutQuad: function (t, e, n, i, o) {
841            return-i * (e /= o) * (e - 2) + n
842        }, easeInOutQuad: function (t, e, n, i, o) {
843            return(e /= o / 2) < 1 ? i / 2 * e * e + n : -i / 2 * (--e * (e - 2) - 1) + n
844        }, easeInCubic: function (t, e, n, i, o) {
845            return i * (e /= o) * e * e + n
846        }, easeOutCubic: function (t, e, n, i, o) {
847            return i * ((e = e / o - 1) * e * e + 1) + n
848        }, easeInOutCubic: function (t, e, n, i, o) {
849            return(e /= o / 2) < 1 ? i / 2 * e * e * e + n : i / 2 * ((e -= 2) * e * e + 2) + n
850        }, easeInQuart: function (t, e, n, i, o) {
851            return i * (e /= o) * e * e * e + n
852        }, easeOutQuart: function (t, e, n, i, o) {
853            return-i * ((e = e / o - 1) * e * e * e - 1) + n
854        }, easeInOutQuart: function (t, e, n, i, o) {
855            return(e /= o / 2) < 1 ? i / 2 * e * e * e * e + n : -i / 2 * ((e -= 2) * e * e * e - 2) + n
856        }, easeInQuint: function (t, e, n, i, o) {
857            return i * (e /= o) * e * e * e * e + n
858        }, easeOutQuint: function (t, e, n, i, o) {
859            return i * ((e = e / o - 1) * e * e * e * e + 1) + n
860        }, easeInOutQuint: function (t, e, n, i, o) {
861            return(e /= o / 2) < 1 ? i / 2 * e * e * e * e * e + n : i / 2 * ((e -= 2) * e * e * e * e + 2) + n
862        }, easeInSine: function (t, e, n, i, o) {
863            return-i * Math.cos(e / o * (Math.PI / 2)) + i + n
864        }, easeOutSine: function (t, e, n, i, o) {
865            return i * Math.sin(e / o * (Math.PI / 2)) + n
866        }, easeInOutSine: function (t, e, n, i, o) {
867            return-i / 2 * (Math.cos(Math.PI * e / o) - 1) + n
868        }, easeInExpo: function (t, e, n, i, o) {
869            return 0 == e ? n : i * Math.pow(2, 10 * (e / o - 1)) + n
870        }, easeOutExpo: function (t, e, n, i, o) {
871            return e == o ? n + i : i * (1 - Math.pow(2, -10 * e / o)) + n
872        }, easeInOutExpo: function (t, e, n, i, o) {
873            return 0 == e ? n : e == o ? n + i : (e /= o / 2) < 1 ? i / 2 * Math.pow(2, 10 * (e - 1)) + n : i / 2 * (2 - Math.pow(2, -10 * --e)) + n
874        }, easeInCirc: function (t, e, n, i, o) {
875            return-i * (Math.sqrt(1 - (e /= o) * e) - 1) + n
876        }, easeOutCirc: function (t, e, n, i, o) {
877            return i * Math.sqrt(1 - (e = e / o - 1) * e) + n
878        }, easeInOutCirc: function (t, e, n, i, o) {
879            return(e /= o / 2) < 1 ? -i / 2 * (Math.sqrt(1 - e * e) - 1) + n : i / 2 * (Math.sqrt(1 - (e -= 2) * e) + 1) + n
880        }, easeInElastic: function (t, e, n, i, o) {
881            var a = 1.70158, r = 0, s = i;
882            if (0 == e)
883                return n;
884            if (1 == (e /= o))
885                return n + i;
886            if (r || (r = .3 * o), s < Math.abs(i)) {
887                s = i;
888                a = r / 4
889            } else
890                a = r / (2 * Math.PI) * Math.asin(i / s);
891            return-s * Math.pow(2, 10 * (e -= 1)) * Math.sin((e * o - a) * (2 * Math.PI) / r) + n
892        }, easeOutElastic: function (t, e, n, i, o) {
893            var a = 1.70158, r = 0, s = i;
894            if (0 == e)
895                return n;
896            if (1 == (e /= o))
897                return n + i;
898            if (r || (r = .3 * o), s < Math.abs(i)) {
899                s = i;
900                a = r / 4
901            } else
902                a = r / (2 * Math.PI) * Math.asin(i / s);
903            return s * Math.pow(2, -10 * e) * Math.sin((e * o - a) * (2 * Math.PI) / r) + i + n
904        }, easeInOutElastic: function (t, e, n, i, o) {
905            var a = 1.70158, r = 0, s = i;
906            if (0 == e)
907                return n;
908            if (2 == (e /= o / 2))
909                return n + i;
910            if (r || (r = o * (.3 * 1.5)), s < Math.abs(i)) {
911                s = i;
912                a = r / 4
913            } else
914                a = r / (2 * Math.PI) * Math.asin(i / s);
915            return e < 1 ? s * Math.pow(2, 10 * (e -= 1)) * Math.sin((e * o - a) * (2 * Math.PI) / r) * -.5 + n : s * Math.pow(2, -10 * (e -= 1)) * Math.sin((e * o - a) * (2 * Math.PI) / r) * .5 + i + n
916        }, easeInBack: function (t, e, n, i, o, a) {
917            return void 0 == a && (a = 1.70158), i * (e /= o) * e * ((a + 1) * e - a) + n
918        }, easeOutBack: function (t, e, n, i, o, a) {
919            return void 0 == a && (a = 1.70158), i * ((e = e / o - 1) * e * ((a + 1) * e + a) + 1) + n
920        }, easeInOutBack: function (t, e, n, i, o, a) {
921            return void 0 == a && (a = 1.70158), (e /= o / 2) < 1 ? i / 2 * (e * e * ((1 + (a *= 1.525)) * e - a)) + n : i / 2 * ((e -= 2) * e * ((1 + (a *= 1.525)) * e + a) + 2) + n
922        }, easeInBounce: function (t, e, n, i, o) {
923            return i - jQuery.easing.easeOutBounce(t, o - e, 0, i, o) + n
924        }, easeOutBounce: function (t, e, n, i, o) {
925            return(e /= o) < 1 / 2.75 ? i * (7.5625 * e * e) + n : e < 2 / 2.75 ? i * (7.5625 * (e -= 1.5 / 2.75) * e + .75) + n : e < 2.5 / 2.75 ? i * (7.5625 * (e -= 2.25 / 2.75) * e + .9375) + n : i * (7.5625 * (e -= 2.625 / 2.75) * e + .984375) + n
926        }, easeInOutBounce: function (t, e, n, i, o) {
927            return e < o / 2 ? .5 * jQuery.easing.easeInBounce(t, 2 * e, 0, i, o) + n : .5 * jQuery.easing.easeOutBounce(t, 2 * e - o, 0, i, o) + .5 * i + n
928        }}), function (t) {
929        "function" == typeof define && define.amd ? define(["jquery", "hammerjs"], t) : "object" == typeof exports ? t(require("jquery"), require("hammerjs")) : t(jQuery, Hammer)
930    }(function (t, e) {
931        function n(n, i) {
932            var o = t(n);
933            o.data("hammer") || o.data("hammer", new e(o[0], i))
934        }
935        t.fn.hammer = function (t) {
936            return this.each(function () {
937                n(this, t)
938            })
939        }, e.Manager.prototype.emit = function (e) {
940            return function (n, i) {
941                e.call(this, n, i), t(this.element).trigger({type: n, gesture: i})
942            }
943        }(e.Manager.prototype.emit)
944    }), function (t) {
945        "use strict";
946        function e(t) {
947            t = t || {};
948            for (var e = 1; e < arguments.length; e++)
949                if (arguments[e])
950                    for (var n in arguments[e])
951                        arguments[e].hasOwnProperty(n) && (t[n] = arguments[e][n]);
952            return t
953        }
954        function n() {
955            this._done = [], this._fail = []
956        }
957        function i(t, e, n) {
958            t.addEventListener ? t.addEventListener(e, n) : t.attachEvent("on" + e, function () {
959                n.call(t)
960            })
961        }
962        n.prototype = {execute: function (t, e) {
963                var n = t.length;
964                for (e = Array.prototype.slice.call(e); n--; )
965                    t[n].apply(null, e)
966            }, resolve: function () {
967                this.execute(this._done, arguments)
968            }, reject: function () {
969                this.execute(this._fail, arguments)
970            }, done: function (t) {
971                this._done.push(t)
972            }, fail: function (t) {
973                this._fail.push(t)
974            }};
975        var o = function () {
976            var t = 0;
977            return function (n, i) {
978                var o = this;
979                o.url = n, o.options_default = {autoplay: 1, loop: 1, mute: 1, controls: 0, startTime: 0, endTime: 0}, o.options = e({}, o.options_default, i), o.videoID = o.parseURL(n), o.videoID && (o.ID = t++, o.loadAPI(), o.init())
980            }
981        }();
982        o.prototype.parseURL = function (t) {
983            var e = function (t) {
984                var e = /.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/, n = t.match(e);
985                return!(!n || 11 !== n[1].length) && n[1]
986            }(t), n = function (t) {
987                var e = /https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)/, n = t.match(e);
988                return!(!n || !n[3]) && n[3]
989            }(t), i = function (t) {
990                for (var e = t.split(/,(?=mp4\:|webm\:|ogv\:|ogg\:)/), n = {}, i = 0, o = 0; o < e.length; o++) {
991                    var a = e[o].match(/^(mp4|webm|ogv|ogg)\:(.*)/);
992                    a && a[1] && a[2] && (n["ogv" === a[1] ? "ogg" : a[1]] = a[2], i = 1)
993                }
994                return!!i && n
995            }(t);
996            return e ? (this.type = "youtube", e) : n ? (this.type = "vimeo", n) : !!i && (this.type = "local", i)
997        }, o.prototype.isValid = function () {
998            return!!this.videoID
999        }, o.prototype.on = function (t, e) {
1000            this.userEventsList = this.userEventsList || [], (this.userEventsList[t] || (this.userEventsList[t] = [])).push(e)
1001        }, o.prototype.off = function (t, e) {
1002            if (this.userEventsList && this.userEventsList[t])
1003                if (e)
1004                    for (var n = 0; n < this.userEventsList[t].length; n++)
1005                        this.userEventsList[t][n] === e && (this.userEventsList[t][n] = !1);
1006                else
1007                    delete this.userEventsList[t]
1008        }, o.prototype.fire = function (t) {
1009            var e = [].slice.call(arguments, 1);
1010            if (this.userEventsList && void 0 !== this.userEventsList[t])
1011                for (var n in this.userEventsList[t])
1012                    this.userEventsList[t][n] && this.userEventsList[t][n].apply(this, e)
1013        }, o.prototype.play = function (t) {
1014            var e = this;
1015            e.player && ("youtube" === e.type && e.player.playVideo && (void 0 !== t && e.player.seekTo(t || 0), e.player.playVideo()), "vimeo" === e.type && (void 0 !== t && e.player.setCurrentTime(t), e.player.getPaused().then(function (t) {
1016                t && e.player.play()
1017            })), "local" === e.type && (void 0 !== t && (e.player.currentTime = t), e.player.play()))
1018        }, o.prototype.pause = function () {
1019            this.player && ("youtube" === this.type && this.player.pauseVideo && this.player.pauseVideo(), "vimeo" === this.type && this.player.pause(), "local" === this.type && this.player.pause())
1020        }, o.prototype.getImageURL = function (t) {
1021            var e = this;
1022            if (e.videoImage)
1023                t(e.videoImage);
1024            else {
1025                if ("youtube" === e.type) {
1026                    var n = ["maxresdefault", "sddefault", "hqdefault", "0"], i = 0, o = new Image;
1027                    o.onload = function () {
1028                        120 !== (this.naturalWidth || this.width) || i === n.length - 1 ? (e.videoImage = "https://img.youtube.com/vi/" + e.videoID + "/" + n[i] + ".jpg", t(e.videoImage)) : (i++, this.src = "https://img.youtube.com/vi/" + e.videoID + "/" + n[i] + ".jpg")
1029                    }, o.src = "https://img.youtube.com/vi/" + e.videoID + "/" + n[i] + ".jpg"
1030                }
1031                if ("vimeo" === e.type) {
1032                    var a = new XMLHttpRequest;
1033                    a.open("GET", "https://vimeo.com/api/v2/video/" + e.videoID + ".json", !0), a.onreadystatechange = function () {
1034                        if (4 === this.readyState && this.status >= 200 && this.status < 400) {
1035                            var n = JSON.parse(this.responseText);
1036                            e.videoImage = n[0].thumbnail_large, t(e.videoImage)
1037                        }
1038                    }, a.send(), a = null
1039                }
1040            }
1041        }, o.prototype.getIframe = function (e) {
1042            var n = this;
1043            n.$iframe ? e(n.$iframe) : n.onAPIready(function () {
1044                var o;
1045                if (n.$iframe || ((o = document.createElement("div")).style.display = "none"), "youtube" === n.type) {
1046                    n.playerOptions = {}, n.playerOptions.videoId = n.videoID, n.playerOptions.playerVars = {autohide: 1, rel: 0, autoplay: 0}, n.options.controls || (n.playerOptions.playerVars.iv_load_policy = 3, n.playerOptions.playerVars.modestbranding = 1, n.playerOptions.playerVars.controls = 0, n.playerOptions.playerVars.showinfo = 0, n.playerOptions.playerVars.disablekb = 1);
1047                    var a, r;
1048                    n.playerOptions.events = {onReady: function (t) {
1049                            n.options.mute && t.target.mute(), n.options.autoplay && n.play(n.options.startTime), n.fire("ready", t)
1050                        }, onStateChange: function (t) {
1051                            n.options.loop && t.data === YT.PlayerState.ENDED && n.play(n.options.startTime), a || t.data !== YT.PlayerState.PLAYING || (a = 1, n.fire("started", t)), t.data === YT.PlayerState.PLAYING && n.fire("play", t), t.data === YT.PlayerState.PAUSED && n.fire("pause", t), t.data === YT.PlayerState.ENDED && n.fire("end", t), n.options.endTime && (t.data === YT.PlayerState.PLAYING ? r = setInterval(function () {
1052                                n.options.endTime && n.player.getCurrentTime() >= n.options.endTime && (n.options.loop ? n.play(n.options.startTime) : n.pause())
1053                            }, 150) : clearInterval(r))
1054                        }};
1055                    var s = !n.$iframe;
1056                    if (s) {
1057                        var l = document.createElement("div");
1058                        l.setAttribute("id", n.playerID), o.appendChild(l), document.body.appendChild(o)
1059                    }
1060                    n.player = n.player || new t.YT.Player(n.playerID, n.playerOptions), s && (n.$iframe = document.getElementById(n.playerID), n.videoWidth = parseInt(n.$iframe.getAttribute("width"), 10) || 1280, n.videoHeight = parseInt(n.$iframe.getAttribute("height"), 10) || 720)
1061                }
1062                if ("vimeo" === n.type) {
1063                    n.playerOptions = "", n.playerOptions += "player_id=" + n.playerID, n.playerOptions += "&autopause=0", n.options.controls || (n.playerOptions += "&badge=0&byline=0&portrait=0&title=0"), n.playerOptions += "&autoplay=" + (n.options.autoplay ? "1" : "0"), n.playerOptions += "&loop=" + (n.options.loop ? 1 : 0), n.$iframe || (n.$iframe = document.createElement("iframe"), n.$iframe.
1063setAttribute("id", n.playerID), n.$iframe.setAttribute("src", "https://player.vimeo.com/video/" + n.videoID + "?" + n.playerOptions), n.$iframe.setAttribute("frameborder", "0"), o.appendChild(n.$iframe), document.body.appendChild(o)), n.player = n.player || new Vimeo.Player(n.$iframe), n.player.getVideoWidth().then(function (t) {
1064                        n.videoWidth = t || 1280
1065                    }), n.player.getVideoHeight().then(function (t) {
1066                        n.videoHeight = t || 720
1067                    }), n.player.setVolume(n.options.mute ? 0 : 100);
1068                    var c;
1069                    n.player.on("timeupdate", function (t) {
1070                        c || n.fire("started", t), c = 1, n.options.endTime && n.options.endTime && t.seconds >= n.options.endTime && (n.options.loop ? n.play(n.options.startTime) : n.pause())
1071                    }), n.player.on("play", function (t) {
1072                        n.fire("play", t), n.options.startTime && 0 === t.seconds && n.play(n.options.startTime)
1073                    }), n.player.on("pause", function (t) {
1074                        n.fire("pause", t)
1075                    }), n.player.on("ended", function (t) {
1076                        n.fire("end", t)
1077                    }), n.player.on("loaded", function (t) {
1078                        n.fire("ready", t)
1079                    })
1080                }
1081                if ("local" === n.type) {
1082                    if (!n.$iframe) {
1083                        n.$iframe = document.createElement("video"), n.options.mute && (n.$iframe.muted = !0), n.options.loop && (n.$iframe.loop = !0), n.$iframe.setAttribute("id", n.playerID), o.appendChild(n.$iframe), document.body.appendChild(o);
1084                        for (var u in n.videoID)
1085                            !function (t, e, n) {
1086                                var i = document.createElement("source");
1087                                i.src = e, i.type = n, t.appendChild(i)
1088                            }(n.$iframe, n.videoID[u], "video/" + u)
1089                    }
1090                    n.player = n.player || n.$iframe;
1091                    var d;
1092                    i(n.player, "playing", function (t) {
1093                        d || n.fire("started", t), d = 1
1094                    }), i(n.player, "timeupdate", function () {
1095                        n.options.endTime && n.options.endTime && this.currentTime >= n.options.endTime && (n.options.loop ? n.play(n.options.startTime) : n.pause())
1096                    }), i(n.player, "play", function (t) {
1097                        n.fire("play", t)
1098                    }), i(n.player, "pause", function (t) {
1099                        n.fire("pause", t)
1100                    }), i(n.player, "ended", function (t) {
1101                        n.fire("end", t)
1102                    }), i(n.player, "loadedmetadata", function () {
1103                        n.videoWidth = this.videoWidth || 1280, n.videoHeight = this.videoHeight || 720, n.fire("ready"), n.options.autoplay && n.play(n.options.startTime)
1104                    })
1105                }
1106                e(n.$iframe)
1107            })
1108        }, o.prototype.init = function () {
1109            var t = this;
1110            t.playerID = "VideoWorker-" + t.ID
1111        };
1112        var a = 0, r = 0;
1113        o.prototype.loadAPI = function () {
1114            var e = this;
1115            if (!a || !r) {
1116                var n = "";
1117                if ("youtube" !== e.type || a || (a = 1, n = "//www.youtube.com/iframe_api"), "vimeo" !== e.type || r || (r = 1, n = "//player.vimeo.com/api/player.js"), n) {
1118                    "file://" === t.location.origin && (n = "http:" + n);
1119                    var i = document.createElement("script"), o = document.getElementsByTagName("head")[0];
1120                    i.src = n, o.appendChild(i), o = null, i = null
1121                }
1122            }
1123        };
1124        var s = 0, l = 0, c = new n, u = new n;
1125        o.prototype.onAPIready = function (e) {
1126            var n = this;
1127            if ("youtube" === n.type && ("undefined" != typeof YT && 0 !== YT.loaded || s ? "object" == typeof YT && 1 === YT.loaded ? e() : c.done(function () {
1128                e()
1129            }) : (s = 1, t.onYouTubeIframeAPIReady = function () {
1130                t.onYouTubeIframeAPIReady = null, c.resolve("done"), e()
1131            })), "vimeo" === n.type)
1132                if ("undefined" != typeof Vimeo || l)
1133                    "undefined" != typeof Vimeo ? e() : u.done(function () {
1134                        e()
1135                    });
1136                else {
1137                    l = 1;
1138                    var i = setInterval(function () {
1139                        "undefined" != typeof Vimeo && (clearInterval(i), u.resolve("done"), e())
1140                    }, 20)
1141                }
1142            "local" === n.type && e()
1143        }, t.VideoWorker = o
1144    }(window), function () {
1145        "use strict";
1146        if ("undefined" != typeof jarallax) {
1147            var t = jarallax.constructor, e = t.prototype.init;
1148            t.prototype.init = function () {
1149                var t = this;
1150                e.apply(t), t.video && t.video.getIframe(function (e) {
1151                    var n = e.parentNode;
1152                    t.css(e, {position: t.image.position, top: "0px", left: "0px", right: "0px", bottom: "0px", width: "100%", height: "100%", maxWidth: "none", maxHeight: "none", visibility: "hidden", margin: 0, zIndex: -1}), t.$video = e, t.image.$container.appendChild(e), n.parentNode.removeChild(n)
1153                })
1154            };
1155            var n = t.prototype.coverImage;
1156            t.prototype.coverImage = function () {
1157                var t = this;
1158                n.apply(t), t.video && "IFRAME" === t.image.$item.nodeName && t.css(t.image.$item, {height: t.image.$item.getBoundingClientRect().height + 400 + "px", marginTop: -200 + parseFloat(t.css(t.image.$item, "margin-top")) + "px"})
1159            };
1160            var i = t.prototype.initImg;
1161            t.prototype.initImg = function () {
1162                var t = this, e = i.apply(t);
1163                if (t.options.videoSrc || (t.options.videoSrc = t.$item.getAttribute("data-jarallax-video") || !1), t.options.videoSrc) {
1164                    var n = new VideoWorker(t.options.videoSrc, {startTime: t.options.videoStartTime || 0, endTime: t.options.videoEndTime || 0});
1165                    if (n.isValid() && (t.image.useImgTag = !0, n.on("ready", function () {
1166                        var e = t.onScroll;
1167                        t.onScroll = function () {
1168                            e.apply(t), t.isVisible() ? n.play() : n.pause()
1169                        }
1170                    }), n.on("started", function () {
1171                        t.image.$default_item = t.image.$item, t.image.$item = t.$video, t.image.width = t.options.imgWidth = t.video.videoWidth || 1280, t.image.height = t.options.imgHeight = t.video.videoHeight || 720, t.coverImage(), t.clipContainer(), t.onScroll(), t.image.$default_item && (t.image.$default_item.style.display = "none")
1172                    }), t.video = n, "local" !== n.type && n.getImageURL(function (e) {
1173                        t.image.src = e, t.init()
1174                    })), "local" !== n.type)
1175                        return!1;
1176                    if (!e)
1177                        return t.image.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", !0
1178                }
1179                return e
1180            };
1181            var o = t.prototype.destroy;
1182            t.prototype.destroy = function () {
1183                var t = this;
1184                o.apply(t)
1185            }
1186        }
1187    }(), function (t) {
1188        "use strict";
1189        function e(t) {
1190            var e = ["O", "Moz", "ms", "Ms", "Webkit"], n = e.length;
1191            if (void 0 !== s.style[t])
1192                return!0;
1193            for (t = t.charAt(0).toUpperCase() + t.substr(1); --n > - 1 && void 0 === s.style[e[n] + t]; )
1194                ;
1195            return n >= 0
1196        }
1197        function n() {
1198            a = t.innerWidth || document.documentElement.clientWidth, r = t.innerHe
1198ight || document.documentElement.clientHeight
1199        }
1200        function i(t, e, n) {
1201            t.addEventListener ? t.addEventListener(e, n) : t.attachEvent("on" + e, function () {
1202                n.call(t)
1203            })
1204        }
1205        function o(e) {
1206            t.requestAnimationFrame(function () {
1207                "scroll" !== e.type && n();
1208                for (var t = 0, i = g.length; t < i; t++)
1209                    "scroll" !== e.type && (g[t].coverImage(), g[t].clipContainer()), g[t].onScroll()
1210            })
1211        }
1212        Date.now || (Date.now = function () {
1213            return(new Date).getTime()
1214        }), t.requestAnimationFrame || function () {
1215            for (var e = ["webkit", "moz"], n = 0; n < e.length && !t.requestAnimationFrame; ++n) {
1216                var i = e[n];
1217                t.requestAnimationFrame = t[i + "RequestAnimationFrame"], t.cancelAnimationFrame = t[i + "CancelAnimationFrame"] || t[i + "CancelRequestAnimationFrame"]
1218            }
1219            if (/iP(ad|hone|od).*OS 6/.test(t.navigator.userAgent) || !t.requestAnimationFrame || !t.cancelAnimationFrame) {
1220                var o = 0;
1221                t.requestAnimationFrame = function (t) {
1222                    var e = Date.now(), n = Math.max(o + 16, e);
1223                    return setTimeout(function () {
1224                        t(o = n)
1225                    }, n - e)
1226                }, t.cancelAnimationFrame = clearTimeout
1227            }
1228        }();
1229        var a, r, s = document.createElement("div"), l = e("transform"), c = e("perspective"), u = navigator.userAgent, d = u.toLowerCase().indexOf("android") > -1, h = /iPad|iPhone|iPod/.test(u) && !t.MSStream, p = u.toLowerCase().indexOf("firefox") > -1, f = u.indexOf("MSIE ") > -1 || u.indexOf("Trident/") > -1 || u.indexOf("Edge/") > -1, m = document.all && !t.atob;
1230        n();
1231        var g = [], v = function () {
1232            var t = 0;
1233            return function (e, n) {
1234                var i, o = this;
1235                if (o.$item = e, o.defaults = {type: "scroll", speed: .5, imgSrc: null, imgWidth: null, imgHeight: null, elementInViewport: null, zIndex: -100, noAndroid: !1, noIos: !0, onScroll: null, onInit: null, onDestroy: null, onCoverImage: null}, i = JSON.parse(o.$item.getAttribute("data-jarallax") || "{}"), o.options = o.extend({}, o.defaults, i, n), !(!l || d && o.options.noAndroid || h && o.options.noIos)) {
1236                    o.options.speed = Math.min(2, Math.max(-1, parseFloat(o.options.speed)));
1237                    var a = o.options.elementInViewport;
1238                    a && "object" == typeof a && void 0 !== a.length && (a = a[0]), !a instanceof Element && (a = null), o.options.elementInViewport = a, o.instanceID = t++, o.image = {src: o.options.imgSrc || null, $container: null, $item: null, width: o.options.imgWidth || null, height: o.options.imgHeight || null, useImgTag: h || d || f, position: !c || p ? "absolute" : "fixed"}, o.initImg() && o.init()
1239                }
1240            }
1241        }();
1242        v.prototype.css = function (e, n) {
1243            if ("string" == typeof n)
1244                return t.getComputedStyle ? t.getComputedStyle(e).getPropertyValue(n) : e.style[n];
1245            n.transform && (c && (n.transform += " translateZ(0)"), n.WebkitTransform = n.MozTransform = n.msTransform = n.OTransform = n.transform);
1246            for (var i in n)
1247                e.style[i] = n[i];
1248            return e
1249        }, v.prototype.extend = function (t) {
1250            t = t || {};
1251            for (var e = 1; e < arguments.length; e++)
1252                if (arguments[e])
1253                    for (var n in arguments[e])
1254                        arguments[e].hasOwnProperty(n) && (t[n] = arguments[e][n]);
1255            return t
1256        }, v.prototype.initImg = function () {
1257            var t = this;
1258            return null === t.image.src && (t.image.src = t.css(t.$item, "background-image").replace(/^url\(['"]?/g, "").replace(/['"]?\)$/g, "")), !(!t.image.src || "none" === t.image.src)
1259        }, v.prototype.init = function () {
1260            function t() {
1261                e.coverImage(), e.clipContainer(), e.onScroll(!0), e.options.onInit && e.options.onInit.call(e), setTimeout(function () {
1262                    e.$item && e.css(e.$item, {"background-image": "none", "background-attachment": "scroll", "background-size": "auto"})
1263                }, 0)
1264            }
1265            var e = this, n = {position: "absolute", top: 0, left: 0, width: "100%", height: "100%", overflow: "hidden", pointerEvents: "none"}, i = {};
1266            e.$item.setAttribute("data-jarallax-original-styles", e.$item.getAttribute("style")), "static" === e.css(e.$item, "position") && e.css(e.$item, {position: "relative"}), "auto" === e.css(e.$item, "z-index") && e.css(e.$item, {zIndex: 0}), e.image.$container = document.createElement("div"), e.css(e.image.$container, n), e.css(e.image.$container, {visibility: "hidden", "z-index": e.options.zIndex}), e.image.$container.setAttribute("id", "jarallax-container-" + e.instanceID), e.$item.appendChild(e.image.$container), e.image.useImgTag ? (e.image.$item = document.createElement("img"), e.
1266image.$item.setAttribute("src", e.image.src), i = e.extend({"max-width": "none"}, n, i)) : (e.image.$item = document.createElement("div"), i = e.extend({"background-position": "50% 50%", "background-size": "100% auto", "background-repeat": "no-repeat no-repeat", "background-image": 'url("' + e.image.src + '")'}, n, i));
1267            for (var o = 0, a = e.$item; null !== a && a !== document && 0 === o; ) {
1268                var r = e.css(a, "-webkit-transform") || e.css(a, "-moz-transform") || e.css(a, "transform");
1269                r && "none" !== r && (o = 1, e.css(e.image.$container, {transform: "translateX(0) translateY(0)"})), a = a.parentNode
1270            }
1271            (o || "opacity" === e.options.type || "scale" === e.options.type || "scale-opacity" === e.options.type) && (e.image.position = "absolute"), i.position = e.image.position, e.css(e.image.$item, i), e.image.$container.appendChild(e.image.$item), e.image.width && e.image.height ? t() : e.getImageSize(e.image.src, function (n, i) {
1272                e.image.width = n, e.image.height = i, t()
1273            }), g.push(e)
1274        }, v.prototype.destroy = function () {
1275            for (var t = this, e = 0, n = g.length; e < n; e++)
1276                if (g[e].instanceID === t.instanceID) {
1277                    g.splice(e, 1);
1278                    break
1279                }
1280            var i = t.$item.getAttribute("data-jarallax-original-styles");
1281            t.$item.removeAttribute("data-jarallax-original-styles"), "null" === i ? t.$item.removeAttribute("style") : t.$item.setAttribute("style", i), t.$clipStyles && t.$clipStyles.parentNode.removeChild(t.$clipStyles), t.image.$container.parentNode.removeChild(t.image.$container), t.options.onDestroy && t.options.onDestroy.call(t), delete t.$item.jarallax;
1282            for (var o in t)
1283                delete t[o]
1284        }, v.prototype.getImageSize = function (t, e) {
1285            if (t && e) {
1286                var n = new Image;
1287                n.onload = function () {
1288                    e(n.width, n.height)
1289                }, n.src = t
1290            }
1291        }, v.prototype.clipContainer = function () {
1292            if (!m) {
1293                var t = this, e = t.image.$container.getBoundingClientRect(), n = e.width, i = e.height;
1294                t.$clipStyles || (t.$clipStyles = document.createElement("style"), t.$clipStyles.setAttribute("type", "text/css"), t.$clipStyles.setAttribute("id", "#jarallax-clip-" + t.instanceID), (document.head || document.getElementsByTagName("head")[0]).appendChild(t.$clipStyles));
1295                var o = ["#jarallax-container-" + t.instanceID + " {", "   clip: rect(0 " + n + "px " + i + "px 0);", "   clip: rect(0, " + n + "px, " + i + "px, 0);", "}"].join("\n");
1296                t.$clipStyles.styleSheet ? t.$clipStyles.styleSheet.cssText = o : t.$clipStyles.innerHTML = o
1297            }
1298        }, v.prototype.coverImage = function () {
1299            var t = this;
1300            if (t.image.width && t.image.height) {
1301                var e = t.image.$container.getBoundingClientRect(), n = e.width, i = e.height, o = e.left, a = t.image.width, s = t.image.height, l = t.options.speed, c = "scroll" === t.options.type || "scroll-opacity" === t.options.type, u = 0, d = 0, h = i, p = 0, f = 0;
1302                c && (u = l < 0 ? l * Math.max(i, r) : l * (i + r), l > 1 ? h = Math.abs(u - r) : l < 0 ? h = u / l + Math.abs(u) : h += Math.abs(r - i) * (1 - l), u /= 2), (d = h * a / s) < n && (h = (d = n) * s / a), c ? (p = o + (n - d) / 2, f = (r - h) / 2) : (p = (n - d) / 2, f = (i - h) / 2), "absolute" === t.image.position && (p -= o), t.parallaxScrollDistance = u, t.css(t.image.$item, {width: d + "px", height: h + "px", marginLeft: p + "px", marginTop: f + "px"}), t.options.onCoverImage && t.options.onCoverImage.call(t)
1303            }
1304        }, v.prototype.isVisible = function () {
1305            return this.isElementInViewport || !1
1306        }, v.prototype.onScroll = function (t) {
1307            var e = this;
1308            if (e.image.width && e.image.height) {
1309                var n = e.$item.getBoundingClientRect(), i = n.top, o = n.height, s = {visibility: "visible", backgroundPosition: "50% 50%"}, l = n;
1310                if (e.options.elementInViewport && (l = e.options.elementInViewport.getBoundingClientRect()), e.isElementInViewport = l.bottom >= 0 && l.right >= 0 && l.top <= r && l.left <= a, t || e.isElementInViewport) {
1311                    var c = Math.max(0, i), u = Math.max(0, o + i), d = Math.max(0, -i), h = Math.max(0, i + o - r), p = Math.max(0, o - (i + o - r)), f = Math.max(0, -i + r - o), m = 1 - 2 * (r - i) / (r + o), g = 1;
1312                    if (o < r ? g = 1 - (d || h) / o : u <= r ? g = u / r : p <= r && (g = p / r), "opacity" !== e.options.type && "scale-opacity" !== e.options.type && "scroll-opacity" !== e.options.type || (s.transform = "", s.opacity = g), "scale" === e.options.type || "scale-opacity" === e.options.type) {
1313                        var v = 1;
1314                        e.options.speed < 0 ? v -= e.options.speed * g : v += e.options.speed * (1 - g), s.transform = "scale(" + v + ")"
1315                    }
1316                    if ("scroll" === e.options.type || "scroll-opacity" === e.options.type) {
1317                        var y = e.parallaxScrollDistance * m;
1318                        "absolute" === e.image.position && (y -= i), s.transform = "translateY(" + y + "px)"
1319                    }
1320                    e.css(e.image.$item, s), e.options.onScroll && e.options.onScroll.call(e, {section: n, beforeTop: c, beforeTopEnd: u, afterTop: d, beforeBottom: h, beforeBottomEnd: p, afterBottom: f, visiblePercent: g, fromViewportCenter: m})
1321                }
1322            }
1323        }, i(t, "scroll", o), i(t, "resize", o), i(t, "orientationchange", o), i(t, "load", o);
1324        var y = function (t) {
1325            ("object" == typeof HTMLElement ? t instanceof HTMLElement : t && "object" == typeof t && null !== t && 1 === t.nodeType && "string" == typeof t.nodeName) && (t = [t]);
1326            var e, n = arguments[1], i = Array.prototype.slice.call(arguments, 2), o = t.length, a = 0;
1327            for (a; a < o; a++)
1328                if ("object" == typeof n || void 0 === n ? t[a].jarallax || (t[a].jarallax = new v(t[a], n)) : t[a].jarallax && (e = t[a].jarallax[n].apply(t[a].jarallax, i)), void 0 !== e)
1329                    return e;
1330            return t
1331        };
1332        y.constructor = v;
1333        var b = t.jarallax;
1334        if (t.jarallax = y, t.jarallax.noConflict = function () {
1335            return t.jarallax = b, this
1336        }, "undefined" != typeof jQuery) {
1337            var x = function () {
1338                var e = arguments || [];
1339                Array.prototype.unshift.call(e, this);
1340                var n = y.apply(t, e);
1341                return"object" != typeof n ? n : this
1342            };
1343            x.constructor = v;
1344            var w = jQuery.fn.jarallax;
1345            jQuery.fn.jarallax = x, jQuery.fn.jarallax.noConflict = function () {
1346                return jQuery.fn.jarallax = w, this
1347            }
1348        }
1349        i(t, "DOMContentLoaded", function () {
1350            y(document.querySelectorAll("[data-jarallax], [data-jarallax-video]"))
1351        })
1352    }(window), function (t) {
1353        t.fn.sticky = function (e) {
1354            var n = {topSpacing: 0, zIndex: "", stopper: ".sticky-stopper", stickyClass: !1}, i = t.extend({}, n, e), o = "number" == typeof i.zIndex, a = 0 < t(i.stopper).length || "number" == typeof i.stopper;
1355            return this.each(function () {
1356                function e() {
1357                    var e = p.scrollTop(), s = h, f = n.parent().width();
1358                    if (d.width(f), a && "string" == typeof h && (s = t(h).offset().top - r - l), u < e) {
1359                        if (i.stickyClass && n.addClass(i.stickyClass), n.after(d).css({position: "fixed", top: l, width: f}), o && n.css({zIndex: c}), a && s < e) {
1360                            var m = s - e + l;
1361                            n.css({top: m})
1362                        }
1363                    } else
1364                        i.stickyClass && n.removeClass(i.stickyClass), n.css({position: "static", top: null, left: null, width: "auto"}), d.remove()
1365                }
1366                var n = t(this), r = n.outerHeight(), s = n.outerWidth(), l = i.topSpacing, c = i.zIndex, u = n.offset().top - l, d = t("<div></div>").width(s).height(r).addClass("sticky-placeholder"), h = i.stopper, p = t(window);
1367                p.innerHeight() > r && (p.bind("scroll", e), p.bind("load", e), p.bind("resize", e))
1368            })
1369        }
1370    }(jQuery), function (t, e) {
1371        "function" == typeof define && define.amd ? define(e) : "object" == typeof exports ? module.exports = e() : t.PhotoSwipe = e()
1372    }(this, function () {
1373        "use strict";
1374        return function (t, e, n, i) {
1375            var o = {features: null, bind: function (t, e, n, i) {
1376                    var o = (i ? "remove" : "add") + "EventListener";
1377                    e = e.split(" ");
1378                    for (var a = 0; a < e.length; a++)
1379                        e[a] && t[o](e[a], n, !1)
1380                }, isArray: function (t) {
1381                    return t instanceof Array
1382                }, createEl: function (t, e) {
1383                    var n = document.createElement(e || "div");
1384                    return t && (n.className = t), n
1385                }, getScrollY: function () {
1386                    var t = window.pageYOffset;
1387                    return void 0 !== t ? t : document.documentElement.scrollTop
1388                }, unbind: function (t, e, n) {
1389                    o.bind(t, e, n, !0)
1390                }, removeClass: function (t, e) {
1391                    var n = new RegExp("(\\s|^)" + e + "(\\s|$)");
1392                    t.className = t.className.replace(n, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, "")
1393                }, addClass: function (t, e) {
1394                    o.hasClass(t, e) || (t.className += (t.className ? " " : "") + e)
1395                }, hasClass: function (t, e) {
1396                    return t.className && new RegExp("(^|\\s)" + e + "(\\s|$)").test(t.className)
1397                }, getChildByClass: function (t, e) {
1398                    for (var n = t.firstChild; n; ) {
1399                        if (o.hasClass(n, e))
1400                            return n;
1401                        n = n.nextSibling
1402                    }
1403                }, arraySearch: function (t, e, n) {
1404                    for (var i = t.length; i--; )
1405                        if (t[i][n] === e)
1406                            return i;
1407                    return-1
1408                }, extend: function (t, e, n) {
1409                    for (var i in e)
1410                        if (e.hasOwnProperty(i)) {
1411                            if (n && t.hasOwnProperty(i))
1412                                continue;
1413                            t[i] = e[i]
1414                        }
1415                }, easing: {sine: {out: function (t) {
1416                            return Math.sin(t * (Math.PI / 2))
1417                        }, inOut: function (t) {
1418                            return-(Math.cos(Math.PI * t) - 1) / 2
1419                        }}, cubic: {out: function (t) {
1420                            return--t * t * t + 1
1421                        }}}, detectFeatures: function () {
1422                    if (o.features)
1423                        return o.features;
1424                    var t = o.createEl().style, e = "", n = {};
1425                    if (n.oldIE = document.all && !document.addEventListener, n.touch = "ontouchstart"in window, window.requestAnimationFrame && (n.raf = window.requestAnimationFrame, n.caf = window.cancelAnimationFrame), n.pointerEvent = navigator.pointerEnabled || navigator.msPointerEnabled, !n.pointerEvent) {
1426                        var i = navigator.userAgent;
1427                        if (/iP(hone|od)/.test(navigator.platform)) {
1428                            var a = navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);
1429                            a && a.length > 0 && (a = parseInt(a[1], 10)) >= 1 && 8 > a && (n.isOldIOSPhone = !0)
1430                        }
1431                        var r = i.match(/Android\s([0-9\.]*)/), s = r ? r[1] : 0;
1432                        (s = parseFloat(s)) >= 1 && (4.4 > s && (n.isOldAndroid = !0), n.androidVersion = s), n.isMobileOpera = /opera mini|opera mobi/i.test(i)
1433                    }
1434                    for (var l, c, u = ["transform", "perspective", "animationName"], d = ["", "webkit", "Moz", "ms", "O"], h = 0; 4 > h; h++) {
1435                        e = d[h];
1436                        for (var p = 0; 3 > p; p++)
1437                            l = u[p], c = e + (e ? l.charAt(0).toUpperCase() + l.slice(1) : l), !n[l] && c in t && (n[l] = c);
1438                        e && !n.raf && (e = e.toLowerCase(), n.raf = window[e + "RequestAnimationFrame"], n.raf && (n.caf = window[e + "CancelAnimationFrame"] || window[e + "CancelRequestAnimationFrame"]))
1439                    }
1440                    if (!n.raf) {
1441                        var f = 0;
1442                        n.raf = function (t) {
1443                            var e = (new Date).getTime(), n = Math.max(0, 16 - (e - f)), i = window.setTimeout(function () {
1444                                t(e + n)
1445                            }, n);
1446                            return f = e + n, i
1447                        }, n.caf = function (t) {
1448                            clearTimeout(t)
1449                        }
1450                    }
1451                    return n.svg = !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect, o.features = n, n
1452                }};
1453            o.detectFeatures(), o.features.oldIE && (o.bind = function (t, e, n, i) {
1454                e = e.split(" ");
1455                for (var o, a = (i ? "detach" : "attach") + "Event", r = 0; r < e.length; r++)
1456                    if (o = e[r])
1457                        if ("object" == typeof n && n.handleEvent) {
1458                            if (i) {
1459                                if (!n["oldIE" + o])
1460                                    return!1
1461                            } else
1462                                n["oldIE" + o] = function () {
1463                                    n.handleEvent.call(n)
1464                                };
1465                            t[a]("on" + o, n["oldIE" + o])
1466                        } else
1467                            t[a]("on" + o, n)
1468            });
1469            var a = this, r = {allowPanToNext: !0, spacing: .12, bgOpacity: 1, mouseUsed: !1, loop: !0, pinchToClose: !0, closeOnScroll: !0, closeOnVerticalDrag: !0, verticalDragRange: .75, hideAnimationDuration: 333, showAnimationDuration: 333, showHideOpacity: !1, focus: !0, escKey: !0, arrowKeys: !0, mainScrollEndFriction: .35, panEndFriction: .35, isClickableElement: function (t) {
1470                    return"A" === t.tagName
1471                }, getDoubleTapZoom: function (t, e) {
1472                    return t ? 1 : e.initialZoomLevel < .7 ? 1 : 1.33
1473                }, maxSpreadZoom: 1.33, modal: !0, scaleMode: "fit"};
1474            o.extend(r, i);
1475            var s, l, c, u, d, h, p, f, m, g, v, y, b, x, w, k, C, S, T, M, I, A, P, _, D, E, O, L, F, R, W, V, z, N, H, B, Y, j, $, X, q, U, Q, Z, G, K, J, tt, et, nt, it, ot, at, rt, st, lt, ct = {x: 0, y: 0}, ut = {x: 0, y: 0}, dt = {x: 0, y: 0}, ht = {}, pt = 0, ft = {}, mt = {x: 0, y: 0}, gt = 0, vt = !0, yt = [], bt = {}, xt = !1, wt = function (t, e) {
1476                o.extend(a, e.publicMethods), yt.push(t)
1477            }, kt = function (t) {
1478                var e = Ue();
1479                return t > e - 1 ? t - e : 0 > t ? e + t : t
1480            }, Ct = {}, St = function (t, e) {
1481                return Ct[t] || (Ct[t] = []), Ct[t].push(e)
1482            }, Tt = function (t) {
1483                var e = Ct[t];
1484                if (e) {
1485                    var n = Array.prototype.slice.call(arguments);
1486                    n.shift();
1487                    for (var i = 0; i < e.length; i++)
1488                        e[i].apply(a, n)
1489                }
1490            }, Mt = function () {
1491                return(new Date).getTime()
1492            }, It = function (t) {
1493                rt = t, a.bg.style.opacity = t * r.bgOpacity
1494            }, At = function (t, e, n, i, o) {
1495                (!xt || o && o !== a.currItem) && (i /= o ? o.fitRatio : a.currItem.fitRatio), t[A] = y + e + "px, " + n + "px" + b + " scale(" + i + ")"
1496            }, Pt = function (t) {
1497                et && (t && (g > a.currItem.fitRatio ? xt || (rn(a.currItem, !1, !0), xt = !0) : xt && (rn(a.currItem), xt = !1)), At(et, dt.x, dt.y, g))
1498            }, _t = function (t) {
1499                t.container && At(t.container.style, t.initialPosition.x, t.initialPosition.y, t.initialZoomLevel, t)
1500            }, Dt = function (t, e) {
1501                e[A] = y + t + "px, 0px" + b
1502            }, Et = function (t, e) {
1503                if (!r.loop && e) {
1504                    var n = u + (mt.x * pt - t) / mt.x, i = Math.round(t - pe.x);
1505                    (0 > n && i > 0 || n >= Ue() - 1 && 0 > i) && (t = pe.x + i * r.mainScrollEndFriction)
1506                }
1507                pe.x = t, Dt(t, d)
1508            }, Ot = function (t, e) {
1509                var n = fe[t] - ft[t];
1510                return ut[t] + ct[t] + n - n * (e / v)
1511            }, Lt = function (t, e) {
1512                t.x = e.x, t.y = e.y, e.id && (t.id = e.id)
1513            }, Ft = function (t) {
1514                t.x = Math.round(t.x), t.y = Math.round(t.y)
1515            }, Rt = null, Wt = function () {
1516                Rt && (o.unbind(document, "mousemove", Wt), o.addClass(t, "pswp--has_mouse"), r.mouseUsed = !0, Tt("mou
1516seUsed")), Rt = setTimeout(function () {
1517                    Rt = null
1518                }, 100)
1519            }, Vt = function () {
1520                o.bind(document, "keydown", a), W.transform && o.bind(a.scrollWrap, "click", a), r.mouseUsed || o.bind(document, "mousemove", Wt), o.bind(window, "resize scroll", a), Tt("bindEvents")
1521            }, zt = function () {
1522                o.unbind(window, "resize", a), o.unbind(window, "scroll", m.scroll), o.unbind(document, "keydown", a), o.unbind(document, "mousemove", Wt), W.transform && o.unbind(a.scrollWrap, "click", a), j && o.unbind(window, p, a), Tt("unbindEvents")
1523            }, Nt = function (t, e) {
1524                var n = en(a.currItem, ht, t);
1525                return e && (tt = n), n
1526            }, Ht = function (t) {
1527                return t || (t = a.currItem), t.initialZoomLevel
1528            }, Bt = function (t) {
1529                return t || (t = a.currItem), t.w > 0 ? r.maxSpreadZoom : 1
1530            }, Yt = function (t, e, n, i) {
1531                return i === a.currItem.initialZoomLevel ? (n[t] = a.currItem.initialPosition[t], !0) : (n[t] = Ot(t, i), n[t] > e.min[t] ? (n[t] = e.min[t], !0) : n[t] < e.max[t] && (n[t] = e.max[t], !0))
1532            }, jt = function () {
1533                if (A) {
1534                    var e = W.perspective && !_;
1535                    return y = "translate" + (e ? "3d(" : "("), void(b = W.perspective ? ", 0px)" : ")")
1536                }
1537                A = "left", o.addClass(t, "pswp--ie"), Dt = function (t, e) {
1538                    e.left = t + "px"
1539                }, _t = function (t) {
1540                    var e = t.fitRatio > 1 ? 1 : t.fitRatio, n = t.container.style, i = e * t.w, o = e * t.h;
1541                    n.width = i + "px", n.height = o + "px", n.left = t.initialPosition.x + "px", n.top = t.initialPosition.y + "px"
1542                }, Pt = function () {
1543                    if (et) {
1544                        var t = et, e = a.currItem, n = e.fitRatio > 1 ? 1 : e.fitRatio, i = n * e.w, o = n * e.h;
1545                        t.width = i + "px", t.height = o + "px", t.left = dt.x + "px", t.top = dt.y + "px"
1546                    }
1547                }
1548            }, $t = function (t) {
1549                var e = "";
1550                r.escKey && 27 === t.keyCode ? e = "close" : r.arrowKeys && (37 === t.keyCode ? e = "prev" : 39 === t.keyCode && (e = "next")), e && (t.ctrlKey || t.altKey || t.shiftKey || t.metaKey || (t.preventDefault ? t.preventDefault() : t.returnValue = !1, a[e]()))
1551            }, Xt = function (t) {
1552                t && (q || X || nt || B) && (t.preventDefault(), t.stopPropagation())
1553            }, qt = function () {
1554                a.setScrollOffset(0, o.getScrollY())
1555            }, Ut = {}, Qt = 0, Zt = function (t) {
1556                Ut[t] && (Ut[t].raf && E(Ut[t].raf), Qt--, delete Ut[t])
1557            }, Gt = function (t) {
1558                Ut[t] && Zt(t), Ut[t] || (Qt++, Ut[t] = {})
1559            }, Kt = function () {
1560                for (var t in Ut)
1561                    Ut.hasOwnProperty(t) && Zt(t)
1562            }, Jt = function (t, e, n, i, o, a, r) {
1563                var s, l = Mt();
1564                Gt(t);
1565                var c = function () {
1566                    if (Ut[t]) {
1567                        if ((s = Mt() - l) >= i)
1568                            return Zt(t), a(n), void(r && r());
1569                        a((n - e) * o(s / i) + e), Ut[t].raf = D(c)
1570                    }
1571                };
1572                c()
1573            }, te = {shout: Tt, listen: St, viewportSize: ht, options: r, isMainScrollAnimating: function () {
1574                    return nt
1575                }, getZoomLevel: function () {
1576                    return g
1577                }, getCurrentIndex: function () {
1578                    return u
1579                }, isDragging: function () {
1580                    return j
1581                }, isZooming: function () {
1582                    return G
1583                }, setScrollOffset: function (t, e) {
1584                    ft.x = t, R = ft.y = e, Tt("updateScrollOffset", ft)
1585                }, applyZoomPan: function (t, e, n, i) {
1586                    dt.x = e, dt.y = n, g = t, Pt(i)
1587                }, init: function () {
1588                    if (!s && !l) {
1589                        var n;
1590                        a.framework = o, a.template = t, a.bg = o.getChildByClass(t, "pswp__bg"), O = t.className, s = !0, W = o.detectFeatures(), D = W.raf, E = W.caf, A = W.transform, F = W.oldIE, a.scrollWrap = o.getChildByClass(t, "pswp__scroll-wrap"), a.container = o.getChildByClass(a.scrollWrap, "psw
1590p__container"), d = a.container.style, a.itemHolders = k = [{el: a.container.children[0], wrap: 0, index: -1}, {el: a.container.children[1], wrap: 0, index: -1}, {el: a.container.children[2], wrap: 0, index: -1}], k[0].el.style.display = k[2].el.style.display = "none", jt(), m = {resize: a.updateSize, scroll: qt, keydown: $t, click: Xt};
1591                        var i = W.isOldIOSPhone || W.isOldAndroid || W.isMobileOpera;
1592                        for (W.animationName && W.transform && !i || (r.showAnimationDuration = r.hideAnimationDuration = 0), n = 0; n < yt.length; n++)
1593                            a["init" + yt[n]]();
1594                        e && (a.ui = new e(a, o)).init(), Tt("firstUpdate"), u = u || r.index || 0, (isNaN(u) || 0 > u || u >= Ue()) && (u = 0), a.currItem = qe(u), (W.isOldIOSPhone || W.isOldAndroid) && (vt = !1), t.setAttribute("aria-hidden", "false"), r.modal && (vt ? t.style.position = "fixed" : (t.style.position = "absolute", t.style.top = o.getScrollY() + "px")), void 0 === R && (Tt("initialLayout"), R = L = o.getScrollY());
1595                        var c = "pswp--open ";
1596                        for (r.mainClass && (c += r.mainClass + " "), r.showHideOpacity && (c += "pswp--animate_opacity "), c += _?"pswp--touch":"pswp--notouch", c += W.animationName?" pswp--css_animation":"", c += W.svg?" pswp--svg":"", o.addClass(t, c), a.updateSize(), h = - 1, gt = null, n = 0; 3 > n; n++)
1597                            Dt((n + h) * mt.x, k[n].el.style);
1598                        F || o.bind(a.scrollWrap, f, a), St("initialZoomInEnd", function () {
1599                            a.setContent(k[0], u - 1), a.setContent(k[2], u + 1), k[0].el.style.display = k[2].el.style.display = "block", r.focus && t.focus(), Vt()
1600                        }), a.setContent(k[1], u), a.updateCurrItem(), Tt("afterInit"), vt || (x = setInterval(function () {
1601                            Qt || j || G || g !== a.currItem.initialZoomLevel || a.updateSize()
1602                        }, 1e3)), o.addClass(t, "pswp--visible")
1603                    }
1604                }, close: function () {
1605                    s && (s = !1, l = !0, Tt("close"), zt(), Ze(a.currItem, null, !0, a.destroy))
1606                }, destroy: function () {
1607                    Tt("destroy"), Ye && clearTimeout(Ye), t.setAttribute("aria-hidden", "true"), t.className = O, x && clearInterval(x), o.unbind(a.scrollWrap, f, a), o.unbind(window, "scroll", a), be(), Kt(), Ct = null
1608                }, panTo: function (t, e, n) {
1609                    n || (t > tt.min.x ? t = tt.min.x : t < tt.max.x && (t = tt.max.x), e > tt.min.y ? e = tt.min.y : e < tt.max.y && (e = tt.max.y)), dt.x = t, dt.y = e, Pt()
1610                }, handleEvent: function (t) {
1611                    t = t || window.event, m[t.type] && m[t.type](t)
1612                }, goTo: function (t) {
1613                    var e = (t = kt(t)) - u;
1614                    gt = e, u = t, a.currItem = qe(u), pt -= e, Et(mt.x * pt), Kt(), nt = !1, a.updateCurrItem()
1615                }, next: function () {
1616                    a.goTo(u + 1)
1617                }, prev: function () {
1618                    a.goTo(u - 1)
1619                }, updateCurrZoomItem: function (t) {
1620                    if (t && Tt("beforeChange", 0), k[1].el.children.length) {
1621                        var e = k[1].el.children[0];
1622                        et = o.hasClass(e, "pswp__zoom-wrap") ? e.style : null
1623                    } else
1624                        et = null;
1625                    tt = a.currItem.bounds, v = g = a.currItem.initialZoomLevel, dt.x = tt.center.x, dt.y = tt.center.y, t && Tt("afterChange")
1626                }, invalidateCurrItems: function () {
1627                    w = !0;
1628                    for (var t = 0; 3 > t; t++)
1629                        k[t].item && (k[t].item.needsUpdate = !0)
1630                }, updateCurrItem: function (t) {
1631                    if (0 !== gt) {
1632                        var e, n = Math.abs(gt);
1633                        if (!(t && 2 > n)) {
1634                            a.currItem = qe(u), xt = !1, Tt("beforeChange", gt), n >= 3 && (h += gt + (gt > 0 ? -3 : 3), n = 3);
1635                            for (var i = 0; n > i; i++)
1636                                gt > 0 ? (e = k.shift(), k[2] = e, h++, Dt((h + 2) * mt.x, e.el.style), a.setContent(e, u - n + i + 1 + 1)) : (e = k.pop(), k.unshift(e), h--, Dt(h * mt.x, e.el.style), a.setContent(e, u + n - i - 1 - 1));
1637                            if (et && 1 === Math.abs(gt)) {
1638                                var o = qe(C);
1639                                o.initialZoomLevel !== g && (en(o, ht), rn(o), _t(o))
1640                            }
1641                            gt = 0, a.updateCurrZoomItem(), C = u, Tt("afterChange")
1642                        }
1643                    }
1644                }, updateSize: function (e) {
1645                    if (!vt && r.modal) {
1646                        var n = o.getScrollY();
1647                        if (R !== n && (t.style.top = n + "px", R = n), !e && bt.x === window.innerWidth && bt.y === window.innerHeight)
1648                            return;
1649                        bt.x = window.innerWidth, bt.y = window.innerHeight, t.style.height = bt.y + "px"
1650                    }
1651                    if (ht.x = a.scrollWrap.clientWidth, ht.y = a.scrollWrap.clientHeight, qt(), mt.x = ht.x + Math.round(ht.x * r.spacing), mt.y = ht.y, Et(mt.x * pt), Tt("beforeResize"), void 0 !== h) {
1652                        for (var i, s, l, c = 0; 3 > c; c++)
1653                            i = k[c], Dt((c + h) * mt.x, i.el.style), l = u + c - 1, r.loop && Ue() > 2 && (l = kt(l)), s = qe(l), s && (w || s.needsUpdate || !s.bounds) ? (
1653a.cleanSlide(s), a.setContent(i, l), 1 === c && (a.currItem = s, a.updateCurrZoomItem(!0)), s.needsUpdate = !1) : -1 === i.index && l >= 0 && a.setContent(i, l), s && s.container && (en(s, ht), rn(s), _t(s));
1654                        w = !1
1655                    }
1656                    v = g = a.currItem.initialZoomLevel, (tt = a.currItem.bounds) && (dt.x = tt.center.x, dt.y = tt.center.y, Pt(!0)), Tt("resize")
1657                }, zoomTo: function (t, e, n, i, a) {
1658                    e && (v = g, fe.x = Math.abs(e.x) - dt.x, fe.y = Math.abs(e.y) - dt.y, Lt(ut, dt));
1659                    var r = Nt(t, !1), s = {};
1660                    Yt("x", r, s, t), Yt("y", r, s, t);
1661                    var l = g, c = {x: dt.x, y: dt.y};
1662                    Ft(s);
1663                    var u = function (e) {
1664                        1 === e ? (g = t, dt.x = s.x, dt.y = s.y) : (g = (t - l) * e + l, dt.x = (s.x - c.x) * e + c.x, dt.y = (s.y - c.y) * e + c.y), a && a(e), Pt(1 === e)
1665                    };
1666                    n ? Jt("customZoomTo", 0, 1, n, i || o.easing.sine.inOut, u) : u(1)
1667                }}, ee = {}, ne = {}, ie = {}, oe = {}, ae = {}, re = [], se = {}, le = [], ce = {}, ue = 0, de = {x: 0, y: 0}, he = 0, pe = {x: 0, y: 0}, fe = {x: 0, y: 0}, me = {x: 0, y: 0}, ge = function (t, e) {
1668                return t.x === e.x && t.y === e.y
1669            }, ve = function (t, e) {
1670                return Math.abs(t.x - e.x) < 25 && Math.abs(t.y - e.y) < 25
1671            }, ye = function (t, e) {
1672                return ce.x = Math.abs(t.x - e.x), ce.y = Math.abs(t.y - e.y), Math.sqrt(ce.x * ce.x + ce.y * ce.y)
1673            }, be = function () {
1674                U && (E(U), U = null)
1675            }, xe = function () {
1676                j && (U = D(xe), Re())
1677            }, we = function () {
1678                return!("fit" === r.scaleMode && g === a.currItem.initialZoomLevel)
1679            }, ke = function (t, e) {
1680                return!(!t || t === document) && (!(t.getAttribute("class") && t.getAttribute("class").indexOf("pswp__scroll-wrap") > -1) && (e(t) ? t : ke(t.parentNode, e)))
1681            }, Ce = {}, Se = function (t, e) {
1682                return Ce.prevent = !ke(t.target, r.isClickableElement), Tt("preventDragEvent", t, e, Ce), Ce.prevent
1683            }, Te = function (t, e) {
1684                return e.x = t.pageX, e.y = t.pageY, e.id = t.identifier, e
1685            }, Me = function (t, e, n) {
1686                n.x = .5 * (t.x + e.x), n.y = .5 * (t.y + e.y)
1687            }, Ie = function (t, e, n) {
1688                if (t - z > 50) {
1689                    var i = le.length > 2 ? le.shift() : {};
1690                    i.x = e, i.y = n, le.push(i), z = t
1691                }
1692            }, Ae = function () {
1693                var t = dt.y - a.currItem.initialPosition.y;
1694                return 1 - Math.abs(t / (ht.y / 2))
1695            }, Pe = {}, _e = {}, De = [], Ee = function (t) {
1696                for (; De.length > 0; )
1697                    De.pop();
1698                return P ? (lt = 0, re.forEach(function (t) {
1699                    0 === lt ? De[0] = t : 1 === lt && (De[1] = t), lt++
1700                })) : t.type.indexOf("touch") > -1 ? t.touches && t.touches.length > 0 && (De[0] = Te(t.touches[0], Pe), t.touches.length > 1 && (De[1] = Te(t.touches[1], _e))) : (Pe.x = t.pageX, Pe.y = t.pageY, Pe.id = "", De[0] = Pe), De
1701            }, Oe = function (t, e) {
1702                var n, i, o, s, l = dt[t] + e[t], c = e[t] > 0, u = pe.x + e.x, d = pe.x - se.x;
1703                return n = l > tt.min[t] || l < tt.max[t] ? r.panEndFriction : 1, l = dt[t] + e[t] * n, !r.allowPanToNext && g !== a.currItem.initialZoomLevel || (et ? "h" !== it || "x" !== t || X || (c ? (l > tt.min[t] && (n = r.panEndFriction, tt.min[t] - l, i = tt.min[t] - ut[t]), (0 >= i || 0 > d) && Ue() > 1 ? (s = u, 0 > d && u > se.x && (s = se.x)) : tt.min.x !== tt.max.x && (o = l)) : (l < tt.max[t] && (n = r.panEndFriction, l - tt.max[t], i = ut[t] - tt.max[t]), (0 >= i || d > 0) && Ue() > 1 ? (s = u, d >
1703 0 && u < se.x && (s = se.x)) : tt.min.x !== tt.max.x && (o = l))) : s = u, "x" !== t) ? void(nt || Q || g > a.currItem.fitRatio && (dt[t] += e[t] * n)) : (void 0 !== s && (Et(s, !0), Q = s !== se.x), tt.min.x !== tt.max.x && (void 0 !== o ? dt.x = o : Q || (dt.x += e.x * n)), void 0 !== s)
1704            }, Le = function (t) {
1705                if (!("mousedown" === t.type && t.button > 0)) {
1706                    if (Xe)
1707                        return void t.preventDefault();
1708                    if (!Y || "mousedown" !== t.type) {
1709                        if (Se(t, !0) && t.preventDefault(), Tt("pointerDown"), P) {
1710                            var e = o.arraySearch(re, t.pointerId, "id");
1711                            0 > e && (e = re.length), re[e] = {x: t.pageX, y: t.pageY, id: t.pointerId}
1712                        }
1713                        var n = Ee(t), i = n.length;
1714                        Z = null, Kt(), j && 1 !== i || (j = ot = !0, o.bind(window, p, a), H = st = at = B = Q = q = $ = X = !1, it = null, Tt("firstTouchStart", n), Lt(ut, dt), ct.x = ct.y = 0, Lt(oe, n[0]), Lt(ae, oe), se.x = mt.x * pt, le = [{x: oe.x, y: oe.y}], z = V = Mt(), Nt(g, !0), be(), xe()), !G && i > 1 && !nt && !Q && (v = g, X = !1, G = $ = !0, ct.y = ct.x = 0, Lt(ut, dt), Lt(ee, n[0]), Lt(ne, n[1]), Me(ee, ne, me), fe.x = Math.abs(me.x) - dt.x, fe.y = Math.abs(me.y) - dt.y, K = J = ye(ee, ne))
1715                    }
1716                }
1717            }, Fe = function (t) {
1718                if (t.preventDefault(), P) {
1719                    var e = o.arraySearch(re, t.pointerId, "id");
1720                    if (e > -1) {
1721                        var n = re[e];
1722                        n.x = t.pageX, n.y = t.pageY
1723                    }
1724                }
1725                if (j) {
1726                    var i = Ee(t);
1727                    if (it || q || G)
1728                        Z = i;
1729                    else if (pe.x !== mt.x * pt)
1730                        it = "h";
1731                    else {
1732                        var a = Math.abs(i[0].x - oe.x) - Math.abs(i[0].y - oe.y);
1733                        Math.abs(a) >= 10 && (it = a > 0 ? "h" : "v", Z = i)
1734                    }
1735                }
1736            }, Re = function () {
1737                if (Z) {
1738                    var t = Z.length;
1739                    if (0 !== t)
1740                        if (Lt(ee, Z[0]), ie.x = ee.x - oe.x, ie.y = ee.y - oe.y, G && t > 1) {
1741                            if (oe.x = ee.x, oe.y = ee.y, !ie.x && !ie.y && ge(Z[1], ne))
1742                                return;
1743                            Lt(ne, Z[1]), X || (X = !0, Tt("zoomGestureStarted"));
1744                            var e = ye(ee, ne), n = He(e);
1745                            n > a.currItem.initialZoomLevel + a.currItem.initialZoomLevel / 15 && (st = !0);
1746                            var i = 1, o = Ht(), s = Bt();
1747                            if (o > n)
1748                                if (r.pinchToClose && !st && v <= a.currItem.initialZoomLevel) {
1749                                    var l = 1 - (o - n) / (o / 1.2);
1750                                    It(l), Tt("onPinchClose", l), at = !0
1751                                } else
1752                                    (i = (o - n) / o) > 1 && (i = 1), n = o - i * (o / 3);
1753                            else
1754                                n > s && ((i = (n - s) / (6 * o)) > 1 && (i = 1), n = s + i * o);
1755                            0 > i && (i = 0), K = e, Me(ee, ne, de), ct.x += de.x - me.x, ct.y += de.y - me.y, Lt(me, de), dt.x = Ot("x", n), dt.y = Ot("y", n), H = n > g, g = n, Pt()
1756                        } else {
1757                            if (!it)
1758                                return;
1759                            if (ot && (ot = !1, Math.abs(ie.x) >= 10 && (ie.x -= Z[0].x - ae.x), Math.abs(ie.y) >= 10 && (ie.y -= Z[0].y - ae.y)), oe.x = ee.x, oe.y = ee.y, 0 === ie.x && 0 === ie.y)
1760                                return;
1761                            if ("v" === it && r.closeOnVerticalDrag && !we()) {
1762                                ct.y += ie.y, dt.y += ie.y;
1763                                var c = Ae();
1764                                return B = !0, Tt("onVerticalDrag", c), It(c), void Pt()
1765                            }
1766                            Ie(Mt(), ee.x, ee.y), q = !0, tt = a.currItem.bounds, Oe("x", ie) || (Oe("y", ie), Ft(dt), Pt())
1767                        }
1768                }
1769            }, We = function (t) {
1770                if (W.isOldAndroid) {
1771                    if (Y && "mouseup" === t.type)
1772                        return;
1773                    t.type.indexOf("touch") > -1 && (clearTimeout(Y), Y = setTimeout(function () {
1774                        Y = 0
1775                    }, 600))
1776                }
1777                Tt("pointerUp"), Se(t, !1) && t.preventDefault();
1778                var e;
1779                if (P) {
1780                    var n = o.arraySearch(re, t.pointerId, "id");
1781                    if (n > -1)
1782                        if (e = re.splice(n, 1)[0], navigator.pointerEnabled)
1783                            e.type = t.pointerType || "mouse";
1784                        else {
1785                            var i = {4: "mouse", 2: "touch", 3: "pen"};
1786                            e.type = i[t.pointerType], e.type || (e.type = t.pointerType || "mouse")
1787                        }
1788                }
1789                var s, l = Ee(t), c = l.length;
1790                if ("mouseup" === t.type && (c = 0), 2 === c)
1791                    return Z = null, !0;
1792                1 === c && Lt(ae, l[0]), 0 !== c || it || nt || (e || ("mouseup" === t.type ? e = {x: t.pageX, y: t.pageY, type: "mouse"} : t.changedTouches && t.changedTouches[0] && (e = {x: t.changedTouches[0].pageX, y: t.changedTouches[0].pageY, type: "touch"})), Tt("touchRelease", t, e));
1793                var u = -1;
1794                if (0 === c && (j = !1, o.unbind(window, p, a), be(), G ? u = 0 : -1 !== he && (u = Mt() - he)), he = 1 === c ? Mt() : -1, s = -1 !== u && 150 > u ? "zoom" : "swipe", G && 2 > c && (G = !1, 1 === c && (s = "zoomPointerUp"), Tt("zoomGestureEnded")), Z = null, q || X || nt || B)
1795                    if (Kt(), N || (N = Ve()), N.calculateSwipeSpeed("x"), B)
1796                        if (Ae() < r.verticalDragRange)
1797                            a.close();
1798                        else {
1799                            var d = dt.y, h = rt;
1800                            Jt("verticalDrag", 0, 1, 300, o.easing.cubic.out, function (t) {
1801                                dt.y = (a.currItem.initialPosition.y - d) * t + d, It((1 - h) * t + h), Pt()
1802                            }), Tt("onVerticalDrag", 1)
1803                        }
1804                    else {
1805                        if ((Q || nt) && 0 === c) {
1806                            if (Ne(s, N))
1807                                return;
1808                            s = "zoomPointerUp"
1809                        }
1810                        if (!nt)
1811                            return"swipe" !== s ? void Be() : void(!Q && g > a.currItem.fitRatio && ze(N))
1812                    }
1813            }, Ve = function () {
1814                var t, e, n = {lastFlickOffset: {}, lastFlickDist: {}, lastFlickSpeed: {}, slowDownRatio: {}, slowDownRatioReverse: {}, speedDecelerationRatio: {}, speedDecelerationRatioAbs: {}, distanceOffset: {}, backAnimDestination: {}, backAnimStarted: {}, calculateSwipeSpeed: function (i) {
1815                        le.length > 1 ? (t = Mt() - z + 50, e = le[le.length - 2][i]) : (t = Mt() - V, e = ae[i]), n.lastFlickOffset[i] = oe[i] - e, n.lastFlickDist[i] = Math.abs(n.lastFlickOffset[i]), n.lastFlickDist[i] > 20 ? n.lastFlickSpeed[i] = n.lastFlickOffset[i] / t : n.lastFlickSpeed[i] = 0, Math.abs(n.lastFlickSpeed[i]) < .1 && (n.lastFlickSpeed[i] = 0), n.slowDownRatio[i] = .95, n.slowDownRatioReverse[i] = 1 - n.slowDownRatio[i], n.speedDecelerationRatio[i] = 1
1816                    }, calculateOverBoundsAnimOffset: function (t, e) {
1817                        n.backAnimStarted[t] || (dt[t] > tt.min[t] ? n.backAnimDestination[t] = tt.min[t] : dt[t] < tt.max[t] && (n.backAnimDestination[t] = tt.max[t]), void 0 !== n.backAnimDestination[t] && (n.slowDownRatio[t] = .7, n.slowDownRatioReverse[t] = 1 - n.slowDownRatio[t], n.speedDecelerationRatioAbs[t] < .05 && (n.lastFlickSpeed[t] = 0, n.backAnimStarted[t] = !0, Jt("bounceZoomPan" + t, dt[t], n.backAnimDestination[t], e || 300, o.easing.sine.out, function (e) {
1818                            dt[t] = e, Pt()
1819                        }))))
1820                    }, calculateAnimOffset: function (t) {
1821                        n.backAnimStarted[t] || (n.speedDecelerationRatio[t] = n.speedDecelerationRatio[t] * (n.slowDownRatio[t] + n.slowDownRatioReverse[t] - n.slowDownRatioReverse[t] * n.timeDiff / 10), n.speedDecelerationRatioAbs[t] = Math.abs(n.lastFlickSpeed[t] * n.speedDecelerationRatio[t]), n.distanceOffset[t] = n.lastFlickSpeed[t] * n.speedDecelerationRatio[t] * n.timeDiff, dt[t] += n.distanceOffset[t])
1822                    }, panAnimLoop: function () {
1823                        return Ut.zoomPan && (Ut.zoomPan.raf = D(n.panAnimLoop), n.now = Mt(), n.timeDiff = n.now - n.lastNow, n.lastNow = n.now, n.calculateAnimOffset("x"), n.calculateAnimOffset("y"), Pt(), n.calculateOverBoundsAnimOffset("x"), n.calculateOverBoundsAnimOffset("y"), n.speedDecelerationRatioAbs.x < .05 && n.speedDecelerationRatioAbs.y < .05) ? (dt.x = Math.round(dt.x), dt.y = Math.round(dt.y), Pt(), void Zt("zoomPan")) : void 0
1824                    }};
1825                return n
1826            }, ze = function (t) {
1827                return t.calculateSwipeSpeed("y"), tt = a.currItem.bounds, t.backAnimDestination = {}, t.backAnimStarted = {}, Math.abs(t.lastFlickSpeed.x) <= .05 && Math.abs(t.lastFlickSpeed.y) <= .05 ? (t.speedDecelerationRatioAbs.x = t.speedDecelerationRatioAbs.y = 0, t.calculateOverBoundsAnimOffset("x"), t.calculateOverBoundsAnimOffset("y"), !0) : (Gt("zoomPan"), t.lastNow = Mt(), void t.panAnimLoop())
1828            }, Ne = function (t, e) {
1829                var n;
1830                nt || (ue = u);
1831                var i;
1832                if ("swipe" === t) {
1833                    var s = oe.x - ae.x, l = e.lastFlickDist.x < 10;
1834                    s > 30 && (l || e.lastFlickOffset.x > 20) ? i = -1 : -30 > s && (l || e.lastFlickOffset.x < -20) && (i = 1)
1835                }
1836                var c;
1837                i && (u += i, 0 > u ? (u = r.loop ? Ue() - 1 : 0, c = !0) : u >= Ue() && (u = r.loop ? 0 : Ue() - 1, c = !0), (!c || r.loop) && (gt += i, pt -= i, n = !0));
1838                var d, h = mt.x * pt, p = Math.abs(h - pe.x);
1839                return n || h > pe.x == e.lastFlickSpeed.x > 0 ? (d = Math.abs(e.lastFlickSpeed.x) > 0 ? p / Math.abs(e.lastFlickSpeed.x) : 333, d = Math.min(d, 400), d = Math.max(d, 250)) : d = 333, ue === u && (n = !1), nt = !0, Tt("mainScrollAnimStart"), Jt("mainScroll", pe.x, h, d, o.easing.cubic.out, Et, function () {
1840                    Kt(), nt = !1, ue = -1, (n || ue !== u) && a.updateCurrItem(), Tt("mainScrollAnimComplete")
1841                }), n && a.updateCurrItem(!0), n
1842            }, He = function (t) {
1843                return 1 / J * t * v
1844            }, Be = function () {
1845                var t = g, e = Ht(), n = Bt();
1846                e > g ? t = e : g > n && (t = n);
1847                var i, r = rt;
1848                return at && !H && !st && e > g ? (a.close(), !0) : (at && (i = function (t) {
1849                    It((1 - r) * t + r)
1850                }), a.zoomTo(t, 0, 200, o.easing.cubic.out, i), !0)
1851            };
1852            wt("Gestures", {publicMethods: {initGestures: function () {
1853                        var t = function (t, e, n, i, o) {
1854                            S = t + e, T = t + n, M = t + i, I = o ? t + o : ""
1855                        };
1856                        (P = W.pointerEvent) && W.touch && (W.touch = !1), P ? navigator.pointerEnabled ? t("pointer", "down", "move", "up", "cancel") : t("MSPointer", "Down", "Move", "Up", "Cancel") : W.touch ? (t("touch", "start", "move", "end", "cancel"), _ = !0) : t("mouse", "down", "move", "up"), p = T + " " + M + " " + I, f = S, P && !_ && (_ = navigator.maxTouchPoints > 1 || navigator.msMaxTouchPoints > 1), a.likelyTouchDevice = _, m[S] = Le, m[T] = Fe, m[M] = We, I && (m[I] = m[M]), W.touch && (f += " mousedown", p += " mousemove mouseup", m.mousedown = m[S], m.mousemove = m[T], m.mouseup = m[M]), _ || (r.allowPanToNext = !1)
1857                    }}});
1858            var Ye, je, $e, Xe, qe, Ue, Qe, Ze = function (e, n, i, s) {
1859                Ye && clearTimeout(Ye), Xe = !0, $e = !0;
1860                var l;
1861                e.initialLayout ? (l = e.initialLayout, e.initialLayout = null) : l = r.getThumbBoundsFn && r.getThumbBoundsFn(u);
1862                var d = i ? r.hideAnimationDuration : r.showAnimationDuration, h = function () {
1863                    Zt("initialZoom"), i ? (a.template.removeAttribute("style"), a.bg.removeAttribute("style")) : (It(1), n && (n.style.display = "block"), o.addClass(t, "pswp--animated-in"), Tt("initialZoom" + (i ? "OutEnd" : "InEnd"))), s && s(), Xe = !1
1864                };
1865                if (!d || !l || void 0 === l.x)
1866                    return Tt("initialZoom" + (i ? "Out" : "In")), g = e.initialZoomLevel, Lt(dt, e.initialPosition), Pt(), t.style.opacity = i ? 0 : 1, It(1), void(d ? setTimeout(function () {
1867                        h()
1868                    }, d) : h());
1869                !function () {
1870                    var n = c, s = !a.currItem.src || a.currItem.loadError || r.showHideOpacity;
1871                    e.miniImg && (e.miniImg.style.webkitBackfaceVisibility = "hidden"), i || (g = l.w / e.w, dt.x = l.x, dt.y = l.y - L, a[s ? "template" : "bg"].style.opacity = .001, Pt()), Gt("initialZoom"), i && !n && o.removeClass(t, "pswp--animated-in"), s && (i ? o[(n ? "remove" : "add") + "Class"](t, "pswp--animate_opacity") : setTimeout(function () {
1872                        o.addClass(t, "pswp--animate_opacity")
1873                    }, 30)), Ye = setTimeout(function () {
1874                        if (Tt("initialZoom" + (i ? "Out" : "In")), i) {
1875                            var a = l.w / e.w, r = {x: dt.x, y: dt.y}, c = g, u = rt, p = function (e) {
1876                                1 === e ? (g = a, dt.x = l.x, dt.y = l.y - R) : (g = (a - c) * e + c, dt.x = (l.x - r.x) * e + r.x, dt.y = (l.y - R - r.y) * e + r.y), Pt(), s ? t.style.opacity = 1 - e : It(u - e * u)
1877                            };
1878                            n ? Jt("initialZoom", 0, 1, d, o.easing.cubic.out, p, h) : (p(1), Ye = setTimeout(h, d + 20))
1879                        } else
1880                            g = e.initialZoomLevel, Lt(dt, e.initialPosition), Pt(), It(1), s ? t.style.opacity = 1 : It(1), Ye = setTimeout(h, d + 20)
1881                    }
1881, i ? 25 : 90)
1882                }()
1883            }, Ge = {}, Ke = [], Je = {index: 0, errorMsg: '<div class="pswp__error-msg"><a href="%url%" target="_blank">The image</a> could not be loaded.</div>', forceProgressiveLoading: !1, preload: [1, 1], getNumItemsFn: function () {
1884                    return je.length
1885                }}, tn = function (t, e, n) {
1886                var i = t.bounds;
1887                i.center.x = Math.round((Ge.x - e) / 2), i.center.y = Math.round((Ge.y - n) / 2) + t.vGap.top, i.max.x = e > Ge.x ? Math.round(Ge.x - e) : i.center.x, i.max.y = n > Ge.y ? Math.round(Ge.y - n) + t.vGap.top : i.center.y, i.min.x = e > Ge.x ? 0 : i.center.x, i.min.y = n > Ge.y ? t.vGap.top : i.center.y
1888            }, en = function (t, e, n) {
1889                if (t.src && !t.loadError) {
1890                    var i = !n;
1891                    if (i && (t.vGap || (t.vGap = {top: 0, bottom: 0}), Tt("parseVerticalMargin", t)), Ge.x = e.x, Ge.y = e.y - t.vGap.top - t.vGap.bottom, i) {
1892                        var o = Ge.x / t.w, a = Ge.y / t.h;
1893                        t.fitRatio = a > o ? o : a;
1894                        var s = r.scaleMode;
1895                        "orig" === s ? n = 1 : "fit" === s && (n = t.fitRatio), n > 1 && (n = 1), t.initialZoomLevel = n, t.bounds || (t.bounds = {center: {x: 0, y: 0}, max: {x: 0, y: 0}, min: {x: 0, y: 0}})
1896                    }
1897                    if (!n)
1898                        return;
1899                    return tn(t, t.w * n, t.h * n), i && n === t.initialZoomLevel && (t.initialPosition = t.bounds.center), t.bounds
1900                }
1901                return t.w = t.h = 0, t.initialZoomLevel = t.fitRatio = 1, t.bounds = {center: {x: 0, y: 0}, max: {x: 0, y: 0}, min: {x: 0, y: 0}}, t.initialPosition = t.bounds.center, t.bounds
1902            }, nn = function (t, e, n, i, o, r) {
1903                e.loadError || i && (e.imageAppended = !0, rn(e, i, e === a.currItem && xt), n.appendChild(i), r && setTimeout(function () {
1904                    e && e.loaded && e.placeholder && (e.placeholder.style.display = "none", e.placeholder = null)
1905                }, 500))
1906            }, on = function (t) {
1907                t.loading = !0, t.loaded = !1;
1908                var e = t.img = o.createEl("pswp__img", "img"), n = function () {
1909                    t.loading = !1, t.loaded = !0, t.loadComplete ? t.loadComplete(t) : t.img = null, e.onload = e.onerror = null, e = null
1910                };
1911                return e.onload = n, e.onerror = function () {
1912                    t.loadError = !0, n()
1913                }, e.src = t.src, e
1914            }, an = function (t, e) {
1915                return t.src && t.loadError && t.container ? (e && (t.container.innerHTML = ""), t.container.innerHTML = r.errorMsg.replace("%url%", t.src), !0) : void 0
1916            }, rn = function (t, e, n) {
1917                if (t.src) {
1918                    e || (e = t.container.lastChild);
1919                    var i = n ? t.w : Math.round(t.w * t.fitRatio), o = n ? t.h : Math.round(t.h * t.fitRatio);
1920                    t.placeholder && !t.loaded && (t.placeholder.style.width = i + "px", t.placeholder.style.height = o + "px"), e.style.width = i + "px", e.style.height = o + "px"
1921                }
1922            }, sn = function () {
1923                if (Ke.length) {
1924                    for (var t, e = 0; e < Ke.length; e++)
1925                        (t = Ke[e]).holder.index === t.index && nn(t.index, t.item, t.baseDiv, t.img, 0, t.clearPlaceholder);
1926                    Ke = []
1927                }
1928            };
1929            wt("Controller", {publicMethods: {lazyLoadItem: function (t) {
1930                        t = kt(t);
1931                        var e = qe(t);
1932                        e && (!e.loaded && !e.loading || w) && (Tt("gettingData", t, e), e.src && on(e))
1933                    }, initController: function () {
1934                        o.extend(r, Je, !0), a.items = je = n, qe = a.getItemAt, Ue = r.getNumItemsFn, Qe = r.loop, Ue() < 3 && (r.loop = !1), St("beforeChange", function (t) {
1935                            var e, n = r.preload, i = null === t || t >= 0, o = Math.min(n[0], Ue()), s = Math.min(n[1], Ue());
1936                            for (e = 1; (i?s:o) >= e; e++)
1937                                a.lazyLoadItem(u + e);
1938                            for (e = 1; (i?o:s) >= e; e++)
1939                                a.lazyLoadItem(u - e)
1940                        }), St("initialLayout", function () {
1941                            a.currItem.initialLayout = r.getThumbBoundsFn && r.getThumbBoundsFn(u)
1942                        }), St("mainScrollAnimComplete", sn), St("initialZoomInEnd", sn), St("destroy", function () {
1943                            for (var t, e = 0; e < je.length; e++)
1944                                (t = je[e]).container && (t.container = null), t.placeholder && (t.placeholder = null), t.img && (t.img = null), t.preloader && (t.preloader = null), t.loadError && (t.loaded = t.loadError = !1);
1945                            Ke = null
1946                        })
1947                    }, getItemAt: function (t) {
1948                        return t >= 0 && void 0 !== je[t] && je[t]
1949                    }, allowProgressiveImg: function () {
1950                        return r.forceProgressiveLoading || !_ || r.mouseUsed || screen.width > 1200
1951                    }, setContent: function (t, e) {
1952                        r.loop && (e = kt(e));
1953                        var n = a.getItemAt(t.index);
1954                        n && (n.container = null);
1955                        var i, l = a.getItemAt(e);
1956                        if (l) {
1957                            Tt("gettingData", e, l), t.index = e, t.item = l;
1958                            var c = l.container = o.createEl("pswp__zoom-wrap");
1959                            if (!l.src && l.html && (l.html.tagName ? c.appendChild(l.html) : c.innerHTML = l.html), an(l), en(l, ht), !l.src || l.loadError || l.loaded)
1960                                l.src && !l.loadError && (i = o.createEl("pswp__img", "img"), i.style.opacity = 1, i.src = l.src, rn(l, i), nn(0, l, c, i));
1961                            else {
1962                                if (l.loadComplete = function (n) {
1963                                    if (s) {
1964                                        if (t && t.index === e) {
1965                                            if (an(n, !0))
1966                                                return n.loadComplete = n.img = null, en(n, ht), _t(n), void(t.index === u && a.updateCurrZoomItem());
1967                                            n.imageAppended ? !Xe && n.placeholder && (n.placeholder.style.display = "none", n.placeholder = null) : W.transform && (nt || Xe) ? Ke.push({item: n, baseDiv: c, img: n.img, index: e, holder: t, clearPlaceholder: !0}) : nn(0, n, c, n.img, 0, !0)
1968                                        }
1969                                        n.loadComplete = null, n.img = null, Tt("imageLoadComplete", e, n)
1970                                    }
1971                                }, o.features.transform) {
1972                                    var d = "pswp__img pswp__img--placeholder";
1973                                    d += l.msrc ? "" : " pswp__img--placeholder--blank";
1974                                    var h = o.createEl(d, l.msrc ? "img" : "");
1975                                    l.msrc && (h.src = l.msrc), rn(l, h), c.appendChild(h), l.placeholder = h
1976                                }
1977                                l.loading || on(l), a.allowProgressiveImg() && (!$e && W.transform ? Ke.push({item: l, baseDiv: c, img: l.img, index: e, holder: t}) : nn(0, l, c, l.img, 0, !0))
1978                            }
1979                            $e || e !== u ? _t(l) : (et = c.style, Ze(l, i || l.img)), t.el.innerHTML = "", t.el.a
1979ppendChild(c)
1980                        } else
1981                            t.el.innerHTML = ""
1982                    }, cleanSlide: function (t) {
1983                        t.img && (t.img.onload = t.img.onerror = null), t.loaded = t.loading = t.img = t.imageAppended = !1
1984                    }}});
1985            var ln, cn = {}, un = function (t, e, n) {
1986                var i = document.createEvent("CustomEvent"), o = {origEvent: t, target: t.target, releasePoint: e, pointerType: n || "touch"};
1987                i.initCustomEvent("pswpTap", !0, !0, o), t.target.dispatchEvent(i)
1988            };
1989            wt("Tap", {publicMethods: {initTap: function () {
1990                        St("firstTouchStart", a.onTapStart), St("touchRelease", a.onTapRelease), St("destroy", function () {
1991                            cn = {}, ln = null
1992                        })
1993                    }, onTapStart: function (t) {
1994                        t.length > 1 && (clearTimeout(ln), ln = null)
1995                    }, onTapRelease: function (t, e) {
1996                        if (e && !q && !$ && !Qt) {
1997                            var n = e;
1998                            if (ln && (clearTimeout(ln), ln = null, ve(n, cn)))
1999                                return void Tt("doubleTap", n);
2000                            if ("mouse" === e.type)
2001                                return void un(t, e, "mouse");
2002                            if ("BUTTON" === t.target.tagName.toUpperCase() || o.hasClass(t.target, "pswp__single-tap"))
2003                                return void un(t, e);
2004                            Lt(cn, n), ln = setTimeout(function () {
2005                                un(t, e), ln = null
2006                            }, 300)
2007                        }
2008                    }}});
2009            var dn;
2010            wt("DesktopZoom", {publicMethods: {initDesktopZoom: function () {
2011                        F || (_ ? St("mouseUsed", function () {
2012                            a.setupDesktopZoom()
2013                        }) : a.setupDesktopZoom(!0))
2014                    }, setupDesktopZoom: function (e) {
2015                        dn = {};
2016                        var n = "wheel mousewheel DOMMouseScroll";
2017                        St("bindEvents", function () {
2018                            o.bind(t, n, a.handleMouseWheel)
2019                        }), St("unbindEvents", function () {
2020                            dn && o.unbind(t, n, a.handleMouseWheel)
2021                        }), a.mouseZoomedIn = !1;
2022                        var i, r = function () {
2023                            a.mouseZoomedIn && (o.removeClass(t, "pswp--zoomed-in"), a.mouseZoomedIn = !1), 1 > g ? o.addClass(t, "pswp--zoom-allowed") : o.removeClass(t, "pswp--zoom-allowed"), s()
2024                        }, s = function () {
2025                            i && (o.removeClass(t, "pswp--dragging"), i = !1)
2026                        };
2027                        St("resize", r), St("afterChange", r), St("pointerDown", function () {
2028                            a.mouseZoomedIn && (i = !0, o.addClass(t, "pswp--dragging"))
2029                        }), St("pointerUp", s), e || r()
2030                    }, handleMouseWheel: function (t) {
2031                        if (g <= a.currItem.fitRatio)
2032                            return r.modal && (!r.closeOnScroll || Qt || j ? t.preventDefault() : A && Math.abs(t.deltaY) > 2 && (c = !0, a.close())), !0;
2033                        if (t.stopPropagation(), dn.x = 0, "deltaX"in t)
2034                            1 === t.deltaMode ? (dn.x = 18 * t.deltaX, dn.y = 18 * t.deltaY) : (dn.x = t.deltaX, dn.y = t.deltaY);
2035                        else if ("wheelDelta"in t)
2036                            t.wheelDeltaX && (dn.x = -.16 * t.wheelDeltaX), t.wheelDeltaY ? dn.y = -.16 * t.wheelDeltaY : dn.y = -.16 * t.wheelDelta;
2037                        else {
2038                            if (!("detail"in t))
2039                                return;
2040                            dn.y = t.detail
2041                        }
2042                        Nt(g, !0);
2043                        var e = dt.x - dn.x, n = dt.y - dn.y;
2044                        (r.modal || e <= tt.min.x && e >= tt.max.x && n <= tt.min.y && n >= tt.max.y) && t.preventDefault(), a.panTo(e, n)
2045                    }, toggleDesktopZoom: function (e) {
2046                        e = e || {x: ht.x / 2 + ft.x, y: ht.y / 2 + ft.y};
2047                        var n = r.getDoubleTapZoom(!0, a.currItem), i = g === n;
2048                        a.mouseZoomedIn = !i, a.zoomTo(i ? a.currItem.initialZoomLevel : n, e, 333), o[(i ? "remove" : "add") + "Class"](t, "pswp--zoomed-in")
2049                    }}});
2050            var hn, pn, fn, mn, gn, vn, yn, bn, xn, wn, kn, Cn, Sn = {history: !0, galleryUID: 1}, Tn = function () {
2051                return kn.hash.substring(1)
2052            }, Mn = function () {
2053                hn && clearTimeout(hn), fn && clearTimeout(fn)
2054            }, In = function () {
2055                var t = Tn(), e = {};
2056                if (t.length < 5)
2057                    return e;
2058                var n, i = t.split("&");
2059                for (n = 0; n < i.length; n++)
2060                    if (i[n]) {
2061                        var o = i[n].split("=");
2062                        o.length < 2 || (e[o[0]] = o[1])
2063                    }
2064                if (r.galleryPIDs) {
2065                    var a = e.pid;
2066                    for (e.pid = 0, n = 0; n < je.length; n++)
2067                        if (je[n].pid === a) {
2068                            e.pid = n;
2069                            break
2070                        }
2071                } else
2072                    e.pid = parseInt(e.pid, 10) - 1;
2073                return e.pid < 0 && (e.pid = 0), e
2074            }, An = function () {
2075                if (fn && clearTimeout(fn), Qt || j)
2076                    fn = setTimeout(An, 500);
2077                else {
2078                    mn ? clearTimeout(pn) : mn = !0;
2079                    var t = u + 1, e = qe(u);
2080                    e.hasOwnProperty("pid") && (t = e.pid);
2081                    var n = yn + "&gid=" + r.galleryUID + "&pid=" + t;
2082                    bn || -1 === kn.hash.indexOf(n) && (wn = !0);
2083                    var i = kn.href.split("#")[0] + "#" + n;
2084                    Cn ? "#" + n !== window.location.hash && history[bn ? "replaceState" : "pushState"]("", document.title, i) : bn ? kn.replace(i) : kn.hash = n, bn = !0, pn = setTimeout(function () {
2085                        mn = !1
2086                    }, 60)
2087                }
2088            };
2089            wt("History", {publicMethods: {initHistory: function () {
2090                        if (o.extend(r, Sn, !0), r.history) {
2091                            kn = window.location, wn = !1, xn = !1, bn = !1, yn = Tn(), Cn = "pushState"in history, yn.indexOf("gid=") > -1 && (yn = yn.split("&gid=")[0], yn = yn.split("?gid=")[0]), St("afterChange", a.updateURL), St("unbindEvents", function () {
2092                                o.unbind(window, "hashchange", a.onHashChange)
2093                            });
2094                            var t = function () {
2095                                vn = !0, xn || (wn ? history.back() : yn ? kn.hash = yn : Cn ? history.pushState("", document.title, kn.pathname + kn.search) : kn.hash = ""), Mn()
2096                            };
2097                            St("unbindEvents", function () {
2098                                c && t()
2099                            }), St("destroy", function () {
2100                                vn || t()
2101                            }), St("firstUpdate", function () {
2102                                u = In().pid
2103                            });
2104                            var e = yn.indexOf("pid=");
2105                            e > -1 && "&" === (yn = yn.substring(0, e)).slice(-1) && (yn = yn.slice(0, -1)), setTimeout(function () {
2106                                s && o.bind(window, "hashchange", a.onHashChange)
2107                            }, 40)
2108                        }
2109                    }, onHashChange: function () {
2110                        return Tn() === yn ? (xn = !0, void a.close()) : void(mn || (gn = !0, a.goTo(In().pid), gn = !1))
2111                    }, updateURL: function () {
2112                        Mn(), gn || (bn ? hn = setTimeout(An, 800) : An())
2113                    }}}), o.extend(a, te)
2114        }
2115    }), function (t, e) {
2116        "function" == typeof define && define.amd ? define(e) : "object" == typeof exports ? module.exports = e() : t.PhotoSwipeUI_Default = e()
2117    }(this, function () {
2118        "use strict";
2119        return function (t, e) {
2120            var n, i, o, a, r, s, l, c, u, d, h, p, f, m, g, v, y, b, x, w = this, k = !1, C = !0, S = !0, T = {barsSize: {top: 44, bottom: "auto"}, closeElClasses: ["item", "caption", "zoom-wrap", "ui", "top-bar"], timeToIdle: 4e3, timeToIdleOutside: 1e3, loadingIndicatorDelay: 1e3, addCaptionHTMLFn: function (t, e) {
2121                    return t.title ? (e.children[0].innerHTML = t.title, !0) : (e.children[0].innerHTML = "", !1)
2122                }, closeEl: !0, captionEl: !0, fullscreenEl: !0, zoomEl: !0, shareEl: !0, counterEl: !0, arrowEl: !0, preloaderEl: !0, tapToClose: !1, tapToToggleControls: !0, clickToCloseNonZoomable: !0, shareButtons: [{id: "facebook", label: "Share on Facebook", url: "https://www.facebook.com/sharer/sharer.php?u={{url}}"}, {id: "twitter", label: "Tweet", url: "https://twitter.com/intent/tweet?text={{text}}&url={{url}}"}, {id: "pinterest", label: "Pin it", url: "http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"}, {id: "download", label: "Download image", url: "{{raw_image_url}}", download: !0}], getImageURLForShare: function () {
2123                    return t.currItem.src || ""
2124                }, getPageURLForShare: function () {
2125                    return window.location.href
2126                }, getTextForShare: function () {
2127                    return t.currItem.title || ""
2128                }, indexIndicatorSep: " / ", fitControlsWidth: 1200}, M = function (t) {
2129                if (v)
2130                    return!0;
2131                t = t || window.event, g.timeToIdle && g.mouseUsed && !u && R();
2132                for (var n, i, o = (t.target || t.srcElement).getAttribute("class") || "", a = 0; a < j.length; a++)
2133                    (n = j[a]).onTap && o.indexOf("pswp__" + n.name) > -1 && (n.onTap(), i = !0);
2134                if (i) {
2135                    t.stopPropagation && t.stopPropagation(), v = !0;
2136                    var r = e.features.isOldAndroid ? 600 : 30;
2137                    y = setTimeout(function () {
2138                        v = !1
2139                    }, r)
2140                }
2141            }, I = function () {
2142                return!t.likelyTouchDevice || g.mouseUsed || screen.width > g.fitControlsWidth
2143            }, A = function (t, n, i) {
2144                e[(i ? "add" : "remove") + "Class"](t, "pswp__" + n)
2145            }, P = function () {
2146                var t = 1 === g.getNumItemsFn();
2147                t !== m && (A(i, "ui--one-slide", t), m = t)
2148            }, _ = function () {
2149                A(l, "share-modal--hidden", S)
2150            }, D = function () {
2151                return S = !S, S ? (e.removeClass(l, "pswp__share-modal--fade-in"), setTimeout(function () {
2152                    S && _()
2153                }, 300)) : (_(), setTimeout(function () {
2154                    S || e.addClass(l, "pswp__share-modal--fade-in")
2155                }, 30)), S || O(), !1
2156            }, E = function (e) {
2157                var n = (e = e || window.event).target || e.srcElement;
2158                return t.shout("shareLinkClick", e, n), !!n.href && (!!n.hasAttribute("download") || (window.open(n.href, "pswp_share", "scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left=" + (window.screen ? Math.round(screen.width / 2 - 275) : 100)), S || D(), !1))
2159            }, O = function () {
2160                for (var t, e, n, i, o, a = "", r = 0; r < g.shareButtons.length; r++)
2161                    t = g.shareButtons[r], n = g.getImageURLForShare(t), i = g.getPageURLForShare(t), o = g.getTextForShare(t), e = t.url.replace("{{url}}", encodeURIComponent(i)).replace("{{image_url}}", encodeURIComponent(n)).replace("{{raw_image_url}}", n).replace("{{text}}", encodeURIComponent(o)), a += '<a href="' + e + '" target="_blank" class="pswp__share--' + t.id + '"' + (t.download ? "download" : "") + ">" + t.label + "</a>", g.parseShareButtonOut && (a = g.parseShareButtonOut(t, a));
2162                l.children[0].innerHTML = a, l.children[0].onclick = E
2163            }, L = function (t) {
2164                for (var n = 0; n < g.closeElClasses.length; n++)
2165                    if (e.hasClass(t, "pswp__" + g.closeElClasses[n]))
2166                        return!0
2167            }, F = 0, R = function () {
2168                clearTimeout(x), F = 0, u && w.setIdle(!1)
2169            }, W = function (t) {
2170                var e = (t = t || window.event).relatedTarget || t.toElement;
2171                e && "HTML" !== e.nodeName || (clearTimeout(x), x = setTimeout(function () {
2172                    w.setIdle(!0)
2173                }, g.timeToIdleOutside))
2174            }, V = function () {
2175                g.fullscreenEl && !e.features.isOldAndroid && (n || (n = w.getFullscreenAPI()), n ? (e.bind(document, n.eventK, w.updateFullscreen), w.updateFullscreen(), e.addClass(t.template, "pswp--supports-fs")) : e.removeClass(t.template, "pswp--supports-fs"))
2176            }, z = function () {
2177                g.preloaderEl && (N(!0), d("beforeChange", function () {
2178                    clearTimeout(f), f = setTimeout(function () {
2179                        t.currItem && t.currItem.loading ? (!t.allowProgressiveImg() || t.currItem.img && !t.currItem.img.naturalWidth) && N(!1) : N(!0)
2180                    }, g.loadingIndicatorDelay)
2181                }), d("imageLoadComplete", function (e, n) {
2182                    t.currItem === n && N(!0)
2183                }))
2184            }, N = function (t) {
2185                p !== t && (A(h, "preloader--active", !t), p = t)
2186            }, H = function (t) {
2187                var n = t.vGap;
2188                if (I()) {
2189                    var r = g.barsSize;
2190                    if (g.captionEl && "auto" === r.bottom)
2191                        if (a || ((a = e.createEl("pswp__caption pswp__caption--fake")).appendChild(e.createEl("pswp__caption__center")), i.insertBefore(a, o), e.addClass(i, "pswp__ui--fit")), g.addCaptionHTMLFn(t, a, !0)) {
2192                            var s = a.clientHeight;
2193                            n.bottom = parseInt(s, 10) || 44
2194                        } else
2195                            n.bottom = r.top;
2196                    else
2197                        n.bottom = "auto" === r.bottom ? 0 : r.bottom;
2198                    n.top = r.top
2199                } else
2200                    n.top = n.bottom = 0
2201            }, B = function () {
2202                g.timeToIdle && d("mouseUsed", function () {
2203                    e.bind(document, "mousemove", R), e.bind(document, "mouseout", W), b = setInterval(function () {
2204                        2 == ++F && w.setIdle(!0)
2205                    }, g.timeToIdle / 2)
2206                })
2207            }, Y = function () {
2208                d("onVerticalDrag", function (t) {
2209                    C && .95 > t ? w.hideControls() : !C && t >= .95 && w.showControls()
2210                });
2211                var t;
2212                d("onPinchClose", function (e) {
2213                    C && .9 > e ? (w.hideControls(), t = !0) : t && !C && e > .9 && w.showControls()
2214                }), d("zoomGestureEnded", function () {
2215                    (t = !1) && !C && w.showControls()
2216                })
2217            }, j = [{name: "caption", option: "captionEl", onInit: function (t) {
2218                        o = t
2219                    }}, {name: "share-modal", option: "shareEl", onInit: function (t) {
2220                        l = t
2221                    }, onTap: function () {
2222                        D()
2223                    }}, {name: "button--share", option: "shareEl", onInit: function (t) {
2224                        s = t
2225                    }, onTap: function () {
2226                        D()
2227                    }}, {name: "button--zoom", option: "zoomEl", onTap: t.toggleDesktopZoom}, {name: "counter", option: "counterEl", onInit: function (t) {
2228                        r = t
2229                    }}, {name: "button--close", option: "closeEl", onTap: t.close}, {name: "button--arrow--left", option: "arrowEl", onTap: t.prev}, {name: "button--arrow--right", option: "arrowEl", onTap: t.next}, {name: "button--fs", option: "fullscreenEl", onTap: function () {
2230                        n.isFullscreen() ? n.exit() : n.enter()
2231                    }}, {name: "preloader", option: "preloaderEl", onInit: function (t) {
2232                        h = t
2233                    }}], $ = function () {
2234                var t, n, o, a = function (i) {
2235                    if (i)
2236                        for (var a = i.length, r = 0; a > r; r++) {
2237                            t = i[r], n = t.className;
2238                            for (var s = 0; s < j.length; s++)
2239                                o = j[s], n.indexOf("pswp__" + o.name) > -1 && (g[o.option] ? (e.removeClass(t, "pswp__element--disabled"), o.onInit && o.onInit(t)) : e.addClass(t, "pswp__element--disabled"))
2240                        }
2241                };
2242                a(i.children);
2243                var r = e.getChildByClass(i, "pswp__top-bar");
2244                r && a(r.children)
2245            };
2246            w.init = function () {
2247                e.extend(t.options, T, !0), g = t.options, i = e.getChildByClass(t.scrollWrap, "psw
2247p__ui"), d = t.listen, Y(), d("beforeChange", w.update), d("doubleTap", function (e) {
2248                    var n = t.currItem.initialZoomLevel;
2249                    t.getZoomLevel() !== n ? t.zoomTo(n, e, 333) : t.zoomTo(g.getDoubleTapZoom(!1, t.currItem), e, 333)
2250                }), d("preventDragEvent", function (t, e, n) {
2251                    var i = t.target || t.srcElement;
2252                    i && i.getAttribute("class") && t.type.indexOf("mouse") > -1 && (i.getAttribute("class").indexOf("__caption") > 0 || /(SMALL|STRONG|EM)/i.test(i.tagName)) && (n.prevent = !1)
2253                }), d("bindEvents", function () {
2254                    e.bind(i, "pswpTap click", M), e.bind(t.scrollWrap, "pswpTap", w.onGlobalTap), t.likelyTouchDevice || e.bind(t.scrollWrap, "mouseover", w.onMouseOver)
2255                }), d("unbindEvents", function () {
2256                    S || D(), b && clearInterval(b), e.unbind(document, "mouseout", W), e.unbind(document, "mousemove", R), e.unbind(i, "pswpTap click", M), e.unbind(t.scrollWrap, "pswpTap", w.onGlobalTap), e.unbind(t.scrollWrap, "mouseover", w.onMouseOver), n && (e.unbind(document, n.eventK, w.updateFullscreen), n.isFullscreen() && (g.hideAnimationDuration = 0, n.exit()), n = null)
2257                }), d("destroy", function () {
2258                    g.captionEl && (a && i.removeChild(a), e.removeClass(o, "pswp__caption--empty")), l && (l.children[0].onclick = null), e.removeClass(i, "pswp__ui--over-close"), e.addClass(i, "pswp__ui--hidden"), w.setIdle(!1)
2259                }), g.showAnimationDuration || e.removeClass(i, "pswp__ui--hidden"), d("initialZoomIn", function () {
2260                    g.showAnimationDuration && e.removeClass(i, "pswp__ui--hidden")
2261                }), d("initialZoomOut", function () {
2262                    e.addClass(i, "pswp__ui--hidden")
2263                }), d("parseVerticalMargin", H), $(), g.shareEl && s && l && (S = !0), P(), B(), V(), z()
2264            }, w.setIdle = function (t) {
2265                u = t, A(i, "ui--idle", t)
2266            }, w.update = function () {
2267                C && t.currItem ? (w.updateIndexIndicator(), g.captionEl && (g.addCaptionHTMLFn(t.currItem, o), A(o, "caption--empty", !t.currItem.title)), k = !0) : k = !1, S || D(), P()
2268            }, w.updateFullscreen = function (i) {
2269                i && setTimeout(function () {
2270                    t.setScrollOffset(0, e.getScrollY())
2271                }, 50), e[(n.isFullscreen() ? "add" : "remove") + "Class"](t.template, "pswp--fs")
2272            }, w.updateIndexIndicator = function () {
2273                g.counterEl && (r.innerHTML = t.getCurrentIndex() + 1 + g.indexIndicatorSep + g.getNumItemsFn())
2274            }, w.onGlobalTap = function (n) {
2275                var i = (n = n || window.event).target || n.srcElement;
2276                if (!v)
2277                    if (n.detail && "mouse" === n.detail.pointerType) {
2278                        if (L(i))
2279                            return void t.close();
2280                        e.hasClass(i, "pswp__img") && (1 === t.getZoomLevel() && t.getZoomLevel() <= t.currItem.fitRatio ? g.clickToCloseNonZoomable && t.close() : t.toggleDesktopZoom(n.detail.releasePoint))
2281                    } else if (g.tapToToggleControls && (C ? w.hideControls() : w.showControls()), g.tapToClose && (e.hasClass(i, "pswp__img") || L(i)))
2282                        return void t.close()
2283            }, w.onMouseOver = function (t) {
2284                var e = (t = t || window.event).target || t.srcElement;
2285                A(i, "ui--over-close", L(e))
2286            }, w.hideControls = function () {
2287                e.addClass(i, "pswp__ui--hidden"), C = !1
2288            }, w.showControls = function () {
2289                C = !0, k || w.update(), e.removeClass(i, "pswp__ui--hidden")
2290            }, w.supportsFullscreen = function () {
2291                var t = document;
2292                return!!(t.exitFullscreen || t.mozCancelFullScreen || t.webkitExitFullscreen || t.msExitFullscreen)
2293            }, w.getFullscreenAPI = function () {
2294                var e, n = document.documentElement, i = "fullscreenchange";
2295                return n.requestFullscreen ? e = {enterK: "requestFullscreen", exitK: "exitFullscreen", elementK: "fullscreenElement", eventK: i} : n.mozRequestFullScreen ? e = {enterK: "mozRequestFullScreen", exitK: "mozCancelFullScreen", elementK: "mozFullScreenElement", eventK: "moz" + i} : n.webkitRequestFullscreen ? e = {enterK: "webkitRequestFullscreen", exitK: "webkitExitFullscreen", elementK: "webkitFullscreenElement", eventK: "webkit" + i} : n.msRequestFullscreen && (e = {enterK: "msRequestFullscreen", exitK: "msExitFullscreen", elementK: "msFullscreenElement", eventK: "MSFullscreenChange"}), e && (e.enter = function () {
2296                    return c = g.closeOnScroll, g.closeOnScroll = !1, "webkitRequestFullscreen" !== this.enterK ? t.template[this.enterK]() : void t.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT)
2297                }, e.exit = function () {
2298                    return g.closeOnScroll = c, document[this.exitK]()
2299                }, e.isFullscreen = function () {
2300                    return document[this.elementK]
2301                }), e
2302            }
2303        }
2304    });
2305    var initPhotoSwipeFromDOM = function (t) {
2306        for (var e = function (t) {
2307            for (var e, n, i, o, a = t.childNodes, r = a.length, s = [], l = 0; l < r; l++)
2308                1 === (e = a[l]).nodeType && (i = (n = e.children[0]).getAttribute("data-size").split("x"), o = {src: n.getAttribute("href"), w: parseInt(i[0], 10), h: parseInt(i[1], 10)}, e.children.length > 1 && (o.title = e.children[1].innerHTML), n.children.length > 0 && (o.msrc = n.children[0].getAttribute("src")), o.el = e, s.push(o));
2309            return s
2310        }, n = function t(e, n) {
2311            return e && (n(e) ? e : t(e.parentNode, n))
2312        }, i = function (t, n, i, o) {
2313            var a, r, s = document.querySelectorAll(".pswp")[0];
2314            if (r = e(n), a = {galleryUID: n.getAttribute("data-pswp-uid"), getThumbBoundsFn: function (t) {
2315                    var e = r[t].el.getElementsByTagName("img")[0], n = window.pageYOffset || document.documentElement.scrollTop, i = e.getBoundingClientRect();
2316                    return{x: i.left, y: i.top + n, w: i.width}
2317                }}, o)
2318                if (a.galleryPIDs) {
2319                    for (var l = 0; l < r.length; l++)
2320                        if (r[l].pid == t) {
2321                            a.index = l;
2322                            break
2323                        }
2324                } else
2325                    a.index = parseInt(t, 10) - 1;
2326            else
2327                a.index = parseInt(t, 10);
2328            isNaN(a.index) || (i && (a.showAnimationDuration = 0), new PhotoSwipe(s, PhotoSwipeUI_Default, r, a).init())
2329        }, o = document.querySelectorAll(t), a = 0, r = o.length; a < r; a++)
2330            o[a].setAttribute("data-pswp-uid", a + 1), o[a].onclick = function (t) {
2331                (t = t || window.event).preventDefault ? t.preventDefault() : t.returnValue = !1;
2332                var e = t.target || t.srcElement, o = n(e, function (t) {
2333                    return t.tagName && "FIGURE" === t.tagName.toUpperCase()
2334                });
2335                if (o) {
2336                    for (var a, r = o.parentNode, s = o.parentNode.childNodes, l = s.length, c = 0, u = 0; u < l; u++)
2337                        if (1 === s[u].nodeType) {
2338                            if (s[u] === o) {
2339                                a = c;
2340                                break
2341                            }
2342                            c++
2343                        }
2344                    return a >= 0 && i(a, r), !1
2345                }
2346            };
2347        var s = function () {
2348            var t = window.location.hash.substring(1), e = {};
2349            if (t.length < 5)
2350                return e;
2351            for (var n = t.split("&"), i = 0; i < n.length; i++)
2352                if (n[i]) {
2353                    var o = n[i].split("=");
2354                    o.length < 2 || (e[o[0]] = o[1])
2355                }
2356            return e.gid && (e.gid = parseInt(e.gid, 10)), e
2357        }();
2358        s.pid && s.gid && i(s.pid, o[s.gid - 1], !0, !0)
2359    };
2360    initPhotoSwipeFromDOM(".kb-lightbox"), function (t) {
2361        t.fn.material_select = function (e) {
2362            function n(t, e, n) {
2363                var o = t.indexOf(e), a = -1 === o;
2364                return a ? t.push(e) : t.splice(o, 1), n.siblings("ul.dropdown-content").find("li").eq(e).toggleClass("active"), n.find("option").eq(e).prop("selected", a), i(t, n), a
2365            }
2366            function i(t, e) {
2367                for (var n = "", i = 0, o = t.length; i < o; i++) {
2368                    var a = e.find("option").eq(t[i]).text();
2369                    n += 0 === i ? a : ", " + a
2370                }
2371                "" === n && (n = e.find("option:disabled").eq(0).text()), e.siblings("input.select-dropdown").val(n)
2372            }
2373            function o() {
2374                var t = (new Date).getTime();
2375                return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (e) {
2376                    var n = (t + 16 * Math.random()) % 16 | 0;
2377                    return t = Math.floor(t / 16), ("x" == e ? n : 3 & n | 8).toString(16)
2378                })
2379            }
2380            t(this).each(function () {
2381                var i = t(this);
2382                if (!i.hasClass("browser-default")) {
2383                    var a = !!i.attr("multiple"), r = !1, s = !1, l = i.data("select-id");
2384                    if (l && (i.parent().find("span.caret").remove(), i.parent().find("input").remove(), i.unwrap(), t("ul#select-options-" + l).remove()), "destroy" !== e) {
2385                        var c = o();
2386                        i.data("select-id", c);
2387                        var u = t('<div class="select-wrapper"></div>');
2388                        u.addClass(i.attr("class"));
2389                        var d = t('<ul id="select-options-' + c + '" class="dropdown-content select-dropdown ' + (a ? "multiple-select-dropdown" : "") + '"></ul>
2389'), h = i.children("option, optgroup"), p = [], f = !1, m = i.find("option:selected").html() || i.find("option:first").html() || "", g = function () {
2390                            var e = t(this).closest("ul"), n = t(this).val();
2391                            e.find("li").find("span.filtrable").each(function () {
2392                                "string" == typeof this.outerText && (this.outerText.toLowerCase().startsWith(n.toLowerCase()) ? (t(this).show(), t(this).parent().show()) : (t(this).hide(), t(this).parent().hide()))
2393                            })
2394                        }, v = !!i.attr("searchable");
2395                        v && function () {
2396                            var e = i.attr("searchable"), n = t('<span class="search-wrap"><input type="text" class="search" placeholder="' + e + '"></span>');
2397                            d.append(n), n.find(".search").keyup(g)
2398                        }();
2399                        var y = function (e, n, i) {
2400                            s = e.attr("searchable");
2401                            var o = n.is(":disabled") ? "disabled " : "", a = "optgroup-option" === i ? "optgroup-option " : "";
2402                            "" !== a && (i = "multiple" === e.attr("multiple") ? "multiple" : i, r = !0);
2403                            var l = n.data("icon"), c = n.attr("class");
2404                            if (l) {
2405                                var u = "";
2406                                return c && (u = ' class="' + c + '"'), "multiple" === i ? d.append(t('<li class="' + o + '"><img alt="" src="' + l + '"' + u + '><span class="filtrable"><input type="checkbox"' + o + "/><label></label>" + n.html() + "</span></li>")) : d.append(t('<li class="' + o + a + '"><img alt="" src="' + l + '"' + u + '><span class="filtrable">' + n.html() + "</span></li>")), !0
2407                            }
2408                            "multiple" === i ? d.append(t('<li class="' + o + '"><span class="filtrable"><input type="checkbox"' + o + "/><label>" + n.html() + "</label></span></li>")) : d.append(t('<li class="' + o + a + '"><span class="filtrable">' + n.html() + "</span></li>"))
2409                        };
2410                        h.length && h.each(function () {
2411                            if (t(this).is("option"))
2412                                a ? y(i, t(this), "multiple") : y(i, t(this));
2413                            else if (t(this).is("optgroup")) {
2414                                var e = t(this).children("option");
2415                                d.append(t('<li class="optgroup"><span>' + t(this).attr("label") + "</span></li>")), e.each(function () {
2416                                    y(i, t(this), "optgroup-option")
2417                                })
2418                            }
2419                        }), d.find("li:not(.optgroup)").each(function (o) {
2420                            t(this).click(function (l) {
2421                                if (!t(this).hasClass("disabled") && !t(this).hasClass("optgroup")) {
2422                                    var c = !0;
2423                                    a && r ? (t('input[type="checkbox"]', this).prop("checked", function (t, e) {
2424                                        return!e
2425                                    }), c = n(p, t(this).index(), i)) : a && s ? (t('input[type="checkbox"]', this).prop("checked", function (t, e) {
2426                                        return!e
2427                                    }), c = n(p, t(this).index() - 1, i), w.trigger("focus")) : a ? (t('input[type="checkbox"]', this).prop("checked", function (t, e) {
2428                                        return!e
2429                                    }), c = n(p, t(this).index(), i), w.trigger("focus")) : (d.find("li").removeClass("active"), t(this).toggleClass("active"), w.val(t(this).text())), k(d, t(this)), i.find("option").eq(o).prop("selected", c), i.trigger("change"), void 0 !== e && e()
2430                                }
2431                                l.stopPropagation()
2432                            })
2433                        }), i.wrap(u);
2434                        var b = t('<span class="caret">&#9660;</span>');
2435                        i.is(":disabled") && b.addClass("disabled");
2436                        var x = m.replace(/"/g, "&quot;"), w = t('<input type="text" class="select-dropdown" readonly="true" ' + (i.is(":disabled") ? "disabled" : "") + ' data-activates="select-options-' + c + '" value="' + x + '"/>');
2437                        i.before(w), w.before(b), w.after(d), i.is(":disabled") || w.dropdown({hover: !1, closeOnClick: !1}), i.attr("tabindex") && t(w[0]).attr("tabindex", i.attr("tabindex")), i.addClass("initialized"), w.on({focu
2437s: function () {
2438                                if (t("ul.select-dropdown").not(d[0]).is(":visible") && t("input.select-dropdown").trigger("close"), !d.is(":visible")) {
2439                                    t(this).trigger("open", ["focus"]);
2440                                    var e = t(this).val(), n = d.find("li").filter(function () {
2441                                        return t(this).text().toLowerCase() === e.toLowerCase()
2442                                    })[0];
2443                                    k(d, n)
2444                                }
2445                            }, click: function (t) {
2446                                t.stopPropagation()
2447                            }}), w.on("blur", function () {
2448                            a || v || t(this).trigger("close"), d.find("li.selected").removeClass("selected")
2449                        }), !a && v && d.find("li").on("click", function () {
2450                            w.trigger("close")
2451                        }), d.hover(function () {
2452                            f = !0
2453                        }, function () {
2454                            f = !1
2455                        }), t(window).on({click: function () {
2456                                (a || v) && (f || w.trigger("close"))
2457                            }}), a && i.find("option:selected:not(:disabled)").each(function () {
2458                            var e = t(this).index();
2459                            n(p, e, i), d.find("li").eq(e).find(":checkbox").prop("checked", !0)
2460                        });
2461                        var k = function (e, n) {
2462                            if (n) {
2463                                e.find("li.selected").removeClass("selected");
2464                                var i = t(n);
2465                                i.addClass("selected"), d.scrollTo(i)
2466                            }
2467                        }, C = [];
2468                        w.on("keydown", function (e) {
2469                            if (9 != e.which)
2470                                if (40 != e.which || d.is(":visible")) {
2471                                    if (13 != e.which || d.is(":visible")) {
2472                                        e.preventDefault();
2473                                        var n = String.fromCharCode(e.which).toLowerCase(), i = [9, 13, 27, 38, 40];
2474                                        if (n && -1 === i.indexOf(e.which)) {
2475                                            C.push(n);
2476                                            var o = C.join(""), r = d.find("li").filter(function () {
2477                                                return 0 === t(this).text().toLowerCase().indexOf(o)
2478                                            })[0];
2479                                            r && k(d, r)
2480                                        }
2481                                        if (13 == e.which) {
2482                                            var s = d.find("li.selected:not(.disabled)")[0];
2483                                            s && (t(s).trigger("click"), a || w.trigger("close"))
2484                                        }
2485                                        40 == e.which && (r = d.find("li.selected").length ? d.find("li.selected").next("li:not(.disabled)")[0] : d.find("li:not(.disabled)")[0], k(d, r)), 27 == e.which && w.trigger("close"), 38 == e.which && (r = d.find("li.selected").prev("li:not(.disabled)")[0]) && k(d, r), setTimeout(function () {
2486                                            C = []
2487                                        }, 1e3)
2488                                    }
2489                                } else
2490                                    w.trigger("open");
2491                            else
2492                                w.trigger("close")
2493                        })
2494                    } else
2495                        i.data("select-id", null).removeClass("initialized")
2496                }
2497            })
2498        }
2499    }(jQuery), jQuery("select").siblings("input.select-dropdown").on("mousedown", function (t) {
2500        /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) && (t.clientX >= t.target.clientWidth || t.clientY >= t.target.clientHeight) && t.preventDefault()
2501    }), $.fn.kb_autocomplete = function (t) {
2502        var e = {data: {}};
2503        return t = $.extend(e, t), this.each(function () {
2504            var e = $(this), n = t.data;
2505            if (Object.keys(n).length) {
2506                var i = $('<ul class="kb-autocomplete-wrap"></ul>');
2507                i.insertAfter($(this))
2508            }
2509            e.on("keyup", function (t) {
2510                var o = e.val();
2511                if (i.empty(), o.length)
2512                    for (var a in n)
2513                        if (-1 !== n[a].toLowerCase().indexOf(o.toLowerCase())) {
2514                            var r = $("<li>" + n[a] + "</li>");
2515                            i.append(r)
2516                        }
2517                13 == t.which && (i.children(":first").trigger("click"), i.empty()), 0 == o.length ? $(".kb-autocomplete-clear").css("visibility", "hidden") : $(".kb-autocomplete-clear").css("visibility", "visible")
2518            }), i.on("click", "li", function () {
2519                e.val($(this).text()), i.empty()
2520            }), $(".kb-autocomplete-clear").on("click", function (t) {
2521                t.preventDefault(), e.val(""), $(this).css("visibility", "hidden"), i.empty(), $(this).parent().find("label").removeClass("active")
2522            })
2523        })
2524    }, function (t) {
2525        "function" == typeof define && define.amd ? define("picker", ["jquery"], t) : "object" == typeof exports ? module.exports = t(require("jquery")) : this.Picker = t(jQuery)
2526    }(function (t) {
2527        function e(a, s, d, h) {
2528            function p() {
2529                return e._.node("div", e._.node("div", e._.node("div", e._.node("div", I.component.nodes(k.open), S.box), S.wrap), S.frame), S.holder, 'tabindex="-1"')
2530            }
2531            function f() {
2532                T.data(s, I).addClass(S.input).val(T.data("value") ? I.get("select", C.format) : a.value), C.editable || T.on("focus." + k.id + " click." + k.id, function (t) {
2533                    t.preventDefault(), I.open()
2534                }).on("keydown." + k.id, x), o(a, {haspopup: !0, expanded: !1, readonly: !1, owns: a.id + "_root"})
2535            }
2536            function m() {
2537                o(I.$root[0], "hidden", !0)
2538            }
2539            function g() {
2540                I.$holder.on({keydown: x, "focus.toOpen": b, blur: function () {
2541                        T.removeClass(S.target)
2542                    }, focusin: function (t) {
2543                        I.$root.removeClass(S.focused), t.stopPropagation()
2544                    }, "mousedown click": function (e) {
2545                        var n = e.target;
2546                        n != I.$holder[0] && (e.stopPropagation(), "mousedown" != e.type || t(n).is("input, select, textarea, button, option") || (e.preventDefault(), I.$holder[0].focus()))
2547                    }}).on("click", "[data-pick], [data-nav], [data-clear], [data-close]", function () {
2548                    var e = t(this), n = e.data(), i = e.hasClass(S.navDisabled) || e.hasClass(S.disabled), o = r();
2549                    o = o && (o.type || o.href), (i || o && !t.contains(I.$root[0], o)) && I.$holder[0].focus(), !i && n.nav ? I.set("highlight", I.component.item.highlight, {nav: n.nav}) : !i && "pick"in n ? (I.set("select", n.pick), C.closeOnSelect && I.close(!0)) : n.clear ? (I.clear(), C.closeOnClear && I.close(!0)) : n.close && I.close(!0)
2550                })
2551            }
2552            function v() {
2553                var e;
2554                !0 === C.hiddenName ? (e = a.name, a.name = "") : e = (e = ["string" == typeof C.hiddenPrefix ? C.hiddenPrefix : "", "string" == typeof C.hiddenSuffix ? C.hiddenSuffix : "_submit"])[0] + a.name + e[1], I._hidden = t('<input type=hidden name="' + e + '"' + (T.data("value") || a.value ? ' value="' + I.get("select", C.formatSubmit) + '"' : "") + ">")[0], T.on("change." + k.id, function () {
2555                    I._hidden.value = a.value ? I.get("select", C.formatSubmit) : ""
2556                })
2557            }
2558            function y() {
2559                w && u ? I.$holder.find("." + S.frame).one("transitionend", function () {
2560                    I.$holder[0].focus()
2561                }) : I.$holder[0].focus()
2562            }
2563            function b(t) {
2564                t.stopPropagation(), T.addClass(S.target), I.$root.addClass(S.focused), I.open()
2565            }
2566            function x(t) {
2567                var e = t.keyCode, n = /^(8|46)$/.test(e);
2568                if (27 == e)
2569                    return I.close(!0), !1;
2570                (32 == e || n || !k.open && I.component.key[e]) && (t.preventDefault(), t.stopPropagation(), n ? I.clear().close() : I.open())
2571            }
2572            if (!a)
2573                return e;
2574            var w = !1, k = {id: a.id || "P" + Math.abs(~~(Math.random() * new Date))}, C = d ? t.extend(!0, {}, d.defaults, h) : h || {}, S = t.extend({}, e.klasses(), C.klass), T = t(a), M = function () {
2575                return this.start()
2576            }, I = M.prototype = {constructor: M, $node: T, start: function () {
2577                    return k && k.start ? I : (k.methods = {}, k.start = !0, k.open = !1, k.type = a.type, a.autofocus = a == r(), a.readOnly = !C.editable, a.id = a.id || k.id, "text" != a.type && (a.type = "text"), I.component = new d(I, C), I.$root = t('<div class="' + S.picker + '" id="' + a.id + '_root" />'), m(), I.$holder = t(p()).appendTo(I.$root), g(), C.formatSubmit && v(), f(), C.containerHidden ? t(C.containerHidden).append(I._hidden) : T.after(I._hidden), C.container ? t(C.container).append(I.$root) : T.after(I.$root), I.on({start: I.component.onStart, render: I.component.onRender, stop: I.component.onStop, open: I.component.onOpen, close: I.component.onClose, set: I.component.onSet}).on({start: C.onStart, render: C.onRender, stop: C.onStop, open: C.onOpen, close: C.onClose, set: C.onSet}), w = n(I.$holder[0]), a.autofocus && I.open(), I.trigger("start").trigger("render"))
2578                }, render: function (e) {
2579                    return e ? (I.$holder = t(p()), g(), I.$root.html(I.$holder)) : I.$root.find("." + S.box).html(I.component.nodes(k.open)), I.trigger("render")
2580                }, stop: function () {
2581                    return k.start ? (I.close(), I._hidden && I._hidden.parentNode.removeChild(I._hidden), I.$root.remove(), T.removeClass(S.input).removeData(s), setTimeout(function () {
2582                        T.off("." + k.id)
2583                    }, 0), a.type = k.type, a.readOnly = !1, I.trigger("stop"), k.methods = {}, k.start = !1, I) : I
2584                }, open: function (n) {
2585                    return k.open ? I : (T.addClass(S.active), o(a, "expanded", !0), setTimeout(function () {
2586                        I.$root.addClass(S.opened), o(I.$root[0], "hidden", !1)
2587                    }, 0), !1 !== n && (k.open = !0, w && c.css("overflow", "hidden").css("padding-right", "+=" + i()), y(), l.on("click." + k.id + " focusin." + k.id, function (t) {
2588                        var e = t.target;
2589                        e != a && e != document && 3 != t.which && I.close(e === I.$holder[0])
2590                    }).on("keydown." + k.id, function (n) {
2591                        var i = n.keyCode, o = I.component.key[i], a = n.target;
2592                        27 == i ? I.close(!0) : a != I.$holder[0] || !o && 13 != i ? t.contains(I.$root[0], a) && 13 == i && (n.preventDefault(), a.click()) : (n.preventDefault(), o ? e._.trigger(I.component.key.go, I, [e._.trigger(o)]) : I.$root.find("." + S.highlighted).hasClass(S.disabled) || (I.set("select", I.component.item.highlight), C.closeOnSelect && I.close(!0)))
2593                    })), I.trigger("open"))
2594                }, close: function (t) {
2595                    return t && (C.editable ? a.focus() : (I.$holder.off("focus.toOpen").focus(), setTimeout(function () {
2596                        I.$holder.on("focus.toOpen", b)
2597                    }, 0))), T.removeClass(S.active), o(a, "expanded", !1), setTimeout(function () {
2598                        I.$root.removeClass(S.opened + " " + S.focused), o(I.$root[0], "hidden", !0)
2599                    }, 0), k.open ? (k.open = !1, w && c.css("overflow", "").css("padding-right", "-=" + i()), l.off("." + k.id), I.trigger("close")) : I
2600                }, clear: function (t) {
2601                    return I.set("clear", null, t)
2602                }, set: function (e, n, i) {
2603                    var o, a, r = t.isPlainObject(e), s = r ? e : {};
2604                    if (i = r && t.isPlainObject(n) ? n : i || {}, e) {
2605                        r || (s[e] = n);
2606                        for (o in s)
2607                            a = s[o], o in I.component.item && (void 0 === a && (a = null), I.component.set(o, a, i)), "select" != o && "clear" != o || T.val("clear" == o ? "" : I.get(o, C.format)).trigger("change");
2608                        I.render()
2609                    }
2610                    return i.muted ? I : I.trigger("set", s)
2611                }, get: function (t, n) {
2612                    if (t = t || "value", null != k[t])
2613                        return k[t];
2614                    if ("valueSubmit" == t) {
2615                        if (I._hidden)
2616                            return I._hidden.value;
2617                        t = "value"
2618                    }
2619                    if ("value" == t)
2620                        return a.value;
2621                    if (t in I.component.item) {
2622                        if ("string" == typeof n) {
2623                            var i = I.component.get(t);
2624                            return i ? e._.trigger(I.component.formats.toString, I.component, [n, i]) : ""
2625                        }
2626                        return I.component.get(t)
2627                    }
2628                }, on: function (e, n, i) {
2629                    var o, a, r = t.isPlainObject(e), s = r ? e : {};
2630                    if (e) {
2631                        r || (s[e] = n);
2632                        for (o in s)
2633                            a = s[o], i && (o = "_" + o), k.methods[o] = k.methods[o] || [], k.methods[o].push(a)
2634                    }
2635                    return I
2636                }, off: function () {
2637                    var t, e, n = arguments;
2638                    for (t = 0, namesCount = n.length; t < namesCount; t += 1)
2639                        (e = n[t])in k.methods && delete k.methods[e];
2640                    return I
2641                }, trigger: function (t, n) {
2642                    var i = function (t) {
2643                        var i = k.methods[t];
2644                        i && i.map(function (t) {
2645                            e._.trigger(t, I, [n])
2646                        })
2647                    };
2648                    return i("_" + t), i(t), I
2649                }};
2650            return new M
2651        }
2652        function n(t) {
2653            var e;
2654            return t.currentStyle ? e = t.currentStyle.position : window.getComputedStyle && (e = getComputedStyle(t).position), "fixed" == e
2655        }
2656        function i() {
2657            if (c.height() <= s.height())
2658                return 0;
2659            var e = t('<div style="visibility:hidden;width:100px" />').appendTo("body"), n = e[0].offsetWidth;
2660            e.css("overflow", "scroll");
2661            var i = t('<div style="width:100%" />').appendTo(e)[0].offsetWidth;
2662            return e.remove(), n - i
2663        }
2664        function o(e, n, i) {
2665            if (t.isPlainObject(n))
2666                for (var o in n)
2667                    a(e, o, n[o]);
2668            else
2669                a(e, n, i)
2670        }
2671        function a(t, e, n) {
2672            t.setAttribute(("role" == e ? "" : "aria-") + e, n)
2673        }
2674        function r() {
2675            try {
2676                return document.activeElement
2677            } catch (t) {
2678            }
2679        }
2680        var s = t(window), l = t(document), c = t(document.documentElement), u = null != document.documentElement.style.transition;
2681        return e.klasses = function (t) {
2682            return t = t || "picker", {picker: t, opened: t + "--opened", focused: t + "--focused", input: t + "__input", active: t + "__input--active", target: t + "__input--target", holder: t + "__holder", frame: t + "__frame", wrap: t + "__wrap", box: t + "__box"}
2683        }, e._ = {group: function (t) {
2684                for (var n, i = "", o = e._.trigger(t.min, t); o <= e._.trigger(t.max, t, [o]); o += t.i)
2685                    n = e._.trigger(t.item, t, [o]), i += e._.node(t.node, n[0], n[1], n[2]);
2686                return i
2687            }, node: function (e, n, i, o) {
2688                return n ? (n = t.isArray(n) ? n.join("") : n, i = i ? ' class="' + i + '"' : "", o = o ? " " + o : "", "<" + e + i + o + ">" + n + "</" + e + ">") : ""
2689            }, lead: function (t) {
2690                return(t < 10 ? "0" : "") + t
2691            }, trigger: function (t, e, n) {
2692                return"function" == typeof t ? t.apply(e, n || []) : t
2693            }, digits: function (t) {
2694                return/\d/.test(t[1]) ? 2 : 1
2695            }, isDate: function (t) {
2696                return{}.toString.call(t).indexOf("Date") > -1 && this.isInteger(t.getDate())
2697            }, isInteger: function (t) {
2698                return{}.toString.call(t).indexOf("Number") > -1 && t % 1 == 0
2699            }, ariaAttr: function (e, n) {
2700                t.isPlainObject(e) || (e = {attribute: n}), n = "";
2701                for (var i in e) {
2702                    var o = ("role" == i ? "" : "aria-") + i;
2703                    n += null == e[i] ? "" : o + '="' + e[i] + '"'
2704                }
2705                return n
2706            }}, e.extend = function (n, i) {
2707            t.fn[n] = function (o, a) {
2708                var r = this.data(n);
2709                return"picker" == o ? r : r && "string" == typeof o ? e._.trigger(r[o], r, [a]) : this.each(function () {
2710                    t(this).data(n) || new e(this, n, i, o)
2711                })
2712            }, t.fn[n].defaults = i.defaults
2713        }, e
2714    }), function (t) {
2715        "function" == typeof define && define.amd ? define(["picker", "jquery"], t) : "object" == typeof exports ? module.exports = t(require("./picker.js"), require("jquery")) : t(Picker, jQuery)
2716    }(function (t, e) {
2717        function n(t, e) {
2718            var n = this, i = t.$node[0], o = i.value, a = t.$node.data("value"), r = a || o, s = a ? e.formatSubmit : e.format, l = function () {
2719                return i.currentStyle ? "rtl" == i.currentStyle.direction : "rtl" == getComputedStyle(t.$root[0]).direction
2720            };
2721            n.settings = e, n.$node = t.$node, n.queue = {min: "measure create", max: "measure create", now: "now create", select: "parse create validate", highlight: "parse navigate create validate", view: "parse create validate viewset", disable: "deactivate", enable: "activate"}, n.item = {}, n.item.clear = null, n.item.disable = (e.disable || []).slice(0), n.item.enable = -function (t) {
2722                return!0 === t[0] ? t.shift() : -1
2723            }(n.item.disable), n.set("min", e.min).set("max", e.max).set("now"), r ? n.set("select", r, {format: s, defaultValue: !0}) : n.set("select", null).set("highlight", n.item.now), n.key = {40: 7, 38: -7, 39: function () {
2724                    return l() ? -1 : 1
2725                }, 37: function () {
2726                    return l() ? 1 : -1
2727                }, go: function (t) {
2728                    var e = n.item.highlight, i = new Date(e.year, e.month, e.date + t);
2729                    n.set("highlight", i, {interval: t}), this.render()
2730                }}, t.on("render", function () {
2731                t.$root.find("." + e.klass.selectMonth).on("change", function () {
2732                    var n = this.value;
2733                    n && (t.set("highlight", [t.get("view").year, n, t.get("highlight").date]), t.$root.find("." + e.klass.selectMonth).trigger("focus"))
2734                }), t.$root.find("." + e.klass.selectYear).on("change", function () {
2735                    var n = this.value;
2736                    n && (t.set("highlight", [n, t.get("view").month, t.get("highlight").date]), t.$root.find("." + e.klass.selectYear).trigger("focus"))
2737                })
2738            }, 1).on("open", function () {
2739                var i = "";
2740                n.disabled(n.get("now")) && (i = ":not(." + e.klass.buttonToday + ")"), t.$root.find("button" + i + ", select").attr("disabled", !1)
2741            }, 1).on("close", function () {
2742                t.$root.find("button, select").attr("disabled", !0)
2743            }, 1)
2744        }
2745        var i = t._;
2746        n.prototype.set = function (t, e, n) {
2747            var i = this, o = i.item;
2748            return null === e ? ("clear" == t && (t = "select"), o[t] = e, i) : (o["enable" == t ? "disable" : "flip" == t ? "enable" : t] = i.queue[t].split(" ").map(function (o) {
2749                return e = i[o](t, e, n)
2750            }).pop(), "select" == t ? i.set("highlight", o.select, n) : "highlight" == t ? i.set("view", o.highlight, n) : t.match(/^(flip|min|max|disable|enable)$/) && (o.select && i.disabled(o.select) && i.set("select", o.select, n), o.highlight && i.disabled(o.highlight) && i.set("highlight", o.highlight, n)), i)
2751        }, n.prototype.get = function (t) {
2752            return this.item[t]
2753        }, n.prototype.create = function (t, n, o) {
2754            var a, r = this;
2755            return n = void 0 === n ? t : n, n == -1 / 0 || n == 1 / 0 ? a = n : e.isPlainObject(n) && i.isInteger(n.pick) ? n = n.obj : e.isArray(n) ? (n = new Date(n[0], n[1], n[2]), n = i.isDate(n) ? n : r.create().obj) : n = i.isInteger(n) || i.isDate(n) ? r.normalize(new Date(n), o) : r.now(t, n, o), {year: a || n.getFullYear(), month: a || n.getMonth(), date: a || n.getDate(), day: a || n.getDay(), obj: a || n, pick: a || n.getTime()}
2756        }, n.prototype.createRange = function (t, n) {
2757            var o = this, a = function (t) {
2758           
2758     return!0 === t || e.isArray(t) || i.isDate(t) ? o.create(t) : t
2759            };
2760            return i.isInteger(t) || (t = a(t)), i.isInteger(n) || (n = a(n)), i.isInteger(t) && e.isPlainObject(n) ? t = [n.year, n.month, n.date + t] : i.isInteger(n) && e.isPlainObject(t) && (n = [t.year, t.month, t.date + n]), {from: a(t), to: a(n)}
2761        }, n.prototype.withinRange = function (t, e) {
2762            return t = this.createRange(t.from, t.to), e.pick >= t.from.pick && e.pick <= t.to.pick
2763        }, n.prototype.overlapRanges = function (t, e) {
2764            var n = this;
2765            return t = n.createRange(t.from, t.to), e = n.createRange(e.from, e.to), n.withinRange(t, e.from) || n.withinRange(t, e.to) || n.withinRange(e, t.from) || n.withinRange(e, t.to)
2766        }, n.prototype.now = function (t, e, n) {
2767            return e = new Date, n && n.rel && e.setDate(e.getDate() + n.rel), this.normalize(e, n)
2768        }, n.prototype.navigate = function (t, n, i) {
2769            var o, a, r, s, l = e.isArray(n), c = e.isPlainObject(n), u = this.item.view;
2770            if (l || c) {
2771                for (c?(a = n.year, r = n.month, s = n.date):(a = + n[0], r = + n[1], s = + n[2]), i && i.nav && u && u.month !== r && (a = u.year, r = u.month), a = (o = new Date(a, r + (i && i.nav?i.nav:0), 1)).getFullYear(), r = o.getMonth(); new Date(a, r, s).getMonth() !== r; )
2772                    s -= 1;
2773                n = [a, r, s]
2774            }
2775            return n
2776        }, n.prototype.normalize = function (t) {
2777            return t.setHours(0, 0, 0, 0), t
2778        }, n.prototype.measure = function (t, e) {
2779            var n = this;
2780            return e ? "string" == typeof e ? e = n.parse(t, e) : i.isInteger(e) && (e = n.now(t, e, {rel: e})) : e = "min" == t ? -1 / 0 : 1 / 0, e
2781        }, n.prototype.viewset = function (t, e) {
2782            return this.create([e.year, e.month, 1])
2783        }, n.prototype.validate = function (t, n, o) {
2784            var a, r, s, l, c = this, u = n, d = o && o.interval ? o.interval : 1, h = -1 
2784=== c.item.enable, p = c.item.min, f = c.item.max, m = h && c.item.disable.filter(function (t) {
2785                if (e.isArray(t)) {
2786                    var o = c.create(t).pick;
2787                    o < n.pick ? a = !0 : o > n.pick && (r = !0)
2788                }
2789                return i.isInteger(t)
2790            }).length;
2791            if ((!o || !o.nav && !o.defaultValue) && (!h && c.disabled(n) || h && c.disabled(n) && (m || a || r) || !h && (n.pick <= p.pick || n.pick >= f.pick)))
2792                for (h && !m && (!r && d > 0 || !a && d < 0) && (d *= - 1); c.disabled(n) && (Math.abs(d) > 1 && (n.month < u.month || n.month > u.month) && (n = u, d = d > 0?1: - 1), n.pick <= p.pick?(s = !0, d = 1, n = c.create([p.year, p.month, p.date + (n.pick === p.pick?0: - 1)])):n.pick >= f.pick && (l = !0, d = - 1, n = c.create([f.year, f.month, f.date + (n.pick === f.pick?0:1)])), !s || !l); )
2793                    n = c.create([n.year, n.month, n.date + d]);
2794            return n
2795        }, n.prototype.disabled = function (t) {
2796            var n = this, o = n.item.disable.filter(function (o) {
2797                return i.isInteger(o) ? t.day === (n.settings.firstDay ? o : o - 1) % 7 : e.isArray(o) || i.isDate(o) ? t.pick === n.create(o).pick : e.isPlainObject(o) ? n.withinRange(o, t) : void 0
2798            });
2799            return o = o.length && !o.filter(function (t) {
2800                return e.isArray(t) && "inverted" == t[3] || e.isPlainObject(t) && t.inverted
2801            }).length, -1 === n.item.enable ? !o : o || t.pick < n.item.min.pick || t.pick > n.item.max.pick
2802        }, n.prototype.parse = function (t, e, n) {
2803            var o = this, a = {};
2804            return e && "string" == typeof e ? (n && n.format || ((n = n || {}).format = o.settings.format), o.formats.toArray(n.format).map(function (t) {
2805                var n = o.formats[t], r = n ? i.trigger(n, o, [e, a]) : t.replace(/^!/, "").length;
2806                n && (a[t] = e.substr(0, r)), e = e.substr(r)
2807            }), [a.yyyy || a.yy, +(a.mm || a.m) - 1, a.dd || a.d]) : e
2808        }, n.prototype.formats = function () {
2809            function t(t, e, n) {
2810                var i = t.match(/[^\x00-\x7F]+|\w+/)[0];
2811                return n.mm || n.m || (n.m = e.indexOf(i) + 1), i.length
2812            }
2813            function e(t) {
2814                return t.match(/\w+/)[0].length
2815            }
2816            return{d: function (t, e) {
2817                    return t ? i.digits(t) : e.date
2818                }, dd: function (t, e) {
2819                    return t ? 2 : i.lead(e.date)
2820                }, ddd: function (t, n) {
2821                    return t ? e(t) : this.settings.weekdaysShort[n.day]
2822                }, dddd: function (t, n) {
2823                    return t ? e(t) : this.settings.weekdaysFull[n.day]
2824                }, m: function (t, e) {
2825                    return t ? i.digits(t) : e.month + 1
2826                }, mm: function (t, e) {
2827                    return t ? 2 : i.lead(e.month + 1)
2828                }, mmm: function (e, n) {
2829                    var i = this.settings.monthsShort;
2830                    return e ? t(e, i, n) : i[n.month]
2831                }, mmmm: function (e, n) {
2832                    var i = this.settings.monthsFull;
2833                    return e ? t(e, i, n) : i[n.month]
2834                }, yy: function (t, e) {
2835                    return t ? 2 : ("" + e.year).slice(2)
2836                }, yyyy: function (t, e) {
2837                    return t ? 4 : e.year
2838                }, toArray: function (t) {
2839                    return t.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)
2840                }, toString: function (t, e) {
2841                    var n = this;
2842                    return n.formats.toArray(t).map(function (t) {
2843                        return i.trigger(n.formats[t], n, [0, e]) || t.replace(/^!/, "")
2844                    }).join("")
2845                }}
2846        }(), n.prototype.isDateExact = function (t, n) {
2847            var o = this;
2848            return i.isInteger(t) && i.isInteger(n) || "boolean" == typeof t && "boolean" == typeof n ? t === n : (i.isDate(t) || e.isArray(t)) && (i.isDate(n) || e.isArray(n)) ? o.create(t).pick === o.create(n).pick : !(!e.isPlainObject(t) || !e.isPlainObject(n)) && (o.isDateExact(t.from, n.from) && o.isDateExact(t.to, n.to))
2849        }, n.prototype.isDateOverlap = function (t, n) {
2850            var o = this, a = o.settings.firstDay ? 1 : 0;
2851            return i.isInteger(t) && (i.isDate(n) || e.isArray(n)) ? (t = t % 7 + a) === o.create(n).day + 1 : i.isInteger(n) && (i.isDate(t) || e.isArray(t)) ? (n = n % 7 + a) === o.create(t).day + 1 : !(!e.isPlainObject(t) || !e.isPlainObject(n)) && o.overlapRanges(t, n)
2852        }, n.prototype.flipEnable = function (t) {
2853            var e = this.item;
2854            e.enable = t || (-1 == e.enable ? 1 : -1)
2855        }, n.prototype.deactivate = function (t, n) {
2856            var o = this, a = o.item.disable.slice(0);
2857            return"flip" == n ? o.flipEnable() : !1 === n ? (o.flipEnable(1), a = []) : !0 === n ? (o.flipEnable(-1), a = []) : n.map(function (t) {
2858                for (var n, r = 0; r < a.length; r += 1)
2859                    if (o.isDateExact(t, a[r])) {
2860                        n = !0;
2861                        break
2862                    }
2863                n || (i.isInteger(t) || i.isDate(t) || e.isArray(t) || e.isPlainObject(t) && t.from && t.to) && a.push(t)
2864            }), a
2865        }, n.prototype.activate = function (t, n) {
2866            var o = this, a = o.item.disable, r = a.length;
2867            return"flip" == n ? o.flipEnable() : !0 === n ? (o.flipEnable(1), a = []) : !1 === n ? (o.flipEnable(-1), a = []) : n.map(function (t) {
2868                var n, s, l, c;
2869                for (l = 0; l < r; l += 1) {
2870                    if (s = a[l], o.isDateExact(s, t)) {
2871                        n = a[l] = null, c = !0;
2872                        break
2873                    }
2874                    if (o.isDateOverlap(s, t)) {
2875                        e.isPlainObject(t) ? (t.inverted = !0, n = t) : e.isArray(t) ? (n = t)[3] || n.push("inverted") : i.isDate(t) && (n = [t.getFullYear(), t.getMonth(), t.getDate(), "inverted"]);
2876                        break
2877                    }
2878                }
2879                if (n)
2880                    for (l = 0; l < r; l += 1)
2881                        if (o.isDateExact(a[l], t)) {
2882                            a[l] = null;
2883                            break
2884                        }
2885                if (c)
2886                    for (l = 0; l < r; l += 1)
2887                        if (o.isDateOverlap(a[l], t)) {
2888                            a[l] = null;
2889                            break
2890                        }
2891                n && a.push(n)
2892            }), a.filter(function (t) {
2893                return null != t
2894            })
2895        }, n.prototype.nodes = function (t) {
2896            var e = this, n = e.settings, o = e.item, a = o.now, r = o.select, s = o.highlight, l = o.view, c = o.disable, u = o.min, d = o.max, h = function (t, e) {
2897                return n.firstDay && (t.push(t.shift()), e.push(e.shift())), i.node("thead", i.node("tr", i.group({min: 0, max: 6, i: 1, node: "th", item: function (i) {
2898                        return[t[i], n.klass.weekdays, 'scope=col title="' + e[i] + '"']
2899                    }})))
2900            }((n.showWeekdaysFull ? n.weekdaysFull : n.weekdaysShort).slice(0), n.weekdaysFull.slice(0)), p = function (t) {
2901                return i.node("div", " ", n.klass["nav" + (t ? "Next" : "Prev")] + (t && l.year >= d.year && l.month >= d.month || !t && l.year <= u.year && l.month <= u.month ? " " + n.klass.navDisabled : ""), "data-nav=" + (t || -1) + " " + i.ariaAttr({role: "button", controls: e.$node[0].id + "_table"}) + ' title="' + (t ? n.labelMonthNext : n.labelMonthPrev) + '"')
2902            }, f = function () {
2903                var o = n.showMonthsShort ? n.monthsShort : n.monthsFull;
2904                return n.selectMonths ? i.node("select", i.group({min: 0, max: 11, i: 1, node: "option", item: function (t) {
2905                        return[o[t], 0, "value=" + t + (l.month == t ? " selected" : "") + (l.year == u.year && t < u.month || l.year == d.year && t > d.month ? " disabled" : "")]
2906                    }}), n.klass.selectMonth, (t ? "" : "disabled") + " " + i.ariaAttr({controls: e.$node[0].id + "_table"}) + ' title="' + n.labelMonthSelect + '"') : i.node("div", o[l.month], n.klass.month)
2907            }, m = function () {
2908                var o = l.year, a = !0 === n.selectYears ? 5 : ~~(n.selectYears / 2);
2909                if (a) {
2910                    var r = u.year, s = d.year, c = o - a, h = o + a;
2911                    if (r > c && (h += r - c, c = r), s < h) {
2912                        var p = c - r, f = h - s;
2913                        c -= p >
2913 f ? f : p, h = s
2914                    }
2915                    return i.node("select", i.group({min: c, max: h, i: 1, node: "option", item: function (t) {
2916                            return[t, 0, "value=" + t + (o == t ? " selected" : "")]
2917                        }}), n.klass.selectYear, (t ? "" : "disabled") + " " + i.ariaAttr({controls: e.$node[0].id + "_table"}) + ' title="' + n.labelYearSelect + '"')
2918                }
2919                return i.node("div", o, n.klass.year)
2920            };
2921            return i.node("div", (n.selectYears ? m() + f() : f() + m()) + p() + p(1), n.klass.header) + i.node("table", h + i.node("tbody", i.group({min: 0, max: 5, i: 1, node: "tr", item: function (t) {
2922                    var o = n.firstDay && 0 === e.create([l.year, l.month, 1]).day ? -7 : 0;
2923                    return[i.group({min: 7 * t - l.day + o + 1, max: function () {
2924                                return this.min + 7 - 1
2925                            }, i: 1, node: "td", item: function (t) {
2926                                t = e.create([l.year, l.month, t + (n.firstDay ? 1 : 0)]);
2927                                var o = r && r.pick == t.pick, h = s && s.pick == t.pick, p = c && e.disabled(t) || t.pick < u.pick || t.pick > d.pick, f = i.trigger(e.formats.toString, e, [n.format, t]);
2928                                return[i.node("div", t.date, function (e) {
2929                                        return e.push(l.month == t.month ? n.klass.infocus : n.klass.outfocus), a.pick == t.pick && e.push(n.klass.now), o && e.push(n.klass.selected), h && e.push(n.klass.highlighted), p && e.push(n.klass.disabled), e.join(" ")
2930                                    }([n.klass.day]), "data-pick=" + t.pick + " " + i.ariaAttr({role: "gridcell", label: f, selected: !(!o || e.$node.val() !== f) || null, activedescendant: !!h || null, disabled: !!p || null})), "", i.ariaAttr({role: "presentation"})]
2931                            }})]
2932                }})), n.klass.table, 'id="' + e.$node[0].id + '_table" ' + i.ariaAttr({role: "grid", controls: e.$node[0].id, readonly: !0})) + i.node("div", i.node("button", n.today, n.klass.buttonToday, "type=button data-pick=" + a.pick + (t && !e.disabled(a) ? "" : " disabled") + " " + i.ariaAttr({controls: e.$node[0].id})) + i.node("button", n.clear, n.klass.buttonClear, "type=button data-clear=1" + (t ? "" : " disabled") + " " + i.ariaAttr({controls: e.$node[0].id})) + i.node("button", n.close, n.klass.buttonClose, "type=button data-close=true " + (t ? "" : " disabled") + " " + i.ariaAttr({controls: e.$node[0].id})), n.klass.footer)
2933        }, n.defaults = function (t) {
2934            return{labelMonthNext: "Next month", labelMonthPrev: "Previous month", labelMonthSelect: "Select a month", labelYearSelect: "Select a year", monthsFull: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "
2934November", "December"], monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], weekdaysFull: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], today: "Today", clear: "Clear", close: "Close", closeOnSelect: !0, closeOnClear: !0, format: "d mmmm, yyyy", klass: {table: t + "table", header: t + "header", navPrev: t + "nav--prev", navNext: t + "nav--next", navDisabled: t + "nav--disabled", month: t + "month", year: t + "year", selectMonth: t + "select--month", selectYear: t + "select--year", weekdays: t + "weekday", day: t + "day", disabled: t + "day--disabled", selected: t + "day--selected", highlighted: t + "day--highlighted", now: t + "day--today", infocus: t + "day--infocus", outfocus: t + "day--outfocus", footer: t + "footer", buttonClear: t + "button--clear", buttonToday: t + "button--today", buttonClose: t + "button--close"}}
2935        }(t.klasses().picker + "__"), t.extend("pickadate", n)
2936    }), $.extend($.fn.pickadate.defaults, {selectMonths: !0, selectYears: 15, onRender: function () {
2937            var t = this.$root, e = this.get("highlight", "yyyy"), n = this.get("highlight", "dd"), i = this.get("highlight", "mmm"), o = this.get("highlight", "dddd");
2938            t.find(".picker__header").prepend('<div class="picker__date-display"><div class="picker__weekday-display">' + o + '</div><div class="picker__month-display"><div>' + i + '</div></div><div class="picker__day-display"><div>' + n + '</div></div><div    class="picker__year-display"><div>' + e + "</div></div></div>")
2939        }}), function () {
2940        function t(t) {
2941            return document.createElementNS(l, t)
2942        }
2943        function e(t) {
2944            return(t < 10 ? "0" : "") + t
2945        }
2946        function n(t) {
2947            var e = ++g + "";
2948            return t ? t + e : e
2949        }
2950        function i(i, r) {
2951            function l(t, e) {
2952                var n = d.offset(), i = /^touch/.test(t.type), o = n.left + v, a = n.top + v, l = (i ? t.originalEvent.touches[0] : t).pageX - o, u = (i ? t.originalEvent.touches[0] : t).pageY - a, h = Math.sqrt(l * l + u * u), m = !1;
2953                if (!e || !(h < y - x || h > y + x)) {
2954                    t.preventDefault();
2955                    var g = setTimeout(function () {
2956                        P.popover.addClass("clockpicker-moving")
2957                    }, 200);
2958                    c && d.append(P.canvas), P.setHand(l, u, !e, !0), s.off(p).on(p, function (t) {
2959                        t.preventDefault();
2960                        var e = /^touch/.test(t.type), n = (e ? t.originalEvent.touches[0] : t).pageX - o, i = (e ? t.originalEvent.touches[0] : t).pageY - a;
2961                        (m || n !== l || i !== u) && (m = !0, P.setHand(n, i, !1, !0))
2962                    }), s.off(f).on(f, function (t) {
2963                        s.off(f), t.preventDefault();
2964                        var n = /^touch/.test(t.type), i = (n ? t.originalEvent.changedTouches[0] : t).pageX - o, c = (n ? t.originalEvent.changedTouches[0] : t).pageY - a;
2965                        (e || m) && i === l && c === u && P.setHand(i, c), "hours" === P.currentView ? P.toggleView("minutes", k / 2) : r.autoclose && (P.minutesView.addClass("clockpicker-dial-out"), setTimeout(function () {
2966                            P.done()
2967                        }, k / 2)), d.prepend(W), clearTimeout(g), P.popover.removeClass("clockpicker-moving"), s.off(p)
2968                    })
2969                }
2970            }
2971            var u = a(C), d = u.find(".clockpicker-plate"), m = u.find(".picker__holder"), g = u.find(".clockpicker-hours"), S = u.find(".clockpicker-minutes"), T = u.find(".clockpicker-am-pm-block"), M = "INPUT" === i.prop("tagName"), I = M ? i : i.find("input"), A = a("label[for=" + I.attr("id") + "]"), P = this;
2972            if (this.id = n("cp"), this.element = i, this.holder = m, this.options = r, this.isAppended = !1, this.isShown = !1, this.currentView = "hours", this.isInput = M, this.input = I, this.label = A, this.popover = u, this.plate = d, this.hoursView = g, this.minutesView = S, this.amPmBlock = T, this.spanHours = u.find(".clockpicker-span-hours"), this.spanMinutes = u.find(".clockpicker-span-minutes"), this.spanAmPm = u.find(".clockpicker-span-am-pm"), this.footer = u.find(".picker__footer"), this.amOrPm = "PM", r.twelvehour) {
2973                var _ = ['<div class="clockpicker-am-pm-block">', '<button type="button" class="btn-floating btn-flat clockpicker-button clockpicker-am-button">', "AM", "</button>", '<button type="button" class="btn-floating btn-flat clockpicker-button clockpicker-pm-button">', "PM", "</button>", "</div>"].join("");
2974                a(_);
2975                r.ampmclickable ? (this.spanAmPm.empty(), a('<div id="click-am">AM</div>').on("click", function () {
2976                    P.spanAmPm.children("#click-am").addClass("text-primary"), P.spanAmPm.children("#click-pm").removeClass("text-primary"), P.amOrPm = "AM"
2977                }).appendTo(this.spanAmPm), a('<div id="click-pm">PM</div>').on("click", function () {
2978                    P.spanAmPm.children("#click-pm").addClass("text-primary"), P.spanAmPm.children("#click-am").removeClass("text-primary"), P.amOrPm = "PM"
2979                }).appendTo(this.spanAmPm)) : (a('<button type="button" class="btn-floating btn-flat clockpicker-button am-button" tabindex="1">AM</button>').on("click", function () {
2980                    P.amOrPm = "AM", P.amPmBlock.children(".pm-button").removeClass("active"), P.amPmBlock.children(".am-button").addClass("active"), P.spanAmPm.empty().append("AM")
2981                }).appendTo(this.amPmBlock), a('<button type="button" class="btn-floating btn-flat clockpicker-button pm-button" tabindex="2">PM</button>').on("click", function () {
2982                    P.amOrPm = "PM", P.amPmBlock.children(".am-button").removeClass("active"), P.amPmBlock.children(".pm-button").addClass("active"), P.spanAmPm.empty().append("PM")
2983                }).appendTo(this.amPmBlock))
2984            }
2985            r.darktheme && u.addClass("darktheme"), a('<button type="button" class="btn-flat clockpicker-button" tabindex="' + (r.twelvehour ? "3" : "1") + '">' + r.donetext + "</button>").click(a.proxy(this.done, this)).appendTo(this.footer), this.spanHours.click(a.proxy(this.toggleView, this, "hours")), this.spanMinutes.click(a.proxy(this.toggleView, this, "minutes")), I.on("focus.clockpicker click.clockpicker", a.proxy(this.show, this));
2986            var D, E, O, L, F = a('<div class="clockpicker-tick"></div>');
2987            if (r.twelvehour)
2988                for (D = 1; D < 13; D += 1)
2989                    E = F.clone(), O = D / 6 * Math.PI, L = y, E.css("font-size", "140%"), E.css({left: v + Math.sin(O) * L - x, top: v - Math.
2989cos(O) * L - x}), E.html(0 === D ? "00" : D), g.append(E), E.on(h, l);
2990            else
2991                for (D = 0; D < 24; D += 1) {
2992                    E = F.clone(), O = D / 6 * Math.PI;
2993                    var R = D > 0 && D < 13;
2994                    L = R ? b : y, E.css({left: v + Math.sin(O) * L - x, top: v - Math.cos(O) * L - x}), R && E.css("font-size", "120%"), E.html(0 === D ? "00" : D), g.append(E), E.on(h, l)
2995                }
2996            for (D = 0; D < 60; D += 5)
2997                E = F.clone(), O = D / 30 * Math.PI, E.css({left: v + Math.sin(O) * y - x, top: v - Math.cos(O) * y - x}), E.css("font-size", "140%"), E.html(e(D)), S.append(E), E.on(h, l);
2998            if (d.on(h, function (t) {
2999                0 === a(t.target).closest(".clockpicker-tick").length && l(t, !0)
3000            }), c) {
3001                var W = u.find(".clockpicker-canvas"), V = t("svg");
3002                V.setAttribute("class", "clockpicker-svg"), V.setAttribute("width", w), V.setAttribute("height", w);
3003                var z = t("g");
3004                z.setAttribute("transform", "translate(" + v + "," + v + ")");
3005                var N = t("circle");
3006                N.setAttribute("class", "clockpicker-canvas-bearing"), N.setAttribute("cx", 0), N.setAttribute("cy", 0), N.setAttribute("r", 2);
3007                var H = t("line");
3008                H.setAttribute("x1", 0), H.setAttribute("y1", 0);
3009                var B = t("circle");
3010                B.setAttribute("class", "clockpicker-canvas-bg"), B.setAttribute("r", x);
3011                var Y = t("circle");
3012                Y.setAttribute("class", "clockpicker-canvas-fg"), Y.setAttribute("r", 5), z.appendChild(H), z.appendChild(B), z.appendChild(Y), z.appendChild(N), V.appendChild(z), W.append(V), this.hand = H, this.bg = B, this.fg = Y, this.bearing = N, this.g = z, this.canvas = W
3013            }
3014            o(this.options.init)
3015        }
3016        function o(t) {
3017            t && "function" == typeof t && t()
3018        }
3019        var a = window.jQuery, r = a(window), s = a(document), l = "http://www.w3.org/2000/svg", c = "SVGAngle"in window && function () {
3020            var t, e = document.createElement("div");
3021            return e.innerHTML = "<svg/>", t = (e.firstChild && e.firstChild.namespaceURI) == l, e.innerHTML = "", t
3022        }(), u = function () {
3023            var t = document.createElement("div").style;
3024            return"transition"in t || "WebkitTransition"in t || "MozTransition"in t || "msTransition"in t || "OTransition"in t
3025        }(), d = "ontouchstart"in window, h = "mousedown" + (d ? " touchstart" : ""), p = "mousemove.clockpicker" + (d ? " touchmove.clockpicker" : ""), f = "mouseup.clockpicker" + (d ? " touchend.clockpicker" : ""), m = navigator.vibrate ? "vibrate" : navigator.webkitVibrate ? "webkitVibrate" : null, g = 0, v = 135, y = 110, b = 80, x = 20, w = 2 * v, k = u ? 350 : 1, C = ['<div class="clockpicker picker">', '<div class="picker__holder">', '<div class="picker__frame">', '<div class="picker__wrap">', '<div class="picker__box">', '<div class="picker__date-display">', '<div class="clockpicker-display">', '<div class="clockpicker-display-column">', '<span class="clockpicker-span-hours text-primary"></span>', ":", '<span class="clockpicker-span-minutes"></span>', "</div>", '<div class="clockpicker-display-column clockpicker-display-am-pm">', '<div class="clockpicker-span-am-pm"></div>', "</div>", "</div>", "</div>", '<div class="picker__calendar-container">', '<div class="clockpicker-plate">', '<div class="clockpicker-canvas"></div>', '<div class="clockpicker-dial clockpicker-hours"></div>', '<div class="clockpicker-dial clockpicker-minutes clockpicker-dial-out"></div>', "</div>", '<div class="clockpicker-am-pm-block">', "</div>", "</div>", '<div class="picker__footer">', "</div>", "</div>", "</div>", "</div>", "</div>", "</div>"].join("");
3026        i.DEFAULTS = {default: "", fromnow: 0, donetext: "Done", autoclose: !1, ampmclickable: !1, darktheme: !1, twelvehour: !0, vibrate: !0}, i.prototype.toggle = function () {
3027            this[this.isShown ? "hide" : "show"]()
3028        }, i.prototype.locate = function () {
3029            var t = this.element, e = this.popover;
3030            t.offset(), t.outerWidth(), t.outerHeight(), this.options.align;
3031            e.show()
3032        }, i.prototype.show = function (t) {
3033            if (!this.isShown) {
3034                o(this.options.beforeShow), a(":input").each(function () {
3035                    a(this).attr("tabindex", -1)
3036                });
3037                var n = this;
3038                this.input.blur(), this.popover.addClass("picker--opened"), this.input.addClass("picker__input picker__input--active"), a(document.body).css("overflow", "hidden"), this.isAppended || (this.popover.insertAfter(this.input), this.options.twelvehour && (this.amOrPm = "PM", this.options.ampmclickable ? (this.spanAmPm.children("#click-pm").addClass("text-primary"), this.spanAmPm.children("#click-am").removeClass("text-primary")) : (this.amPmBlock.children(".am-button").removeClass("active"), this.amPmBlock.children(".pm-button").addClass("active"), this.spanAmPm.empty().append("PM"))), r.on("resize.clockpicker" + this.id, function () {
3039                    n.isShown && n.locate()
3040                }), this.isAppended = !0);
3041                var i = ((this.input.prop("value") || this.options.default || "") + "").split(":");
3042                if (this.options.twelvehour && void 0 !== i[1] && (i[1] = i[1].replace("AM", "").replace("PM", "")), "now" === i[0]) {
3043                    var l = new Date(+new Date + this.options.fromnow);
3044                    i = [l.getHours(), l.getMinutes()]
3045                }
3046                this.hours = +i[0] || 0, this.minutes = +i[1] || 0, this.spanHours.html(e(this.hours)), this.spanMinutes.html(e(this.minutes)), this.toggleView("hours"), this.locate(), this.isShown = !0, s.on("click.clockpicker." + this.id + " focusin.clockpicker." + this.id, function (t) {
3047                    var e = a(t.target);
3048                    0 === e.closest(n.popover.find(".picker__wrap")).length && 0 === e.closest(n.input).length && n.hide()
3049                }), s.on("keyup.clockpicker." + this.id, function (t) {
3050                    27 === t.keyCode && n.hide()
3051                }), o(this.options.afterShow)
3052            }
3053        }, i.prototype.hide = function () {
3054            o(this.options.beforeHide), this.input.removeClass("picker__input picker__input--active"), this.popover.removeClass("picker--opened"), a(document.body).css("overflow", "visible"), this.isShown = !1, a(":input").each(function (t) {
3055                a(this).attr("tabindex", t + 1)
3056            }), s.off("click.clockpicker." + this.id + " focusin.clockpicker." + this.id), s.off("keyup.clockpicker." + this.id), this.popover.hide(), o(this.options.afterHide)
3057        }, i.prototype.toggleView = function (t, e) {
3058            var n = !1;
3059            "minutes" === t && "visible" === a(this.hoursView).css("visibility") && (o(this.options.beforeHourSelect), n = !0);
3060            var i = "hours" === t, r = i ? this.hoursView : this.minutesView, s = i ? this.minutesView : this.hoursView;
3061            this.currentView = t, this.spanHours.toggleClass("text-primary", i), this.spanMinutes.toggleClass("text-primary", !i), s.addClass("clockpicker-dial-out"), r.css("visibility", "visible").removeClass("clockpicker-dial-out"), this.resetClock(e), clearTimeout(this.toggleViewTimer), this.toggleViewTimer = setTimeout(function () {
3062                s.css("visibility", "hidden")
3063            }, k), n && o(this.options.afterHourSelect)
3064        }, i.prototype.resetClock = function (t) {
3065            var e = this.currentView, n = this[e], i = "hours" === e, o = n * (Math.PI / (i ? 6 : 30)), a = i && n > 0 && n < 13 ? b : y, r = Math.sin(o) * a, s = -Math.cos(o) * a, l = this;
3066            c && t ? (l.canvas.addClass("clockpicker-canvas-out"), setTimeout(function () {
3067                l.canvas.removeClass("clockpicker-canvas-out"), l.setHand(r, s)
3068            }, t)) : this.setHand(r, s)
3069        }, i.prototype.setHand = function (t, n, i, o) {
3070            var r, s = Math.atan2(t, -n), l = "hours" === this.currentView, u = Math.PI / (l || i ? 6 : 30), d = Math.sqrt(t * t + n * n), h = this.options, p = l && d < (y + b) / 2, f = p ? b : y;
3071            if (h.twelvehour && (f = y), s < 0 && (s = 2 * Math.PI + s), r = Math.round(s / u), s = r * u, h.twelvehour ? l ? 0 === r && (r = 12) : (i && (r *= 5), 60 === r && (r = 0)) : l ? (12 === r && (r = 0), r = p ? 0 === r ? 12 : r : 0 === r ? 0 : r + 12) : (i && (r *= 5), 60 === r && (r = 0)), l ? this.fg.setAttribute("class", "clockpicker-canvas-fg") : r % 5 == 0 ? this.fg.setAttribute("class", "clockpicker-canvas-fg") : this.fg.setAttribute("class", "clockpicker-canvas-fg active"), this[this.currentView] !== r && m && this.options.vibrate && (this.vibrateTimer || (navigator[m](10), this.vibrateTimer = setTimeout(a.proxy(function () {
3072                this.vibrateTimer = null
3073            }, this), 100))), this[this.currentView] = r, this[l ? "spanHours" : "spanMinutes"].html(e(r)), c) {
3074                o || !l && r % 5 ? (this.g.insertBefore(this.hand, this.bearing), this.g.insertBefore(this.bg, this.fg), this.bg.setAttribute("class", "clockpicker-canvas-bg clockpicker-canvas-bg-trans")) : (this.g.insertBefore(this.hand, this.bg), this.g.insertBefore(this.fg, this.bg), this.bg.setAttribute("class", "clockpicker-canvas-bg"));
3075                var g = Math.sin(s) * (f - x), v = -Math.cos(s) * (f - x), w = Math.sin(s) * f, k = -Math.cos(s) * f;
3076                this.hand.setAttribute("x2", g), this.hand.setAttribute("y2", v), this.bg.setAttribute("cx", w), this.bg.setAttribute("cy", k), this.fg.setAttribute("cx", w), this.fg.setAttribute("cy", k)
3077            } else
3078                this[l ? "hoursView" : "minutesView"].find(".clockpicker-tick").each(function () {
3079                    var t = a(this);
3080                    t.toggleClass("active", r === +t.html())
3081                })
3082        }, i.prototype.done = function () {
3083            o(this.options.beforeDone), this.hide(), this.label.addClass("active");
3084            var t = this.input.prop("value"), n = e(this.hours) + ":" + e(this.minutes);
3085            this.options.twelvehour && (n += this.amOrPm), this.input.prop("value", n), n !== t && (this.input.triggerHandler("change"), this.isInput || this.element.trigger("change")), this.options.autoclose && this.input.trigger("blur"), o(this.options.afterDone)
3086        }, i.prototype.remove = function () {
3087            this.element.removeData("clockpicker"), this.input.off("focus.clockpicker click.clockpicker"), this.isShown && this.hide(), this.isAppended && (r.off("resize.clockpicker" + this.id), this.popover.remove())
3088        }, a.fn.pickatime = function (t) {
3089            var e = Array.prototype.slice.call(arguments, 1);
3090            return this.each(function () {
3091                var n = a(this), o = n.data("clockpicker");
3092                if (o)
3093                    "function" == typeof o[t] && o[t].apply(o, e);
3094                else {
3095                    var r = a.extend({}, i.DEFAULTS, n.data(), "object" == typeof t && t);
3096                    n.data("clockpicker", new i(n, r))
3097                }
3098            })
3099        }
3100    }(), function t(e, n, i) {
3101        function o(r, s) {
3102            if (!n[r]) {
3103                if (!e[r]) {
3104                    var l = "function" == typeof require && require;
3105                    if (!s && l)
3106                        return l(r, !0);
3107                    if (a)
3108                        return a(r, !0);
3109                    var c = new Error("Cannot find module '" + r + "'");
3110                    throw c.code = "MODULE_NOT_FOUND", c
3111                }
3112                var u = n[r] = {exports: {}};
3113                e[r][0].call(u.exports, function (t) {
3114                    var n = e[r][1][t];
3115                    return o(n || t)
3116                }, u, u.exports, t, e, n, i)
3117            }
3118            return n[r].exports
3119        }
3120        for (var a = "function" == typeof require && require, r = 0; r < i.length; r++)
3121            o(i[r]);
3122        return o
3123    }({1: [function (t, e, n) {
3124                "use strict";
3125                var i = t("../main");
3126                "function" == typeof define && define.amd ? define(i) : (window.PerfectScrollbar = i, void 0 === window.Ps && (window.Ps = i))
3127            }, {"../main": 7}], 2: [function (t, e, n) {
3128                "use strict";
3129                function i(t, e) {
3130                    var n = t.className.split(" ");
3131                    n.indexOf(e) < 0 && n.push(e), t.className = n.join(" ")
3132                }
3133                function o(t, e) {
3134                    var n = t.className.split(" "), i = n.indexOf(e);
3135                    i >= 0 && n.splice(i, 1), t.className = n.join(" ")
3136                }
3137                n.add = function (t, e) {
3138                    t.classList ? t.classList.add(e) : i(t, e)
3139                }, n.remove = function (t, e) {
3140                    t.classList ? t.classList.remove(e) : o(t, e)
3141                }, n.list = function (t) {
3142                    return t.classList ? Array.prototype.slice.apply(t.classList) : t.className.split(" ")
3143                }
3144            }, {}], 3: [function (t, e, n) {
3145                "use strict";
3146                function i(t, e) {
3147                    return window.getComputedStyle(t)[e]
3148                }
3149                function o(t, e, n) {
3150                    return"number" == typeof n && (n = n.toString() + "px"), t.style[e] = n, t
3151                }
3152                function a(t, e) {
3153                    for (var n in e) {
3154                        var i = e[n];
3155                        "number" == typeof i && (i = i.toString() + "px"), t.style[n] = i
3156                    }
3157                    return t
3158                }
3159                var r = {};
3160                r.e = function (t, e) {
3161                    var n = document.createElement(t);
3162                    return n.className = e, n
3163                }, r.appendTo = function (t, e) {
3164                    return e.appendChild(t), t
3165                }, r.css = function (t, e, n) {
3166                    return"object" == typeof e ? a(t, e) : void 0 === n ? i(t, e) : o(t, e, n)
3167                }, r.matches = function (t, e) {
3168                    return void 0 !== t.matches ? t.matches(e) : void 0 !== t.matchesSelector ? t.matchesSelector(e) : void 0 !== t.webkitMatchesSelector ? t.webkitMatchesSelector(e) : void 0 !== t.mozMatchesSelector ? t.mozMatchesSelector(e) : void 0 !== t.msMatchesSelector ? t.msMatchesSelector(e) : void 0
3169                }, r.remove = function (t) {
3170                    void 0 !== t.remove ? t.remove() : t.parentNode && t.parentNode.removeChild(t)
3171                }, r.queryChildren = function (t, e) {
3172                    return Array.prototype.filter.call(t.childNodes, function (t) {
3173                        return r.matches(t, e)
3174                    })
3175                }, e.exports = r
3176            }, {}], 4: [function (t, e, n) {
3177                "use strict";
3178                var i = function (t) {
3179                    this.element = t, this.events = {}
3180                };
3181                i.prototype.bind = function (t, e) {
3182                    void 0 === this.events[t] && (this.events[t] = []), this.events[t].push(e), this.element.addEventListener(t, e, !1)
3183                }, i.prototype.unbind = function (t, e) {
3184                    var n = void 0 !== e;
3185                    this.events[t] = this.events[t].filter(function (i) {
3186                        return!(!n || i === e) || (this.element.removeEventListener(t, i, !1), !1)
3187                    }, this)
3188                }, i.prototype.unbindAll = function () {
3189                    for (var t in this.events)
3190                        this.unbind(t)
3191                };
3192                var o = function () {
3193                    this.eventElements = []
3194                };
3195                o.prototype.eventElement = function (t) {
3196                    var e = this.eventElements.filter(function (e) {
3197                        return e.element === t
3198                    })[0];
3199                    return void 0 === e && (e = new i(t), this.eventElements.push(e)), e
3200                }, o.prototype.bind = function (t, e, n) {
3201                    this.eventElement(t).bind(e, n)
3202                }, o.prototype.unbind = function (t, e, n) {
3203                    this.eventElement(t).unbind(e, n)
3204                }, o.prototype.unbindAll = function () {
3205                    for (var t = 0; t < this.eventElements.length; t++)
3206                        this.eventElements[t].unbindAll()
3207                }, o.prototype.once = function (t, e, n) {
3208                    var i = this.eventElement(t), o = function (t) {
3209                        i.unbind(e, o), n(t)
3210                    };
3211                    i.bind(e, o)
3212                }, e.exports = o
3213            }, {}], 5: [function (t, e, n) {
3214                "use strict";
3215                e.exports = function () {
3216                    function t() {
3217                        return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1)
3218                    }
3219                    return function () {
3220                        return t() + t() + "-" + t() + "-" + t() + "-" + t() + "-" + t() + t() + t()
3221                    }
3222                }()
3223            }, {}], 6: [function (t, e, n) {
3224                "use strict";
3225                function i(t) {
3226                    return function (e, n) {
3227                        t(e, "ps--in-scrolling"), void 0 !== n ? t(e, "ps--" + n) : (t(e, "ps--x"), t(e, "ps--y"))
3228                    }
3229                }
3230                var o = t("./class"), a = t("./dom"), r = n.toInt = function (t) {
3231                    return parseInt(t, 10) || 0
3232                }, s = n.clone = function (t) {
3233                    if (t) {
3234                        if (Array.isArray(t))
3235                            return t.map(s);
3236                        if ("object" == typeof t) {
3237                            var e = {};
3238                            for (var n in t)
3239                                e[n] = s(t[n]);
3240                            return e
3241                        }
3242                        return t
3243                    }
3244                    return null
3245                };
3246                n.extend = function (t, e) {
3247                    var n = s(t);
3248                    for (var i in e)
3249                        n[i] = s(e[i]);
3250                    return n
3251                }, n.isEditable = function (t) {
3252                    return a.matches(t, "input,[contenteditable]") || a.matches(t, "select,[contenteditable]") || a.matches(t, "textarea,[contenteditable]") || a.matches(t, "button,[contenteditable]")
3253                }, n.removePsClasses = function (t) {
3254                    for (var e = o.list(t), n = 0; n < e.length; n++) {
3255                        var i = e[n];
3256                        0 === i.indexOf("ps-") && o.remove(t, i)
3257                    }
3258                }, n.outerWidth = function (t) {
3259                    return r(a.css(t, "width")) + r(a.css(t, "paddingLeft")) + r(a.css(t, "paddingRight")) + r(a.css(t, "borderLeftWidth")) + r(a.css(t, "borderRightWidth"))
3260                }, n.startScrolling = i(o.add), n.stopScrolling = i(o.remove), n.env = {isWebKit: "undefined" != typeof document && "WebkitAppearance"in document.documentElement.style, supportsTouch: "undefined" != typeof window && ("ontouchstart"in window || window.DocumentTouch && document instanceof window.DocumentTouch), supportsIePointer: "undefined" != typeof window && null !== window.navigator.msMaxTouchPoints}
3261            }, {"./class": 2, "./dom": 3}], 7: [function (t, e, n) {
3262                "use strict";
3263                var i = t("./plugin/destroy"), o = t("./plugin/initialize"), a = t("./plugin/update");
3264                e.exports = {initialize: o, update: a, destroy: i}
3265            }, {"./plugin/destroy": 9, "./plugin/initialize": 17, "./plugin/update": 21}], 8: [function (t, e, n) {
3266                "use strict";
3267                e.exports = {handlers: ["click-rail", "drag-scrollbar", "keyboard", "wheel", "touch"], maxScrollbarLength: null, minScrollbarLength: null, scrollXMarginOffset: 0, scrollYMarginOffset: 0, suppressScrollX: !1, suppressScrollY: !1, swipePropagation: !0, swipeEasing: !0, useBothWheelAxes: !1, wheelPropagation: !1, wheelSpeed: 1, theme: "default"}
3268            }, {}], 9: [function (t, e, n) {
3269                "use strict";
3270                var i = t("../lib/helper"), o = t("../lib/dom"), a = t("./instances");
3271                e.exports = function (t) {
3272                    var e = a.get(t);
3273                    e && (e.event.unbindAll(), o.remove(e.scrollbarX), o.remove(e.scrollbarY), o.remove(e.scrollbarXRail), o.remove(e.scrollbarYRail), i.removePsClasses(t), a.remove(t))
3274                }
3275            }, {"../lib/dom": 3, "../lib/helper": 6, "./instances": 18}], 10: [function (t, e, n) {
3276                "use strict";
3277                function i(t, e) {
3278                    function n(t) {
3279                        return t.getBoundingClientRect()
3280                    }
3281                    var i = function (t) {
3282                        t.stopPropagation()
3283                    };
3284                    e.event.bind(e.scrollbarY, "click", i), e.event.bind(e.scrollbarYRail, "click", function (i) {
3285                        var o = i.pageY - window.pageYOff
3285set - n(e.scrollbarYRail).top > e.scrollbarYTop ? 1 : -1;
3286                        r(t, "top", t.scrollTop + o * e.containerHeight), a(t), i.stopPropagation()
3287                    }), e.event.bind(e.scrollbarX, "click", i), e.event.bind(e.scrollbarXRail, "click", function (i) {
3288                        var o = i.pageX - window.pageXOffset - n(e.scrollbarXRail).left > e.scrollbarXLeft ? 1 : -1;
3289                        r(t, "left", t.scrollLeft + o * e.containerWidth), a(t), i.stopPropagation()
3290                    })
3291                }
3292                var o = t("../instances"), a = t("../update-geometry"), r = t("../update-scroll");
3293                e.exports = function (t) {
3294                    i(t, o.get(t))
3295                }
3296            }, {"../instances": 18, "../update-geometry": 19, "../update-scroll": 20}], 11: [function (t, e, n) {
3297                "use strict";
3298                function i(t, e) {
3299                    function n(n) {
3300                        var o = i + n * e.railXRatio, r = Math.max(0, e.scrollbarXRail.getBoundingClientRect().left) + e.railXRatio * (e.railXWidth - e.scrollbarXWidth);
3301                        e.scrollbarXLeft = o < 0 ? 0 : o > r ? r : o;
3302                        var s = a.toInt(e.scrollbarXLeft * (e.contentWidth - e.containerWidth) / (e.containerWidth - e.railXRatio * e.scrollbarXWidth)) - e.negativeScrollAdjustment;
3303                        c(t, "left", s)
3304                    }
3305                    var i = null, o = null, s = function (e) {
3306                        n(e.pageX - o), l(t), e.stopPropagation(), e.preventDefault()
3307                    }, u = function () {
3308                        a.stopScrolling(t, "x"), e.event.unbind(e.ownerDocument, "mousemove", s)
3309                    };
3310                    e.event.bind(e.scrollbarX, "mousedown", function (n) {
3311                        o = n.pageX, i = a.toInt(r.css(e.scrollbarX, "left")) * e.railXRatio, a.startScrolling(t, "x"), e.event.bind(e.ownerDocument, "mousemove", s), e.event.once(e.ownerDocument, "mouseup", u), n.stopPropagation(), n.preventDefault()
3312                    })
3313                }
3314                function o(t, e) {
3315                    function n(n) {
3316                        var o = i + n * e.railYRatio, r = Math.max(0, e.scrollbarYRail.getBoundingClientRect().top) + e.railYRatio * (e.railYHeight - e.scrollbarYHeight);
3317                        e.scrollbarYTop = o < 0 ? 0 : o > r ? r : o;
3318                        var s = a.toInt(e.scrollbarYTop * (e.contentHeight - e.containerHeight) / (e.containerHeight - e.railYRatio * e.scrollbarYHeight));
3319                        c(t, "top", s)
3320                    }
3321                    var i = null, o = null, s = function (e) {
3322                        n(e.pageY - o), l(t), e.stopPropagation(), e.preventDefault()
3323                    }, u = function () {
3324                        a.stopScrolling(t, "y"), e.event.unbind(e.ownerDocument, "mousemove", s)
3325                    };
3326                    e.event.bind(e.scrollbarY, "mousedown", function (n) {
3327                        o = n.pageY, i = a.toInt(r.css(e.scrollbarY, "top")) * e.railYRatio, a.startScrolling(t, "y"), e.event.bind(e.ownerDocument, "mousemove", s), e.event.once(e.ownerDocument, "mouseup", u), n.stopPropagation(), n.preventDefault()
3328                    })
3329                }
3330                var a = t("../../lib/helper"), r = t("../../lib/dom"), s = t("../instances"), l = t("../update-geometry"), c = t("../update-scroll");
3331                e.exports = function (t) {
3332                    var e = s.get(t);
3333                    i(t, e), o(t, e)
3334                }
3335            }, {"../../lib/dom": 3, "../../lib/helper": 6, "../instances": 18, "../update-geometry": 19, "../update-scroll": 20}], 12: [function (t, e, n) {
3336                "use strict";
3337                function i(t, e) {
3338                    function n(n, i) {
3339                        var o = t.scrollTop;
3340                        if (0 === n) {
3341                            if (!e.scrollbarYActive)
3342                                return!1;
3343                            if (0 === o && i > 0 || o >= e.contentHeight - e.containerHeight && i < 0)
3344                                return!e.settings.wheelPropagation
3345                        }
3346                        var a = t.scrollLeft;
3347                        if (0 === i) {
3348                            if (!e.scrollbarXActive)
3349                                return!1;
3350                            if (0 === a && n < 0 || a >= e.contentWidth - e.containerWidth && n > 0)
3351                                return!e.settings.wheelPropagation
3352                        }
3353                        return!0
3354                    }
3355                    var i = !1;
3356                    e.event.bind(t, "mouseenter", function () {
3357                        i = !0
3358                    }), e.event.bind(t, "mouseleave", function () {
3359                        i = !1
3360                    });
3361                    var r = !1;
3362                    e.event.bind(e.ownerDocument, "keydown", function (c) {
3363                        if (!(c.isDefaultPrevented && c.isDefaultPrevented() || c.defaultPrevented)) {
3364                            var u = a.matches(e.scrollbarX, ":focus") || a.matches(e.scrollbarY, ":focus");
3365                            if (i || u) {
3366                                var d = document.activeElement ? document.activeElement : e.ownerDocument.activeElement;
3367                                if (d) {
3368                                    if ("IFRAME" === d.tagName)
3369                                        d = d.contentDocument.activeElement;
3370                                    else
3371                                        for (; d.shadowRoot; )
3372                                            d = d.shadowRoot.activeElement;
3373                                    if (o.isEditable(d))
3374                                        return
3375                                }
3376                                var h = 0, p = 0;
3377                                switch (c.which) {
3378                                    case 37:
3379                                        h = c.metaKey ? -e.contentWidth : c.altKey ? -e.containerWidth : -30;
3380                                        break;
3381                                    case 38:
3382                                        p = c.metaKey ? e.contentHeight : c.altKey ? e.containerHeight : 30;
3383                                        break;
3384                                    case 39:
3385                                        h = c.metaKey ? e.contentWidth : c.altKey ? e.containerWidth : 30;
3386                                        break;
3387                                    case 40:
3388                                        p = c.metaKey ? -e.contentHeight : c.altKey ? -e.containerHeight : -30;
3389                                        break;
3390                                    case 33:
3391                                        p = 90;
3392                                        break;
3393                                    case 32:
3394                                        p = c.shiftKey ? 90 : -90;
3395                                        break;
3396                                    case 34:
3397                                        p = -90;
3398                                        break;
3399                                    case 35:
3400                                        p = c.ctrlKey ? -e.contentHeight : -e.containerHeight;
3401                                        break;
3402                                    case 36:
3403                                        p = c.ctrlKey ? t.scrollTop : e.containerHeight;
3404                                        break;
3405                                    default:
3406                                        return
3407                                }
3408                                l(t, "top", t.scrollTop - p), l(t, "left", t.scrollLeft + h), s(t), (r = n(h, p)) && c.preventDefault()
3409                            }
3410                        }
3411                    })
3412                }
3413                var o = t("../../lib/helper"), a = t("../../lib/dom"), r = t("../instances"), s = t("../update-geometry"), l = t("../update-scroll");
3414                e.exports = function (t) {
3415                    i(t, r.get(t))
3416                }
3417            }, {"../../lib/dom": 3, "../../lib/helper": 6, "../instances": 18, "../update-geometry": 19, "../update-scroll": 20}], 13: [function (t, e, n) {
3418                "use strict";
3419                function i(t, e) {
3420                    function n(n, i) {
3421                        var o = t.scrollTop;
3422                        if (0 === n) {
3423                            if (!e.scrollbarYActive)
3424                                return!1;
3425                            if (0 === o && i > 0 || o >= e.contentHeight - e.containerHeight && i < 0)
3426                                return!e.settings.wheelPropagation
3427                        }
3428                        var a = t.scrollLeft;
3429                        if (0 === i) {
3430                            if (!e.scrollbarXActive)
3431                                return!1;
3432                            if (0 === a && n < 0 || a >= e.contentWidth - e.containerWidth && n > 0)
3433                                return!e.settings.wheelPropagation
3434                        }
3435                        return!0
3436                    }
3437                    function i(t) {
3438                        var e = t.deltaX, n = -1 * t.deltaY;
3439                        return void 0 !== e && void 0 !== n || (e = -1 * t.wheelDeltaX / 6, n = t.wheelDeltaY / 6), t.deltaMode && 1 === t.deltaMode && (e *= 10, n *= 10), e !== e && n !== n && (e = 0, n = t.wheelDelta), t.shiftKey ? [-n, -e] : [e, n]
3440                    }
3441                    function o(e, n) {
3442                        var i = t.querySelector("textarea:hover, select[multiple]:hover, .ps-child:hover");
3443                        if (i) {
3444                            var o = window.getComputedStyle(i);
3445                            if (![o.overflow, o.overflowX, o.overflowY].join("").match(/(scroll|auto)/))
3446                                return!1;
3447                            var a = i.scrollHeight - i.clientHeight;
3448                            if (a > 0 && !(0 === i.scrollTop && n > 0 || i.scrollTop === a && n < 0))
3449                                return!0;
3450                            var r = i.scrollLeft - i.clientWidth;
3451                            if (r > 0 && !(0 === i.scrollLeft && e < 0 || i.scrollLeft === r && e > 0))
3452                                return!0
3453                        }
3454                        return!1
3455                    }
3456                    function s(s) {
3457                        var c = i(s), u = c[0], d = c[1];
3458                        o(u, d) || (l = !1, e.settings.useBothWheelAxes ? e.scrollbarYActive && !e.scrollbarXActive ? (d ? r(t, "top", t.scrollTop - d * e.settings.wheelSpeed) : r(t, "top", t.scrollTop + u * e.settings.wheelSpeed), l = !0) : e.scrollbarXActive && !e.scrollbarYActive && (u ? r(t, "left", t.scrollLeft + u * e.settings.wheelSpeed) : r(t, "left", t.scrollLeft - d * e.settings.wheelSpeed), l = !0) : (r(t, "top", t.scrollTop - d * e.settings.wheelSpeed), r(t, "left", t.scrollLeft + u * e.settings.wheelSpeed)), a(t), (l = l || n(u, d)) && (s.stopPropagation(), s.preventDefault()))
3459                    }
3460                    var l = !1;
3461                    void 0 !== window.onwheel ? e.event.bind(t, "wheel", s) : void 0 !== window.onmousewheel && e.event.bind(t, "mousewheel", s)
3462                }
3463                var o = t("../instances"), a = t("../update-geometry"), r = t("../update-scroll");
3464                e.exports = function (t) {
3465                    i(t, o.get(t))
3466                }
3467            }, {"../instances": 18, "../update-geometry": 19, "../update-scroll": 20}], 14: [function (t, e, n) {
3468                "use strict";
3469                function i(t, e) {
3470                    e.event.bind(t, "scroll", function () {
3471                        a(t)
3472                    })
3473                }
3474                var o = t("../instances"), a = t("../update-geometry");
3475                e.exports = function (t) {
3476                    i(t, o.get(t))
3477                }
3478            }, {"../instances": 18, "../update-geometry": 19}], 15: [function (t, e, n) {
3479                "use strict";
3480                function i(t, e) {
3481                    function n() {
3482                        var t = window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : "";
3483                        return 0 === t.toString().length ? null : t.getRangeAt(0).commonAncestorContainer
3484                    }
3485                    function i() {
3486                        c || (c = setInterval(function () {
3487                            return a.get(t) ? (s(t, "top", t.scrollTop + u.top), s(t, "left", t.scrollLeft + u.left), void r(t)) : void clearInterval(c)
3488                        }, 50))
3489                    }
3490                    function l() {
3491                        c && (clearInterval(c), c = null), o.stopScrolling(t)
3492                    }
3493                    var c = null, u = {top: 0, left: 0}, d = !1;
3494                    e.event.bind(e.ownerDocument, "selectionchange", function () {
3495                        t.contains(n()) ? d = !0 : (d = !1, l())
3496                    }), e.event.bind(window, "mouseup", function () {
3497                        d && (d = !1, l())
3498                    }), e.event.bind(window, "keyup", function () {
3499                        d && (d = !1, l())
3500                    }), e.event.bind(window, "mousemove", function (e) {
3501                        if (d) {
3502                            var n = {x: e.pageX, y: e.pageY}, a = {left: t.offsetLeft, right: t.offsetLeft + t.offsetWidth, top: t.offsetTop, bottom: t.offsetTop + t.offsetHeight};
3503                            n.x < a.left + 3 ? (u.left = -5, o.startScrolling(t, "x")) : n.x > a.right - 3 ? (u.left = 5, o.startScrolling(t, "x")) : u.left = 0, n.y < a.top + 3 ? (u.top = a.top + 3 - n.y < 5 ? -5 : -20, o.startScrolling(t, "y")) : n.y > a.bottom - 3 ? (u.top = n.y - a.bottom + 3 < 5 ? 5 : 20, o.startScrolling(t, "y")) : u.top = 0, 0 === u.top && 0 === u.left ? l() : i()
3504                        }
3505                    })
3506                }
3507                var o = t("../../lib/helper"), a = t("../instances"), r = t("../update-geometry"), s = t("../update-scroll");
3508                e.exports = function (t) {
3509                    i(t, a.get(t))
3510                }
3511            }, {"../../lib/helper": 6, "../instances": 18, "../update-geometry": 19, "../update-scroll": 20}], 16: [function (t, e, n) {
3512                "use strict";
3513                function i(t, e, n, i) {
3514                    function o(n, i) {
3515                        var o = t.scrollTop, a = t.scrollLeft, r = Math.abs(n), s = Math.abs(i);
3516                        if (s > r) {
3517                            if (i < 0 && o === e.contentHeight - e.containerHeight || i > 0 && 0 === o)
3518                                return!e.settings.swipePropagation
3519                        } else if (r > s && (n < 0 && a === e.contentWidth - e.containerWidth || n > 0 && 0 === a))
3520                            return!e.settings.swipePropagation;
3521                        return!0
3522                    }
3523                    function l(e, n) {
3524                        s(t, "top", t.scrollTop - n), s(t, "left", t.scrollLeft - e), r(t)
3525                    }
3526                    function c() {
3527                        x = !0
3528                    }
3529                    function u() {
3530                        x = !1
3531                    }
3532                    function d(t) {
3533                        return t.targetTouches ? t.targetTouches[0] : t
3534                    }
3535                    function h(t) {
3536                        return!(!t.targetTouches || 1 !== t.targetTouches.length) || !(!t.pointerType || "mouse" === t.pointerType || t.pointerType === t.MSPOINTER_TYPE_MOUSE)
3537                    }
3538                    function p(t) {
3539                        if (h(t)) {
3540                            w = !0;
3541                            var e = d(t);
3542                            g.pageX = e.pageX, g.pageY = e.pageY, v = (new Date).getTime(), null !== b && clearInterval(b), t.stopPropagation()
3543                        }
3544                    }
3545                    function f(t) {
3546                        if (!w && e.settings.swipePropagation && p(t), !x && w && h(t)) {
3547                            var n = d(t), i = {pageX: n.pageX, pageY: n.pageY}, a = i.pageX - g.pageX, r = i.pageY - g.pageY;
3548                            l(a, r), g = i;
3549                            var s = (new Date).getTime(), c = s - v;
3550                            c > 0 && (y.x = a / c, y.y = r / c, v = s), o(a, r) && (t.stopPropagation(), t.preventDefault())
3551                        }
3552                    }
3553                    function m() {
3554                        !x && w && (w = !1, e.settings.swipeEasing && (clearInterval(b), b = setInterval(function () {
3555                            return a.get(t) && (y.x || y.y) ? Math.abs(y.x) < .01 && Math.abs(y.y) < .01 ? void clearInterval(b) : (l(30 * y.x, 30 * y.y), y.x *= .8, void(y.y *= .8)) : void clearInterval(b)
3556                        }, 10)))
3557                    }
3558                    var g = {}, v = 0, y = {}, b = null, x = !1, w = !1;
3559                    n ? (e.event.bind(window, "touchstart", c), e.event.bind(window, "touchend", u), e.event.bind(t, "touchstart", p), e.event.bind(t, "touchmove", f), e.event.bind(t, "touchend", m)) : i && (window.PointerEvent ? (e.event.bind(window, "pointerdown", c), e.event.bind(window, "pointerup", u), e.event.bind(t, "pointerdown", p), e.event.bind(t, "pointermove", f), e.event.bind(t, "pointerup", m)) : window.MSPointerEvent && (e.event.bind(window, "MSPointerDown", c), e.event.bind(window, "MSPointerUp", u), e.event.bind(t, "MSPointerDown", p), e.event.bind(t, "MSPointerMove", f), e.event.bind(t, "MSPointerUp", m)))
3560                }
3561                var o = t("../../lib/helper"), a = t("../instances"), r = t("../update-geometry"), s = t("../update-scroll");
3562                e.exports = function (t) {
3563                    (o.env.supportsTouch || o.env.supportsIePointer) && i(t, a.get(t), o.env.supportsTouch, o.env.supportsIePointer)
3564                }
3565            }, {"../../lib/helper": 6, "../instances": 18, "../update-geometry": 19, "../update-scroll": 20}], 17: [function (t, e, n) {
3566                "use strict";
3567                var i = t("../lib/helper"), o = t("../lib/class"), a = t("./instances"), r = t("./update-geometry"), s = {"click-rail": t("./handler/click-rail"), "drag-scrollbar": t("./handler/drag-scrollbar"), keyboard: t("./handler/keyboard"), wheel: t("./handler/mouse-wheel"), touch: t("./handler/touch"), selection: t("./handler/selection")}, l = t("./handler/native-scroll");
3568                e.exports = function (t, e) {
3569                    e = "object" == typeof e ? e : {}, o.add(t, "ps");
3570                    var n = a.add(t);
3571                    n.settings = i.extend(n.settings, e), o.add(t, "ps--theme_" + n.settings.theme), n.settings.handlers.forEac
3571h(function (e) {
3572                        s[e](t)
3573                    }), l(t), r(t)
3574                }
3575            }, {"../lib/class": 2, "../lib/helper": 6, "./handler/click-rail": 10, "./handler/drag-scrollbar": 11, "./handler/keyboard": 12, "./handler/mouse-wheel": 13, "./handler/native-scroll": 14, "./handler/selection": 15, "./handler/touch": 16, "./instances": 18, "./update-geometry": 19}], 18: [function (t, e, n) {
3576                "use strict";
3577                function i(t) {
3578                    function e() {
3579                        l.add(t, "ps--focus")
3580                    }
3581                    function n() {
3582                        l.remove(t, "ps--focus")
3583                    }
3584                    var i = this;
3585                    i.settings = s.clone(c), i.containerWidth = null, i.containerHeight = null, i.contentWidth = null, i.contentHeight = null, i.isRtl = "rtl" === u.css(t, "direction"), i.isNegativeScroll = function () {
3586                        var e = t.scrollLeft, n = null;
3587                        return t.scrollLeft = -1, n = t.scrollLeft < 0, t.scrollLeft = e, n
3588                    }(), i.negativeScrollAdjustment = i.isNegativeScroll ? t.scrollWidth - t.clientWidth : 0, i.event = new d, i.ownerDocument = t.ownerDocument || document, i.scrollbarXRail = u.appendTo(u.e("div", "ps__scrollbar-x-rail"), t), i.scrollbarX = u.appendTo(u.e("div", "ps__scrollbar-x"), i.scrollbarXRail), i.scrollbarX.setAttribute("tabindex", 0), i.event.bind(i.scrollbarX, "focus", e), i.event.bind(i.scrollbarX, "blur", n), i.scrollbarXActive = null, i.scrollbarXWidth = null, i.scrollbarXLeft = null, i.scrollbarXBottom = s.toInt(u.css(i.scrollbarXRail, "bottom")), i.isScrollbarXUsingBottom = i.scrollbarXBottom === i.scrollbarXBottom, i.scrollbarXTop = i.isScrollbarXUsingBottom ? null : s.toInt(u.css(i.scrollbarXRail, "top")), i.railBorderXWidth = s.toInt(u.css(i.scrollbarXRail, "borderLeftWidth")) + s.toInt(u.css(i.scrollbarXRail, "borderRightWidth")), u.css(i.scrollbarXRail, "display", "block"), i.railXMarginWidth = s.toInt(u.css(i.scrollbarXRail, "marginLeft")) + s.toInt(u.css(i.scrollbarXRail, "marginRight")), u.css(i.scrollbarXRail, "display", ""), i.railXWidth = null, i.railXRatio = null, i.scrollbarYRail = u.appendTo(u.e("div", "ps__scrollbar-y-rail"), t), i.scrollbarY = u.appendTo(u.e("div", "ps__scrollbar-y"), i.scrollbarYRail), i.scrollbarY.setAttribute("tabindex", 0), i.event.bind(i.scrollbarY, "focus", e), i.event.bind(i.scrollbarY, "blur", n), i.scrollbarYActive = null, i.scrollbarYHeight = null, i.scrollbarYTop = null, i.scrollbarYRight = s.toInt(u.css(i.scrollbarYRail, "right")), i.isScrollbarYUsingRight = i.scrollbarYRight === i.scrollbarYRight, i.scrollbarYLeft = i.isScrollbarYUsingRight ? null : s.toInt(u.css(i.scrollbarYRail, "left")), i.scrollbarYOuterWidth = i.isRtl ? s.outerWidth(i.scrollbarY) : null, i.railBorderYWidth = s.toInt(u.css(i.scrollbarYRail, "borderTopWidth")) + s.toInt(u.css(i.scrollbarYRail, "borderBottomWidth")), u.css(i.scrollbarYRail, "display", "block"), i.railYMarginHeight = s.toInt(u.css(i.scrollbarYRail, "marginTop")) + s.toInt(u.css(i.scrollbarYRail, "marginBottom")), u.css(i.scrollbarYRail, "display", ""), i.railYHeight = null, i.railYRatio = null
3589                }
3590                function o(t) {
3591                    return t.getAttribute("data-ps-id")
3592                }
3593                function a(t, e) {
3594                    t.setAttribute("data-ps-id", e)
3595                }
3596                function r(t) {
3597                    t.removeAttribute("data-ps-id")
3598                }
3599                var s = t("../lib/helper"), l = t("../lib/class"), c = t("./default-setting"), u = t("../lib/dom"), d = t("../lib/event-manager"), h = t("../lib/guid"), p = {};
3600                n.add = function (t) {
3601                    var e = h();
3602                    return a(t, e), p[e] = new i(t), p[e]
3603                }, n.remove = function (t) {
3604                    delete p[o(t)], r(t)
3605                }, n.get = function (t) {
3606                    return p[o(t)]
3607                }
3608            }
3608, {"../lib/class": 2, "../lib/dom": 3, "../lib/event-manager": 4, "../lib/guid": 5, "../lib/helper": 6, "./default-setting": 8}], 19: [function (t, e, n) {
3609                "use strict";
3610                function i(t, e) {
3611                    return t.settings.minScrollbarLength && (e = Math.max(e, t.settings.minScrollbarLength)), t.settings.maxScrollbarLength && (e = Math.min(e, t.settings.maxScrollbarLength)), e
3612                }
3613                function o(t, e) {
3614                    var n = {width: e.railXWidth};
3615                    e.isRtl ? n.left = e.negativeScrollAdjustment + t.scrollLeft + e.containerWidth - e.contentWidth : n.left = t.scrollLeft, e.isScrollbarXUsingBottom ? n.bottom = e.scrollbarXBottom - t.scrollTop : n.top = e.scrollbarXTop + t.scrollTop, s.css(e.scrollbarXRail, n);
3616                    var i = {top: t.scrollTop, height: e.railYHeight};
3617                    e.isScrollbarYUsingRight ? e.isRtl ? i.right = e.contentWidth - (e.negativeScrollAdjustment + t.scrollLeft) - e.scrollbarYRight - e.scrollbarYOuterWidth : i.right = e.scrollbarYRight - t.scrollLeft : e.isRtl ? i.left = e.negativeScrollAdjustment + t.scrollLeft + 2 * e.containerWidth - e.contentWidth - e.scrollbarYLeft - e.scrollbarYOuterWidth : i.left = e.scrollbarYLeft + t.scrollLeft, s.css(e.scrollbarYRail, i), s.css(e.scrollbarX, {left: e.scrollbarXLeft, width: e.scrollbarXWidth - e.railBorderXWidth}), s.css(e.scrollbarY, {top: e.scrollbarYTop, height: e.scrollbarYHeight - e.railBorderYWidth})
3618                }
3619                var a = t("../lib/helper"), r = t("../lib/class"), s = t("../lib/dom"), l = t("./instances"), c = t("./update-scroll");
3620                e.exports = function (t) {
3621                    var e = l.get(t);
3622                    e.containerWidth = t.clientWidth, e.containerHeight = t.clientHeight, e.contentWidth = t.scrollWidth, e.contentHeight = t.scrollHeight;
3623                    var n;
3624                    t.contains(e.scrollbarXRail) || ((n = s.queryChildren(t, ".ps__scrollbar-x-rail")).length > 0 && n.forEach(function (t) {
3625                        s.remove(t)
3626                    }), s.appendTo(e.scrollbarXRail, t)), t.contains(e.scrollbarYRail) || ((n = s.queryChildren(t, ".ps__scrollbar-y-rail")).length > 0 && n.forEach(function (t) {
3627                        s.remove(t)
3628                    }), s.appendTo(e.scrollbarYRail, t)), !e.settings.suppressScrollX && e.containerWidth + e.settings.scrollXMarginOffset < e.contentWidth ? (e.scrollbarXActive = !0, e.railXWidth = e.containerWidth - e.railXMarginWidth, e.railXRatio = e.containerWidth / e.railXWidth, e.scrollbarXWidth = i(e, a.toInt(e.railXWidth * e.containerWidth / e.contentWidth)), e.scrollbarXLeft = a.toInt((e.negativeScrollAdjustment + t.scrollLeft) * (e.railXWidth - e.scrollbarXWidth) / (e.contentWidth - e.containerWidth))) : e.scrollbarXActive = !1, !e.settings.suppressScrollY && e.containerHeight + e.settings.scrollYMarginOffset < e.contentHeight ? (e.scrollbarYActive = !0, e.railYHeight = e.containerHeight - e.railYMarginHeight, e.railYRatio = e.containerHeight / e.railYHeight, e.scrollbarYHeight = i(e, a.toInt(e.railYHeight * e.containerHeight / e.contentHeight)), e.scrollbarYTop = a.toInt(t.scrollTop * (e.railYHeight - e.scrollbarYHeight) / (e.contentHeight - e.containerHeight))) : e.scrollbarYActive = !1, e.scrollbarXLeft >= e.railXWidth - e.scrollbarXWidth && (e.scrollbarXLeft = e.railXWidth - e.scrollbarXWidth), e.scrollbarYTop >= e.railYHeight - e.scrollbarYHeight && (e.scrollbarYTop = e.railYHeight - e.scrollbarYHeight), o(t, e), e.scrollbarXActive ? r.add(t, "ps--active-x") : (r.remove(t, "ps--active-x"), e.scrollbarXWidth = 0, e.scrollbarXLeft = 0, c(t, "left", 0)), e.scrollbarYActive ? r.add(t, "ps--active-y") : (r.remove(t, "ps--active-y"), e.scrollbarYHeight = 0, e.scrollbarYTop = 0, c(t, "top", 0))
3629                }
3630            }, {"../lib/class": 2, "../lib/dom": 3, "../lib/helper": 6, "./instances": 18, "./update-scroll": 20}], 20: [function (t, e, n) {
3631                "use strict";
3632                var i = t("./instances"), o = function (t) {
3633                    var e = document.createEvent("Event");
3634                    return e.initEvent(t, !0, !0), e
3635                };
3636                e.exports = function (t, e, n) {
3637                    if (void 0 === t)
3638                        throw"You must provide an element to the update-scroll function";
3639                    if (void 0 === e)
3640                        throw"You must provide an axis to the update-scroll function";
3641                    if (void 0 === n)
3642                        throw"You must provide a value to the update-scroll function";
3643                    "top" === e && n <= 0 && (t.scrollTop = n = 0, t.dispatchEvent(o("ps-y-reach-start"))), "left" === e && n <= 0 && (t.scrollLeft = n = 0, t.dispatchEvent(o("ps-x-reach-start")));
3644                    var a = i.get(t);
3645                    "top" === e && n >= a.contentHeight - a.containerHeight && (n = a.contentHeight - a.containerHeight, n - t.scrollTop <= 1 ? n = t.scrollTop : t.scrollTop = n, t.dispatchEvent(o("ps-y-reach-end"))), "left" === e && n >= a.contentWidth - a.containerWidth && (n = a.contentWidth - a.containerWidth, n - t.scrollLeft <= 1 ? n = t.scrollLeft : t.scrollLeft = n, t.dispatchEvent(o("ps-x-reach-end"))), void 0 === a.lastTop && (a.lastTop = t.scrollTop), void 0 === a.lastLeft && (a.lastLeft = t.scrollLeft), "top" === e && n < a.lastTop && t.dispatchEvent(o("ps-scroll-up")), "top" === e && n > a.lastTop && t.dispatchEvent(o("ps-scroll-down")), "left" === e && n < a.lastLeft && t.dispatchEvent(o("ps-scroll-left")), "left" === e && n > a.lastLeft && t.dispatchEvent(o("ps-scroll-right")), "top" === e && n !== a.lastTop && (t.scrollTop = a.lastTop = n, t.dispatchEvent(o("ps-scroll-y"))), "left" === e && n !== a.lastLeft && (t.scrollLeft = a.lastLeft = n, t.dispatchEvent(o("ps-scroll-x")))
3646                }
3647            }, {"./instances": 18}], 21: [function (t, e, n) {
3648                "use strict";
3649                var i = t("../lib/helper"), o = t("../lib/dom"), a = t("./instances"), r = t("./update-geometry"), s = t("./update-scroll");
3650                e.exports = function (t) {
3651                    var e = a.get(t);
3652                    e && (e.negativeScrollAdjustment = e.isNegativeScroll ? t.scrollWidth - t.clientWidth : 0, o.css(e.scrollbarXRail, "display", "block"), o.css(e.scrollbarYRail, "display", "block"), e.railXMarginWidth = i.toInt(
3652o.css(e.scrollbarXRail, "marginLeft")) + i.toInt(o.css(e.scrollbarXRail, "marginRight")), e.railYMarginHeight = i.toInt(o.css(e.scrollbarYRail, "marginTop")) + i.toInt(o.css(e.scrollbarYRail, "marginBottom")), o.css(e.scrollbarXRail, "display", "none"), o.css(e.scrollbarYRail, "display", "none"), r(t), s(t, "top", t.scrollTop), s(t, "left", t.scrollLeft), o.css(e.scrollbarXRail, "display", ""), o.css(e.scrollbarYRail, "display", ""))
3653                }
3654            }, {"../lib/dom": 3, "../lib/helper": 6, "./instances": 18, "./update-geometry": 19, "./update-scroll": 20}]}, {}, [1]);
3655    var OFFSET_TOP = 50, TRANSITION_DURATION = 1500;
3656    $(window).scroll(function () {
3657        $(".navbar").length && ($(".navbar").offset().top > OFFSET_TOP ? $(".scrolling-navbar").addClass("top-nav-collapse") : $(".scrolling-navbar").removeClass("top-nav-collapse"))
3658    });
3659    var _createClass = function () {
3660        function t(t, e) {
3661            for (var n = 0; n < e.length; n++) {
3662                var i = e[n];
3663                i.enumerable = i.enumerable || !1, i.configurable = !0, "value"in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
3664            }
3665        }
3666        return function (e, n, i) {
3667            return n && t(e.prototype, n), i && t(e, i), e
3668        }
3669    }();
3670    !function (t) {
3671        var e = 240, n = 1440, i = function () {
3672            function i(o, a) {
3673                var r = this;
3674                _classCallCheck(this, i);
3675                var s = !1, l = {menuWidth: e, edge: "left", closeOnClick: !1};
3676                a = t.extend(l, a), this.options = a;
3677                var c = o;
3678                this.menu_id = t("#" + c.attr("data-activates"));
3679                var u = t("#" + this.menu_id.attr("id") + "> .sidenav-bg");
3680                a.menuWidth != e && (this.menu_id.css("width", a.menuWidth), u.css("width", a.menuWidth));
3681                var d = t('<div class="drag-target"></div>');
3682                t("body").append(d), "left" == a.edge ? (this.menu_id.css("transform", "translateX(-100%)"), d.css({left: 0})) : (this.menu_id.addClass("right-aligned").css("transform", "translateX(100%)"), d.css({right: 0})), this.menu_id.hasClass("fixed") && (window.innerWidth > n && this.menu_id.css("transform", "translateX(0)"), t(window).resize(function () {
3683                    window.innerWidth > n ? t("#sidenav-overlay").length ? r.removeMenu(!0) : r.menu_id.css("transform", "translateX(0%)") : !1 === s && ("left" === a.edge ? r.menu_id.css("transform", "translateX(-100%)") : r.menu_id.css("transform", "translateX(100%)"))
3684                })), !0 === this.options.closeOnClick && this.menu_id.on("click", "a:not(.collapsible-header)", function () {
3685                    sn.removeMenu()
3686                }), c.click(function (e) {
3687                    if (e.preventDefault(), !0 === s)
3688                        s = !1, r.removeMenu();
3689                    else {
3690                        var n = t("body"), i = t('<div id="sidenav-overlay"></div>');
3691                        n.append(i), "left" === r.options.edge ? r.menu_id.velocity({translateX: [0, -1 * a.menuWidth]}, {duration: 300, queue: !1, easing: "easeOutQuad"}) : r.menu_id.velocity({translateX: [0, a.menuWidth]}, {duration: 300, queue: !1, easing: "easeOutQuad"}), i.click(function () {
3692                            r.removeMenu()
3693                        })
3694                    }
3695                }), d.click(function (t) {
3696                    r.removeMenu()
3697                }), d.hammer({prevent_default: !1}).bind("pan", function (e) {
3698                    if ("touch" == e.gesture.pointerType) {
3699                        e.gesture.direction;
3700                        var n = e.gesture.center.x, i = (e.gesture.center.y, e.gesture.velocityX, t("body")), o = i.innerWidth();
3701                        if (i.css("overflow", "hidden"), i.width(o), 0 === t("#sidenav-overlay").length) {
3702                            var l = t('<div id="sidenav-overlay"></div>');
3703                            l.css("opacity", 0).click(function (t) {
3704                                r.removeMenu()
3705                            }), t("body").append(l)
3706                        }
3707                        if ("left" === a.edge && (n > a.menuWidth ? n = a.menuWidth : n < 0 && (n = 0)), "left" === a.edge)
3708                            n < a.menuWidth / 2 ? s = !1 : n >= a.menuWidth / 2 && (s = !0), r.menu_id.css("transform", "translateX(" 
3708+ (n - a.menuWidth) + "px)");
3709                        else {
3710                            n < window.innerWidth - a.menuWidth / 2 ? s = !0 : n >= window.innerWidth - a.menuWidth / 2 && (s = !1);
3711                            var c = n - a.menuWidth / 2;
3712                            c < 0 && (c = 0), r.menu_id.css("transform", "translateX(" + c + "px)")
3713                        }
3714                        var u;
3715                        "left" === a.edge ? (u = n / a.menuWidth, t("#sidenav-overlay").velocity({opacity: u}, {duration: 10, queue: !1, easing: "easeOutQuad"})) : (u = Math.abs((n - window.innerWidth) / a.menuWidth), t("#sidenav-overlay").velocity({opacity: u}, {duration: 10, queue: !1, easing: "easeOutQuad"}))
3716                    }
3717                }).bind("panend", function (e) {
3718                    if ("touch" == e.gesture.pointerType) {
3719                        var n = e.gesture.velocityX, i = e.gesture.center.x, o = i - a.menuWidth, l = i - a.menuWidth / 2;
3720                        o > 0 && (o = 0), l < 0 && (l = 0), "left" === a.edge ? s && n <= .3 || n < -.5 ? (0 != o && r.menu_id.velocity({translateX: [0, o]}, {duration: 300, queue: !1, easing: "easeOutQuad"}), t("#sidenav-overlay").velocity({opacity: 1}, {duration: 50, queue: !1, easing: "easeOutQuad"}), d.css({width: "10px", right: "", left: 0})) : (!s || n > .3) && (t("body").css({overflow: "", width: ""}), r.menu_id.velocity({translateX: [-1 * a.menuWidth - 10, o]}, {duration: 200, queue: !1, easing: "easeOutQuad"}), t("#sidenav-overlay").velocity({opacity: 0}, {duration: 200, queue: !1, easing: "easeOutQuad", complete: function () {
3721                                t(this).remove()
3722                            }}), d.css({width: "10px", right: "", left: 0})) : s && n >= -.3 || n > .5 ? (r.menu_id.velocity({translateX: [0, l]}, {duration: 300, queue: !1, easing: "easeOutQuad"}), t("#sidenav-overlay").velocity({opacity: 1}, {duration: 50, queue: !1, easing: "easeOutQuad"}), d.css({width: "50%", right: "", left: 0})) : (!s || n < -.3) && (t("body").css({overflow: "", width: ""}), r.menu_id.velocity({translateX: [a.menuWidth + 10, l]}, {duration: 200, queue: !1, easing: "easeOutQuad"}), t("#sidenav-overlay").velocity({opacity: 0}, {duration: 200, queue: !1, easing: "easeOutQuad", complete: function () {
3723                                t(r).remove()
3724                            }}), d.css({width: "10px", right: 0, left: ""}))
3725                    }
3726                })
3727            }
3728            return _createClass(i, [{key: "removeMenu", value: function (e) {
3729                        var n = this;
3730                        this.options.menuWidth, window.innerWidth;
3731                        t("body").css({overflow: "", width: ""}), "left" === this.options.edge ? this.menu_id.velocity({translateX: "-100%"}, {duration: 200, queue: !1, easing: "easeOutCubic", complete: function () {
3732                                !0 === e && (n.menu_id.removeAttr("style"), n.menu_id.css("width", n.options.menuWidth))
3733                            }}) : this.menu_id.velocity({translateX: "100%"}, {duration: 200, queue: !1, easing: "easeOutCubic", complete: function () {
3734                                !0 === e && (n.menu_id.removeAttr("style"), n.menu_id.css("width", n.options.menuWidth))
3735                            }}), t("#sidenav-overlay").velocity({opacity: 0}, {duration: 200, queue: !1, easing: "easeOutQuad", complete: function () {
3736                                t("#sidenav-overlay").remove()
3737                            }})
3738                    }}, {key: "show", value: function () {
3739                        this.trigger("click")
3740                    }}, {key: "hide", value: function () {
3741                        t("#sidenav-overlay").trigger("click")
3742                    }}]), i
3743        }();
3744        t.fn.sideNav = function (e) {
3745            return this.each(function () {
3746                new i(t(this), e)
3747            })
3748        }
3749    }(jQuery), $(".smooth-scroll").on("click", "a", function (t) {
3750        t.preventDefault();
3751        var e = $(this).attr("href"), n = $(this).attr("data-offset") ? $(this).attr("data-offset") : 0, i = $(this).closest("ul").attr("data-allow-hashes");
3752        $("body,html").animate({scrollTop: $(e).offset().top - n}, 700), void 0 !== i && !1 !== i && history.replaceState(null, null, e)
3753    }), jQuery.Velocity ? console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.") : (function (t) {
3754        function e(t) {
3755            var e = t.length, i = n.type(t);
3756            return"function" !== i && !n.isWindow(t) && (!(1 !== t.nodeType || !e) || ("array" === i || 0 === e || "number" == typeof e && e > 0 && e - 1 in t))
3757        }
3758        if (!t.jQuery) {
3759            var n = function (t, e) {
3760                return new n.fn.init(t, e)
3761            };
3762            n.isWindow = function (t) {
3763                return null != t && t == t.window
3764            }, n.type = function (t) {
3765                return null == t ? t + "" : "object" == typeof t || "function" == typeof t ? o[r.call(t)] || "object" : typeof t
3766            }, n.isArray = Array.isArray || function (t) {
3767                return"array" === n.type(t)
3768            }, n.isPlainObject = function (t) {
3769                var e;
3770                if (!t || "object" !== n.type(t) || t.nodeType || n.isWindow(t))
3771                    return!1;
3772                try {
3773                    if (t.constructor && !a.call(t, "constructor") && !a.call(t.constructor.prototype, "isPrototypeOf"))
3774                        return!1
3775                } catch (t) {
3776                    return!1
3777                }
3778                for (e in t)
3779                    ;
3780                return void 0 === e || a.call(t, e)
3781            }, n.each = function (t, n, i) {
3782                var o = 0, a = t.length, r = e(t);
3783                if (i) {
3784                    if (r)
3785                        for (; a > o && !1 !== n.apply(t[o], i); o++)
3786                            ;
3787                    else
3788                        for (o in t)
3789                            if (!1 === n.apply(t[o], i))
3790                                break
3791                } else if (r)
3792                    for (; a > o && !1 !== n.call(t[o], o, t[o]); o++)
3793                        ;
3794                else
3795                    for (o in t)
3796                        if (!1 === n.call(t[o], o, t[o]))
3797                            break;
3798                return t
3799            }, n.data = function (t, e, o) {
3800                if (void 0 === o) {
3801                    var a = (r = t[n.expando]) && i[r];
3802                    if (void 0 === e)
3803                        return a;
3804                    if (a && e in a)
3805                        return a[e]
3806                } else if (void 0 !== e) {
3807                    var r = t[n.expando] || (t[n.expando] = ++n.uuid);
3808                    return i[r] = i[r] || {}, i[r][e] = o, o
3809                }
3810            }, n.removeData = function (t, e) {
3811                var o = t[n.expando], a = o && i[o];
3812                a && n.each(e, function (t, e) {
3813                    delete a[e]
3814                })
3815            }, n.extend = function () {
3816                var t, e, i, o, a, r, s = arguments[0] || {}, l = 1, c = arguments.length, u = !1;
3817                for ("boolean" == typeof s && (u = s, s = arguments[l] || {}, l++), "object" != typeof s && "function" !== n.type(s) && (s = {}), l === c && (s = this, l--); c > l; l++)
3818                    if (null != (a = arguments[l]))
3819                        for (o in a)
3820                            t = s[o], i = a[o], s !== i && (u && i && (n.isPlainObject(i) || (e = n.isArray(i))) ? (e ? (e = !1, r = t && n.isArray(t) ? t : []) : r = t && n.isPlainObject(t) ? t : {}, s[o] = n.extend(u, r, i)) : void 0 !== i && (s[o] = i));
3821                return s
3822            }, n.queue = function (t, i, o) {
3823                if (t) {
3824                    i = (i || "fx") + "queue";
3825                    var a = n.data(t, i);
3826                    return o ? (!a || n.isArray(o) ? a = n.data(t, i, function (t, n) {
3827                        var i = n || [];
3828                        return null != t && (e(Object(t)) ? function (t, e) {
3829                            for (var n = +e.length, i = 0, o = t.length; n > i; )
3830                                t[o++] = e[i++];
3831                            if (n !== n)
3832                                for (; void 0 !== e[i]; )
3833                                    t[o++] = e[i++];
3834                            t.length = o
3835                        }(i, "string" == typeof t ? [t] : t) : [].push.call(i, t)), i
3836                    }(o)) : a.push(o), a) : a || []
3837                }
3838            }, n.dequeue = function (t, e) {
3839                n.each(t.nodeType ? [t] : t, function (t, i) {
3840                    e = e || "fx";
3841                    var o = n.queue(i, e), a = o.shift();
3842                    "inprogress" === a && (a = o.shift()), a && ("fx" === e && o.unshift("inprogress"), a.call(i, function () {
3843                        n.dequeue(i, e)
3844                    }))
3845                })
3846            }, n.fn = n.prototype = {init: function (t) {
3847                    if (t.nodeType)
3848                        return this[0] = t, this;
3849                    throw new Error("Not a DOM node.")
3850                }, offset: function () {
3851                    var e = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : {top: 0, left: 0};
3852                    return{top: e.top + (t.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0), left: e.left + (t.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0)}
3853                }, position: function () {
3854                    function t() {
3855                        for (var t = this.offsetParent || document; t && "html" === !t.nodeType.toLowerCase && "static" === t.style.position; )
3856                            t = t.offsetParent;
3857                        return t || document
3858                    }
3859                    var e = this[0], t = t.apply(e), i = this.offset(), o = /^(?:body|html)$/i.test(t.no
vendor: 8,014 bytes, lines 3859-3998
3859deName) ? {top: 0, left: 0} : n(t).offset();
3860                    return i.top -= parseFloat(e.style.marginTop) || 0, i.left -= parseFloat(e.style.marginLeft) || 0, t.style && (o.top += parseFloat(t.style.borderTopWidth) || 0, o.left += parseFloat(t.style.borderLeftWidth) || 0), {top: i.top - o.top, left: i.left - o.left}
3861                }};
3862            var i = {};
3863            n.expando = "velocity" + (new Date).getTime(), n.uuid = 0;
3864            for (var o = {}, a = o.hasOwnProperty, r = o.toString, s = "Boolean Number String Function Array Date RegExp Object Error".split(" "), l = 0; l < s.length; l++)
3865                o["[object " + s[l] + "]"] = s[l].toLowerCase();
3866            n.fn.init.prototype = n.fn, t.Velocity = {Utilities: n}
3867        }
3868    }(window), function (t) {
3869        "object" == typeof module && "object" == typeof module.exports ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : t()
3870    }(function () {
3871        return function (t, e, n, i) {
3872            function o(t) {
3873                for (var e = -1, n = t ? t.length : 0, i = []; ++e < n; ) {
3874                    var o = t[e];
3875                    o && i.push(o)
3876                }
3877                return i
3878            }
3879            function a(t) {
3880                return m.isWrapped(t) ? t = [].slice.call(t) : m.isNode(t) && (t = [t]), t
3881            }
3882            function r(t) {
3883                var e = h.data(t, "velocity");
3884                return null === e ? i : e
3885            }
3886            function s(t) {
3887                return function (e) {
3888                    return Math.round(e * t) * (1 / t)
3889                }
3890            }
3891            function l(t, n, i, o) {
3892                function a(t, e) {
3893                    return 1 - 3 * e + 3 * t
3894                }
3895                function r(t, e) {
3896                    return 3 * e - 6 * t
3897                }
3898                function s(t) {
3899                    return 3 * t
3900                }
3901                function l(t, e, n) {
3902                    return((a(e, n) * t + r(e, n)) * t + s(e)) * t
3903                }
3904                function c(t, e, n) {
3905                    return 3 * a(e, n) * t * t + 2 * r(e, n) * t + s(e)
3906                }
3907                function u(e, n) {
3908                    for (var o = 0; m > o; ++o) {
3909                        var a = c(n, t, i);
3910                        if (0 === a)
3911                            return n;
3912                        n -= (l(n, t, i) - e) / a
3913                    }
3914                    return n
3915                }
3916                function d() {
3917                    for (var e = 0; b > e; ++e)
3918                        C[e] = l(e * x, t, i)
3919                }
3920                function h(e, n, o) {
3921                    var a, r, s = 0;
3922                    do {
3923                        r = n + (o - n) / 2, a = l(r, t, i) - e, a > 0 ? o = r : n = r
3924                    } while (Math.abs(a) > v && ++s < y);
3925                    return r
3926                }
3927                function p(e) {
3928                    for (var n = 0, o = 1, a = b - 1; o != a && C[o] <= e; ++o)
3929                        n += x;
3930                    var r = n + (e - C[--o]) / (C[o + 1] - C[o]) * x, s = c(r, t, i);
3931                    return s >= g ? u(e, r) : 0 == s ? r : h(e, n, n + x)
3932                }
3933                function f() {
3934                    S = !0, (t != n || i != o) && d()
3935                }
3936                var m = 4, g = .001, v = 1e-7, y = 10, b = 11, x = 1 / (b - 1), w = "Float32Array"in e;
3937                if (4 !== arguments.length)
3938                    return!1;
3939                for (var k = 0; 4 > k; ++k)
3940                    if ("number" != typeof arguments[k] || isNaN(arguments[k]) || !isFinite(arguments[k]))
3941                        return!1;
3942                t = Math.min(t, 1), i = Math.min(i, 1), t = Math.max(t, 0), i = Math.max(i, 0);
3943                var C = w ? new Float32Array(b) : new Array(b), S = !1, T = function (e) {
3944                    return S || f(), t === n && i === o ? e : 0 === e ? 0 : 1 === e ? 1 : l(p(e), n, o)
3945                };
3946                T.getControlPoints = function () {
3947                    return[{x: t, y: n}, {x: i, y: o}]
3948                };
3949                var M = "generateBezier(" + [t, n, i, o] + ")";
3950                return T.toString = function () {
3951                    return M
3952                }, T
3953            }
3954            function c(t, e) {
3955                var n = t;
3956                return m.isString(t) ? b.Easings[t] || (n = !1) : n = m.isArray(t) && 1 === t.length ? s.apply(null, t) : m.isArray(t) && 2 === t.length ? x.apply(null, t.concat([e])) : !(!m.isArray(t) || 4 !== t.length) && l.apply(null, t), !1 === n && (n = b.Easings[b.defaults.easing] ? b.defaults.easing : y), n
3957            }
3958            function u(t) {
3959                if (t) {
3960                    var e = (new Date).getTime(), n = b.State.calls.length;
3961                    n > 1e4 && (b.State.calls = o(b.State.calls));
3962                    for (var a = 0; n > a; a++)
3963                        if (b.State.calls[a]) {
3964                            var s = b.State.calls[a], l = s[0], c = s[2], p = s[3], f = !!p, g = null;
3965                            p || (p = b.State.calls[a][3] = e - 16);
3966                            for (var v = Math.min((e - p) / c.duration, 1), y = 0, x = l.length; x > y; y++) {
3967                                var k = l[y], S = k.element;
3968                                if (r(S)) {
3969                                    var T = !1;
3970                                    if (c.display !== i && null !== c.display && "none" !== c.display) {
3971                                        if ("flex" === c.display) {
3972                                            var M = ["-webkit-box", "-moz-box", "-ms-flexbox", "-webkit-flex"];
3973                                            h.each(M, function (t, e) {
3974                                                w.setPropertyValue(S, "display", e)
3975                                            })
3976                                        }
3977                                        w.setPropertyValue(S, "display", c.display)
3978                                    }
3979                                    c.visibility !== i && "hidden" !== c.visibility && w.setPropertyValue(S, "visibility", c.visibility);
3980                                    for (var I in k)
3981                                        if ("element" !== I) {
3982                                            var A, P = k[I], _ = m.isString(P.easing) ? b.Easings[P.easing] : P.easing;
3983                                            if (1 === v)
3984                                                A = P.endValue;
3985                                            else {
3986                                                var D = P.endValue - P.startValue;
3987                                                if (A = P.startValue + D * _(v, c, D), !f && A === P.currentValue)
3988                                                    continue
3989                                            }
3990                                            if (P.currentValue = A, "tween" === I)
3991                                                g = A;
3992                                            else {
3993                                                if (w.Hooks.registered[I]) {
3994                                                    var E = w.Hooks.getRoot(I), O = r(S).rootPropertyValueCache[E];
3995                                                    O && (P.rootPropertyValue = O)
3996                                                }
3997                                                var L = w.setPropertyValue(S, I, P.currentValue + (0 === parseFloat(A) ? "" : P.unitType), P.rootPropertyValue, P.scrollData);
3998                                                w.Hooks.registered[I] && (r(S).rootPropertyValueCache[E] = w.Normalizations.registered[E] ? w.Normalizations.registered[E]("extract", null, L[1]) : L[
vendor: 10,428 bytes, lines 3998-4116
39981]), "transform" === L[0] && (T = !0)
3999                                            }
4000                                        }
4001                                    c.mobileHA && r(S).transformCache.translate3d === i && (r(S).transformCache.translate3d = "(0px, 0px, 0px)", T = !0), T && w.flushTransformCache(S)
4002                                }
4003                            }
4004                            c.display !== i && "none" !== c.display && (b.State.calls[a][2].display = !1), c.visibility !== i && "hidden" !== c.visibility && (b.State.calls[a][2].visibility = !1), c.progress && c.progress.call(s[1], s[1], v, Math.max(0, p + c.duration - e), p, g), 1 === v && d(a)
4005                        }
4006                }
4007                b.State.isTicking && C(u)
4008            }
4009            function d(t, e) {
4010                if (!b.State.calls[t])
4011                    return!1;
4012                for (var n = b.State.calls[t][0], o = b.State.calls[t][1], a = b.State.calls[t][2], s = b.State.calls[t][4], l = !1, c = 0, u = n.length; u > c; c++) {
4013                    var d = n[c].element;
4014                    if (e || a.loop || ("none" === a.display && w.setPropertyValue(d, "display", a.display), "hidden" === a.visibility && w.setPropertyValue(d, "visibility", a.visibility)), !0 !== a.loop && (h.queue(d)[1] === i || !/\.velocityQueueEntryFlag/i.test(h.queue(d)[1])) && r(d)) {
4015                        r(d).isAnimating = !1, r(d).rootPropertyValueCache = {};
4016                        var p = !1;
4017                        h.each(w.Lists.transforms3D, function (t, e) {
4018                            var n = /^scale/.test(e) ? 1 : 0, o = r(d).transformCache[e];
4019                            r(d).transformCache[e] !== i && new RegExp("^\\(" + n + "[^.]").test(o) && (p = !0, delete r(d).transformCache[e])
4020                        }), a.mobileHA && (p = !0, delete r(d).transformCache.translate3d), p && w.flushTransformCache(d), w.Values.removeClass(d, "velocity-animating")
4021                    }
4022                    if (!e && a.complete && !a.loop && c === u - 1)
4023                        try {
4024                            a.complete.call(o, o)
4025                        } catch (t) {
4026                            setTimeout(function () {
4027                                throw t
4028                            }, 1)
4029                        }
4030                    s && !0 !== a.loop && s(o), r(d) && !0 === a.loop && !e && (h.each(r(d).tweensContainer, function (t, e) {
4031                        /^rotate/.test(t) && 360 === parseFloat(e.endValue) && (e.endValue = 0, e.startValue = 360), /^backgroundPosition/.test(t) && 100 === parseFloat(e.endValue) && "%" === e.unitType && (e.endValue = 0, e.startValue = 100)
4032                    }), b(d, "reverse", {loop: !0, delay: a.delay})), !1 !== a.queue && h.dequeue(d, a.queue)
4033                }
4034                b.State.calls[t] = !1;
4035                for (var f = 0, m = b.State.calls.length; m > f; f++)
4036                    if (!1 !== b.State.calls[f]) {
4037                        l = !0;
4038                        break
4039                    }
4040                !1 === l && (b.State.isTicking = !1, delete b.State.calls, b.State.calls = [])
4041            }
4042            var h, p = function () {
4043                if (n.documentMode)
4044                    return n.documentMode;
4045                for (var t = 7; t > 4; t--) {
4046                    var e = n.createElement("div");
4047                    if (e.innerHTML = "\x3c!--[if IE " + t + "]><span></span><![endif]--\x3e", e.getElementsByTagName("span").length)
4048                        return e = null, t
4049                }
4050                return i
4051            }(), f = function () {
4052                var t = 0;
4053                return e.webkitRequestAnimationFrame || e.mozRequestAnimationFrame || function (e) {
4054                    var n, i = (new Date).getTime();
4055                    return n = Math.max(0, 16 - (i - t)), t = i + n, setTimeout(function () {
4056                        e(i + n)
4057                    }, n)
4058                }
4059            }(), m = {isString: function (t) {
4060                    return"string" == typeof t
4061                }, isArray: Array.isArray || function (t) {
4062                    return"[object Array]" === Object.prototype.toString.call(t)
4063                }, isFunction: function (t) {
4064                    return"[object Function]" === Object.prototype.toString.call(t)
4065                }, isNode: function (t) {
4066                    return t && t.nodeType
4067                }, isNodeList: function (t) {
4068                    return"object" == typeof t && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(t)) && t.length !== i && (0 === t.length || "object" == typeof t[0] && t[0].nodeType > 0)
4069                }, isWrapped: function (t) {
4070                    return t && (t.jquery || e.Zepto && e.Zepto.zepto.isZ(t))
4071                }, isSVG: function (t) {
4072                    return e.SVGElement && t instanceof e.SVGElement
4073                }, isEmptyObject: function (t) {
4074                    for (var e in t)
4075                        return!1;
4076                    return!0
4077                }}, g = !1;
4078            if (t.fn && t.fn.jquery ? (h = t, g = !0) : h = e.Velocity.Utilities, 8 >= p && !g)
4079                throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");
4080            {
4081                if (!(7 >= p)) {
4082                    var v = 400, y = "swing", b = {State: {isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), isAndroid: /Android/i.test(navigator.userAgent), isGingerbread: /Android 2\.3\.[3-7]/i.test(navigator.userAgent), isChrome: e.chrome, isFirefox: /Firefox/i.test(navigator.userAgent), prefixElement: n.createElement("div"), prefixMatches: {}, scrollAnchor: null, scrollPropertyLeft: null, scrollPropertyTop: null, isTicking: !1, calls: []}, CSS: {}, Utilities: h, Redirects: {}, Easings: {}, Promise: e.Promise, defaults: {queue: "", duration: v, easing: y, begin: i, complete: i, progress: i, display: i, visibility: i, loop: !1, delay: !1, mobileHA: !0, _cacheValues: !0}, init: function (t) {
4083                            h.data(t, "velocity", {isSVG: m.isSVG(t), isAnimating: !1, computedStyle: null, tweensContainer: null, rootPropertyValueCache: {}, transformCache: {}})
4084                        }, hook: null, mock: !1, version: {major: 1, minor: 2, patch: 2}, debug: !1};
4085                    e.pageYOffset !== i ? (b.State.scrollAnchor = e, b.State.scrollPropertyLeft = "pageXOffset", b.State.scrollPropertyTop = "pageYOffset") : (b.State.scrollAnchor = n.documentElement || n.body.parentNode || n.body, b.State.scrollPropertyLeft = "scrollLeft", b.State.scrollPropertyTop = "scrollTop");
4086                    var x = function () {
4087                        function t(t) {
4088                            return-t.tension * t.x - t.friction * t.v
4089                        }
4090                        function e(e, n, i) {
4091                            var o = {x: e.x + i.dx * n, v: e.v + i.dv * n, tension: e.tension, friction: e.friction};
4092                            return{dx: o.v, dv: t(o)}
4093                        }
4094                        function n(n, i) {
4095                            var o = {dx: n.v, dv: t(n)}, a = e(n, .5 * i, o), r = e(n, .5 * i, a), s = e(n, i, r), l = 1 / 6 * (o.dx + 2 * (a.dx + r.dx) + s.dx), c = 1 / 6 * (o.dv + 2 * (a.dv + r.dv) + s.dv);
4096                            return n.x = n.x + l * i, n.v = n.v + c * i, n
4097                        }
4098                        return function t(e, i, o) {
4099                            var a, r, s, l = {x: -1, v: 0, tension: null, friction: null}, c = [0], u = 0;
4100                            for (e = parseFloat(e) || 500, i = parseFloat(i) || 20, o = o || null, l.tension = e, l.friction = i, (a = null !== o)?(u = t(e, i), r = u / o * .016):r = .016; s = n(s || l, r), c.push(1 + s.x), u += 16, Math.abs(s.x) > 1e-4 && Math.abs(s.v) > 1e-4; )
4101                                ;
4102                            return a ? function (t) {
4103                                return c[t * (c.length - 1) | 0]
4104                            } : u
4105                        }
4106                    }();
4107                    b.Easings = {linear: function (t) {
4108                            return t
4109                        }, swing: function (t) {
4110                            return.5 - Math.cos(t * Math.PI) / 2
4111                        }, spring: function (t) {
4112                            return 1 - Math.cos(4.5 * t * Math.PI) * Math.exp(6 * -t)
4113                        }}, h.each([["ease", [.25, .1, .25, 1]], ["ease-in", [.42, 0, 1, 1]], ["ease-out", [0, 0, .58, 1]], ["ease-in-out", [.42, 0, .58, 1]], ["easeInSine", [.47, 0, .745, .715]], ["easeOutSine", [.39, .575, .565, 1]], ["easeInOutSine", [.445, .05, .55, .95]], ["easeInQuad", [.55, .085, .68, .53]], ["easeOutQuad", [.25, .46, .45, .94]], ["easeInOutQuad", [.455, .03, .515, .955]], ["easeInCubic", [.55, .055, .675, .19]], ["easeOutCubic", [.215, .61, .355, 1]], ["easeInOutCubic", [.645, .045, .355, 1]], ["easeInQuart", [.895, .03, .685, .22]], ["easeOutQuart", [.165, .84, .44, 1]], ["easeInOutQuart", [.77, 0, .175, 1]], ["easeInQuint", [.755, .05, .855, .06]], ["easeOutQuint", [.23, 1, .32, 1]], ["easeInOutQuint", [.86, 0, .07, 1]], ["easeInExpo", [.95, .05, .795, .035]], ["easeOutExpo", [.19, 1, .22, 1]], ["easeInOutExpo", [1, 0, 0, 1]], ["easeInCirc", [.6, .04, .98, .335]], ["easeOutCirc", [.075, .82, .165, 1]], ["easeInOutCirc", [.785, .135, .15, .86]]], function (t, e) {
4114                        b.Easings[e[0]] = l.apply(null, e[1])
4115                    });
4116                    var w = b.CSS = {RegEx: {isHex: /^#([A-f\d]{3}){1,2}$/i, valueUnwrap: /^[A-z]+\((.*)\)$/i, wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, valueSplit: /([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi}, Lists: {colors: ["fill", "stroke", "stopColor", "color", "backgroundColor", "borderColor", "borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor", "outlineColor"], transformsBase: ["translateX", "translateY", "scale", "scaleX", "scaleY", "skewX", "skewY", "rotateZ"], transforms3D: ["transformPerspective", "translateZ", "scaleZ", "rotateX", "rotateY"]}, Hooks: {templates: {textShadow: ["Color X Y Blur", "black 0px 0px 0px"], boxSh
vendor: 30,676 bytes, lines 4116-4465
4116adow: ["Color X Y Blur Spread", "black 0px 0px 0px 0px"], clip: ["Top Right Bottom Left", "0px 0px 0px 0px"], backgroundPosition: ["X Y", "0% 0%"], transformOrigin: ["X Y Z", "50% 50% 0px"], perspectiveOrigin: ["X Y", "50% 50%"]}, registered: {}, register: function () {
4117                                for (a = 0; a < w.Lists.colors.length; a++) {
4118                                    var t = "color" === w.Lists.colors[a] ? "0 0 0 1" : "255 255 255 1";
4119                                    w.Hooks.templates[w.Lists.colors[a]] = ["Red Green Blue Alpha", t]
4120                                }
4121                                var e, n, i;
4122                                if (p)
4123                                    for (e in w.Hooks.templates) {
4124                                        i = (n = w.Hooks.templates[e])[0].split(" ");
4125                                        var o = n[1].match(w.RegEx.valueSplit);
4126                                        "Color" === i[0] && (i.push(i.shift()), o.push(o.shift()), w.Hooks.templates[e] = [i.join(" "), o.join(" ")])
4127                                    }
4128                                for (e in w.Hooks.templates) {
4129                                    i = (n = w.Hooks.templates[e])[0].split(" ");
4130                                    for (var a in i) {
4131                                        var r = e + i[a], s = a;
4132                                        w.Hooks.registered[r] = [e, s]
4133                                    }
4134                                }
4135                            }, getRoot: function (t) {
4136                                var e = w.Hooks.registered[t];
4137                                return e ? e[0] : t
4138                            }, cleanRootPropertyValue: function (t, e) {
4139                                return w.RegEx.valueUnwrap.test(e) && (e = e.match(w.RegEx.valueUnwrap)[1]), w.Values.isCSSNullValue(e) && (e = w.Hooks.templates[t][1]), e
4140                            }, extractValue: function (t, e) {
4141                                var n = w.Hooks.registered[t];
4142                                if (n) {
4143                                    var i = n[0], o = n[1];
4144                                    return(e = w.Hooks.cleanRootPropertyValue(i, e)).toString().match(w.RegEx.valueSplit)[o]
4145                                }
4146                                return e
4147                            }, injectValue: function (t, e, n) {
4148                                var i = w.Hooks.registered[t];
4149                                if (i) {
4150                                    var o, a = i[0], r = i[1];
4151                                    return n = w.Hooks.cleanRootPropertyValue(a, n), o = n.toString().match(w.RegEx.valueSplit), o[r] = e, o.join(" ")
4152                                }
4153                                return n
4154                            }}, Normalizations: {registered: {clip: function (t, e, n) {
4155                                    switch (t) {
4156                                        case"name":
4157                                            return"clip";
4158                                        case"extract":
4159                                            var i;
4160                                            return w.RegEx.wrappedValueAlreadyExtracted.test(n) ? i = n : (i = n.toString().match(w.RegEx.valueUnwrap), i = i ? i[1].replace(/,(\s+)?/g, " ") : n), i;
4161                                        case"inject":
4162                                            return"rect(" + n + ")"
4163                                    }
4164                                }, blur: function (t, e, n) {
4165                                    switch (t) {
4166                                        case"name":
4167                                            return b.State.isFirefox ? "filter" : "-webkit-filter";
4168                                        case"extract":
4169                                            var i = parseFloat(n);
4170                                            if (!i && 0 !== i) {
4171                                                var o = n.toString().match(/blur\(([0-9]+[A-z]+)\)/i);
4172                                                i = o ? o[1] : 0
4173                                            }
4174                                            return i;
4175                                        case"inject":
4176                                            return parseFloat(n) ? "blur(" + n + ")" : "none"
4177                                    }
4178                                }, opacity: function (t, e, n) {
4179                                    if (8 >= p)
4180                                        switch (t) {
4181                                            case"name":
4182                                                return"filter";
4183                                            case"extract":
4184                                                var i = n.toString().match(/alpha\(opacity=(.*)\)/i);
4185                                                return n = i ? i[1] / 100 : 1;
4186                                            case"inject":
4187                                                return e.style.zoom = 1, parseFloat(n) >= 1 ? "" : "alpha(opacity=" + parseInt(100 * parseFloat(n), 10) + ")"
4188                                        }
4189                                    else
4190                                        switch (t) {
4191                                            case"name":
4192                                                return"opacity";
4193                                            case"extract":
4194                                            case"inject":
4195                                                return n
4196                                        }
4197                                }}, register: function () {
4198                                9 >= p || b.State.isGingerbread || (w.Lists.transformsBase = w.Lists.transformsBase.concat(w.Lists.transforms3D));
4199                                for (t = 0; t < w.Lists.transformsBase.length; t++)
4200                                    !function () {
4201                                        var e = w.Lists.transformsBase[t];
4202                                        w.Normalizations.registered[e] = function (t, n, o) {
4203                                            switch (t) {
4204                                                case"name":
4205                                                    return"transform";
4206                                                case"extract":
4207                                                    return r(n) === i || r(n).transformCache[e] === i ? /^scale/i.test(e) ? 1 : 0 : r(n).transformCache[e].replace(/[()]/g, "");
4208                                                case"inject":
4209                                                    var a = !1;
4210                                                    switch (e.substr(0, e.length - 1)) {
4211                                                        case"translate":
4212                                                            a = !/(%|px|em|rem|vw|vh|\d)$/i.test(o);
4213                                                            break;
4214                                                        case"scal":
4215                                                        case"scale":
4216                                                            b.State.isAndroid && r(n).transformCache[e] === i && 1 > o && (o = 1), a = !/(\d)$/i.test(o);
4217                                                            break;
4218                                                        case"skew":
4219                                                            a = !/(deg|\d)$/i.test(o);
4220                                                            break;
4221                                                        case"rotate":
4222                                                            a = !/(deg|\d)$/i.test(o)
4223                                                    }
4224                                                    return a || (r(n).transformCache[e] = "(" + o + ")"), r(n).transformCache[e]
4225                                            }
4226                                        }
4227                                    }();
4228                                for (var t = 0; t < w.Lists.colors.length; t++)
4229                                    !function () {
4230                                        var e = w.Lists.colors[t];
4231                                        w.Normalizations.registered[e] = function (t, n, o) {
4232                                            switch (t) {
4233                                                case"name":
4234                                                    return e;
4235                                                case"extract":
4236                                                    var a;
4237                                                    if (w.RegEx.wrappedValueAlreadyExtracted.test(o))
4238                                                        a = o;
4239                                                    else {
4240                                                        var r, s = {black: "rgb(0, 0, 0)", blue: "rgb(0, 0, 255)", gray: "rgb(128, 128, 128)", green: "rgb(0, 128, 0)", red: "rgb(255, 0, 0)", white: "rgb(255, 255, 255)"};
4241                                                        /^[A-z]+$/i.test(o) ? r = s[o] !== i ? s[o] : s.black : w.RegEx.isHex.test(o) ? r = "rgb(" + w.Values.hexToRgb(o).join(" ") + ")" : /^rgba?\(/i.test(o) || (r = s.black), a = (r || o).toString().match(w.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g, " ")
4242                                                    }
4243                                                    return 8 >= p || 3 !== a.split(" ").length || (a += " 1"), a;
4244                                                case"inject":
4245                                                    return 8 >= p ? 4 === o.split(" ").length && (o = o.split(/\s+/).slice(0, 3).join(" ")) : 3 === o.split(" ").length && (o += " 1"), (8 >= p ? "rgb" : "rgba") + "(" + o.replace(/\s+/g, ",").replace(/\.(\d)+(?=,)/g, "") + ")"
4246                                            }
4247                                        }
4248                                    }()
4249                            }}, Names: {camelCase: function (t) {
4250                                return t.replace(/-(\w)/g, function (t, e) {
4251                                    return e.toUpperCase()
4252                                })
4253                            }, SVGAttribute: function (t) {
4254                                var e = "width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";
4255                                return(p || b.State.isAndroid && !b.State.isChrome) && (e += "|transform"), new RegExp("^(" + e + ")$", "i").test(t)
4256                            }, prefixCheck: function (t) {
4257                                if (b.State.prefixMatches[t])
4258                                    return[b.State.prefixMatches[t], !0];
4259                                for (var e = ["", "Webkit", "Moz", "ms", "O"], n = 0, i = e.length; i > n; n++) {
4260                                    var o;
4261                                    if (o = 0 === n ? t : e[n] + t.replace(/^\w/, function (t) {
4262                                        return t.toUpperCase()
4263                                    }), m.isString(b.State.prefixElement.style[o]))
4264                                        return b.State.prefixMatches[t] = o, [o, !0]
4265                                }
4266                                return[t, !1]
4267                            }}, Values: {hexToRgb: function (t) {
4268                                var e, n = /^#?([a-f\d])([a-f\d])([a-f\d])$/i, i = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;
4269                                return t = t.replace(n, function (t, e, n, i) {
4270                                    return e + e + n + n + i + i
4271                                }), e = i.exec(t), e ? [parseInt(e[1], 16), parseInt(e[2], 16), parseInt(e[3], 16)] : [0, 0, 0]
4272                            }, isCSSNullValue: function (t) {
4273                                return 0 == t || /^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(t)
4274                            }, getUnitType: function (t) {
4275                                return/^(rotate|skew)/i.test(t) ? "deg" : /(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(t) ? "" : "px"
4276                            }, getDisplayType: function (t) {
4277                                var e = t && t.tagName.toString().toLowerCase();
4278                                return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(e) ? "inline" : /^(li)$/i.test(e) ? "list-item" : /^(tr)$/i.test(e) ? "table-row" : /^(table)$/i.test(e) ? "table" : /^(tbody)$/i.test(e) ? "table-row-group" : "block"
4279                            }, addClass: function (t, e) {
4280                                t.classList ? t.classList.add(e) : t.className += (t.className.length ? " " : "") + e
4281                            }, removeClass: function (t, e) {
4282                                t.classList ? t.classList.remove(e) : t.className = t.className.toString().replace(new RegExp("(^|\\s)" + e.split(" ").join("|") + "(\\s|$)", "gi"), " ")
4283                            }}, getPropertyValue: function (t, n, o, a) {
4284                            function s(t, n) {
4285                                function o() {
4286                                    c && w.setPropertyValue(t, "display", "none")
4287                                }
4288                                var l = 0;
4289                                if (8 >= p)
4290                                    l = h.css(t, n);
4291                                else {
4292                                    var c = !1;
4293                                    if (/^(width|height)$/.test(n) && 0 === w.getPropertyValue(t, "display") && (c = !0, w.setPropertyValue(t, "display", w.Values.getDisplayType(t))), !a) {
4294                                        if ("height" === n && "border-box" !== w.getPropertyValue(t, "boxSizing").toString().toLowerCase()) {
4295                                            var u = t.offsetHeight - (parseFloat(w.getPropertyValue(t, "borderTopWidth")) || 0) - (parseFloat(w.getPropertyValue(t, "borderBottomWidth")) || 0) - (parseFloat(w.getPropertyValue(t, "paddingTop")) || 0) - (parseFloat(w.getPropertyValue(t, "paddingBottom")) || 0);
4296                                            return o(), u
4297                                        }
4298                                        if ("width" === n && "border-box" !== w.getPropertyValue(t, "boxSizing").toString().toLowerCase()) {
4299                                            var d = t.offsetWidth - (parseFloat(w.getPropertyValue(t, "borderLeftWidth")) || 0) - (parseFloat(w.getPropertyValue(t, "borderRightWidth")) || 0) - (parseFloat(w.getPropertyValue(t, "paddingLeft")) || 0) - (parseFloat(w.getPropertyValue(t, "paddingRight")) || 0);
4300                                            return o(), d
4301                                        }
4302                                    }
4303                                    var f;
4304                                    f = r(t) === i ? e.getComputedStyle(t, null) : r(t).computedStyle ? r(t).computedStyle : r(t).computedStyle = e.getComputedStyle(t, null), "borderColor" === n && (n = "borderTopColor"), ("" === (l = 9 === p && "filter" === n ? f.getPropertyValue(n) : f[n]) || null === l) && (l = t.style[n]), o()
4305                                }
4306                                if ("auto" === l && /^(top|right|bottom|left)$/i.test(n)) {
4307                                    var m = s(t, "position");
4308                                    ("fixed" === m || "absolute" === m && /top|left/i.test(n)) && (l = h(t).position()[n] + "px")
4309                                }
4310                                return l
4311                            }
4312                            var l;
4313                            if (w.Hooks.registered[n]) {
4314                                var c = n, u = w.Hooks.getRoot(c);
4315                                o === i && (o = w.getPropertyValue(t, w.Names.prefixCheck(u)[0])), w.Normalizations.registered[u] && (o = w.Normalizations.registered[u]("extract", t, o)), l = w.Hooks.extractValue(c, o)
4316                            } else if (w.Normalizations.registered[n]) {
4317                                var d, f;
4318                                "transform" !== (d = w.Normalizations.registered[n]("name", t)) && (f = s(t, w.Names.prefixCheck(d)[0]), w.Values.isCSSNullValue(f) && w.Hooks.templates[n] && (f = w.Hooks.templates[n][1])), l = w.Normalizations.registered[n]("extract", t, f)
4319                            }
4320                            if (!/^[\d-]/.test(l))
4321                                if (r(t) && r(t).isSVG && w.Names.SVGAttribute(n))
4322                                    if (/^(height|width)$/i.test(n))
4323                                        try {
4324                                            l = t.getBBox()[n]
4325                                        } catch (t) {
4326                                            l = 0
4327                                        }
4328                                    else
4329                                        l = t.getAttribute(n);
4330                                else
4331                                    l = s(t, w.Names.prefixCheck(n)[0]);
4332                            return w.Values.isCSSNullValue(l) && (l = 0), b.debug >= 2 && console.log("Get " + n + ": " + l), l
4333                        }, setPropertyValue: function (t, n, i, o, a) {
4334                            var s = n;
4335                            if ("scroll" === n)
4336                                a.container ? a.container["scroll" + a.direction] = i : "Left" === a.direction ? e.scrollTo(i, a.alternateValue) : e.scrollTo(a.alternateValue, i);
4337                            else if (w.Normalizations.registered[n] && "transform" === w.Normalizations.registered[n]("name", t))
4338                                w.Normalizations.registered[n]("inject", t, i), s = "transform", i = r(t).transformCache[n];
4339                            else {
4340                                if (w.Hooks.registered[n]) {
4341                                    var l = n, c = w.Hooks.getRoot(n);
4342                                    o = o || w.getPropertyValue(t, c), i = w.Hooks.injectValue(l, i, o), n = c
4343                                }
4344                                if (w.Normalizations.registered[n] && (i = w.Normalizations.registered[n]("inject", t, i), n = w.Normalizations.registered[n]("name", t)), s = w.Names.prefixCheck(n)[0], 8 >= p)
4345                                    try {
4346                                        t.style[s] = i
4347                                    } catch (t) {
4348                                        b.debug && console.log("Browser does not support [" + i + "] for [" + s + "]")
4349                                    }
4350                                else
4351                                    r(t) && r(t).isSVG && w.Names.SVGAttribute(n) ? t.setAttribute(n, i) : t.style[s] = i;
4352                                b.debug >= 2 && console.log("Set " + n + " (" + s + "): " + i)
4353                            }
4354                            return[s, i]
4355                        }, flushTransformCache: function (t) {
4356                            function e(e) {
4357                                return parseFloat(w.getPropertyValue(t, e))
4358                            }
4359                            var n = "";
4360                            if ((p || b.State.isAndroid && !b.State.isChrome) && r(t).isSVG) {
4361                                var i = {translate: [e("translateX"), e("translateY")], skewX: [e("skewX")], skewY: [e("skewY")], scale: 1 !== e("scale") ? [e("scale"), e("scale")] : [e("scaleX"), e("scaleY")], rotate: [e("rotateZ"), 0, 0]};
4362                                h.each(r(t).transformCache, function (t) {
4363                                    /^translate/i.test(t) ? t = "translate" : /^scale/i.test(t) ? t = "scale" : /^rotate/i.test(t) && (t = "rotate"), i[t] && (n += t + "(" + i[t].join(" ") + ") ", delete i[t])
4364                                })
4365                            } else {
4366                                var o, a;
4367                                h.each(r(t).transformCache, function (e) {
4368                                    return o = r(t).transformCache[e], "transformPerspective" === e ? (a = o, !0) : (9 === p && "rotateZ" === e && (e = "rotate"), void(n += e + o + " "))
4369                                }), a && (n = "perspective" + a + " " + n)
4370                            }
4371                            w.setPropertyValue(t, "transform", n)
4372                        }};
4373                    w.Hooks.register(), w.Normalizations.register(), b.hook = function (t, e, n) {
4374                        var o = i;
4375                        return t = a(t), h.each(t, function (t, a) {
4376                            if (r(a) === i && b.init(a), n === i)
4377                                o === i && (o = b.CSS.getPropertyValue(a, e));
4378                            else {
4379                                var s = b.CSS.setPropertyValue(a, e, n);
4380                                "transform" === s[0] && b.CSS.flushTransformCache(a), o = s
4381                            }
4382                        }), o
4383                    };
4384                    var k = function () {
4385                        function t() {
4386                            return s ? M.promise || null : l
4387                        }
4388                        function o() {
4389                            function t(t) {
4390                                function d(t, e) {
4391                                    var n = i, o = i, r = i;
4392                                    return m.isArray(t) ? (n = t[0], !m.isArray(t[1]) && /^[\d-]/.test(t[1]) || m.isFunction(t[1]) || w.RegEx.isHex.test(t[1]) ? r = t[1] : (m.isString(t[1]) && !w.RegEx.isHex.test(t[1]) || m.isArray(t[1])) && (o = e ? t[1] : c(t[1], s.duration), t[2] !== i && (r = t[2]))) : n = t, e || (o = o || s.easing), m.isFunction(n) && (n = n.call(a, S, C)), m.isFunction(r) && (r = r.call(a, S, C)), [n || 0, o, r]
4393                                }
4394                                function p(t, e) {
4395                                    var n, i;
4396                                    return i = (e || "0").toString().toLowerCase().replace(/[%A-z]+$/, function (t) {
4397                                        return n = t, ""
4398                                    }), n || (n = w.Values.getUnitType(t)), [i, n]
4399                                }
4400                                if (s.begin && 0 === S)
4401                                    try {
4402                                        s.begin.call(f, f)
4403                                    } catch (t) {
4404                                        setTimeout(function () {
4405                                            throw t
4406                                        }, 1)
4407                                    }
4408                                if ("scroll" === I) {
4409                                    var v, x, k, T = /^x$/i.test(s.axis) ? "Left" : "Top", A = parseFloat(s.offset) || 0;
4410                                    s.container ? m.isWrapped(s.container) || m.isNode(s.container) ? (s.container = s.container[0] || s.container, v = s.container["scroll" + T], k = v + h(a).position()[T.toLowerCase()] + A) : s.container = null : (v = b.State.scrollAnchor[b.State["scrollProperty" + T]], x = b.State.scrollAnchor[b.State["scrollProperty" + ("Left" === T ? "Top" : "Left")]], k = h(a).offset()[T.toLowerCase()] + A), l = {scroll: {rootPropertyValue: !1, startValue: v, currentValue: v, endValue: k, unitType: "", easing: s.easing, scrollData: {container: s.container, direction: T, alternateValue: x}}, element: a}, b.debug && console.log("tweensContainer (scroll): ", l.scroll, a)
4411                                } else if ("reverse" === I) {
4412                                    if (!r(a).tweensContainer)
4413                                        return void h.dequeue(a, s.queue);
4414                                    "none" === r(a).opts.display && (r(a).opts.display = "auto"), "hidden" === r(a).opts.visibility && (r(a).opts.visibility = "visible"), r(a).opts.loop = !1, r(a).opts.begin = null, r(a).opts.complete = null, y.easing || delete s.easing, y.duration || delete s.duration, s = h.extend({}, r(a).opts, s);
4415                                    D = h.extend(!0, {}, r(a).tweensContainer);
4416                                    for (var P in D)
4417                                        if ("element" !== P) {
4418                                            var _ = D[P].startValue;
4419                                            D[P].startValue = D[P].currentValue = D[P].endValue, D[P].endValue = _, m.isEmptyObject(y) || (D[P].easing = s.easing), b.debug && console.log("reverse tweensContainer (" + P + "): " + JSON.stringify(D[P]), a)
4420                                        }
4421                                    l = D
4422                                } else if ("start" === I) {
4423                                    var D;
4424                                    r(a).tweensContainer && !0 === r(a).isAnimating && (D = r(a).tweensContainer), h.each(g, function (t, e) {
4425                                        if (RegExp("^" + w.Lists.colors.join("$|^") + "$").test(t)) {
4426                                            var n = d(e, !0), o = n[0], a = n[1], r = n[2];
4427                                            if (w.RegEx.isHex.test(o)) {
4428                                                for (var s = ["Red", "Green", "Blue"], l = w.Values.hexToRgb(o), c = r ? w.Values.hexToRgb(r) : i, u = 0; u < s.length; u++) {
4429                                                    var h = [l[u]];
4430                                                    a && h.push(a), c !== i && h.push(c[u]), g[t + s[u]] = h
4431                                                }
4432                                                delete g[t]
4433                                            }
4434                                        }
4435                                    });
4436                                    for (var L in g) {
4437                                        var F = d(g[L]), R = F[0], W = F[1], V = F[2];
4438                                        L = w.Names.camelCase(L);
4439                                        var z = w.Hooks.getRoot(L), N = !1;
4440                                        if (r(a).isSVG || "tween" === z || !1 !== w.Names.prefixCheck(z)[1] || w.Normalizations.registered[z] !== i) {
4441                                            (s.display !== i && null !== s.display && "none" !== s.display || s.visibility !== i && "hidden" !== s.visibility) && /opacity|filter/.test(L) && !V && 0 !== R && (V = 0), s._cacheValues && D && D[L] ? (V === i && (V = D[L].endValue + D[L].unitType), N = r(a).rootPropertyValueCache[z]) : w.Hooks.registered[L] ? V === i ? (N = w.getPropertyValue(a, z), V = w.getPropertyValue(a, L, N)) : N = w.Hooks.templates[z][1] : V === i && (V = w.getPropertyValue(a, L));
4442                                            var H, B, Y, j = !1;
4443                                            if (H = p(L, V), V = H[0], Y = H[1], H = p(L, R), R = H[0].replace(/^([+-\/*])=/, function (t, e) {
4444                                                return j = e, ""
4445                                            }), B = H[1], V = parseFloat(V) || 0, R = parseFloat(R) || 0, "%" === B && (/^(fontSize|lineHeight)$/.test(L) ? (R /= 100, B = "em") : /^scale/.test(L) ? (R /= 100, B = "") : /(Red|Green|Blue)$/i.test(L) && (R = R / 100 * 255, B = "")), /[\/*]/.test(j))
4446                                                B = Y;
4447                                            else if (Y !== B && 0 !== V)
4448                                                if (0 === R)
4449                                                    B = Y;
4450                                                else {
4451                                                    o = o || function () {
4452                                                        var t = {myParent: a.parentNode || n.body, position: w.getPropertyValue(a, "position"), fontSize: w.getPropertyValue(a, "fontSize")}, i = t.position === E.lastPosition && t.myParent === E.lastParent, o = t.fontSize === E.lastFontSize;
4453                                                        E.lastParent = t.myParent, E.lastPosition = t.position, E.lastFontSize = t.fontSize;
4454                                                        var s = 100, l = {};
4455                                                        if (o && i)
4456                                                            l.emToPx = E.lastEmToPx, l.percentToPxWidth = E.lastPercentToPxWidth, l.percentToPxHeight = E.lastPercentToPxHeight;
4457                                                        else {
4458                                                            var c = r(a).isSVG ? n.createElementNS("http://www.w3.org/2000/svg", "rect") : n.createElement("div");
4459                                                            b.init(c), t.myParent.appendChild(c), h.each(["overflow", "overflowX", "overflowY"], function (t, e) {
4460                                                                b.CSS.setPropertyValue(c, e, "hidden")
4461                                                            }), b.CSS.setPropertyValue(c, "position", t.position), b.CSS.setPropertyValue(c, "fontSize", t.fontSize), b.CSS.setPropertyValue(c, "boxSizing", "content-box"), h.each(["minWidth", "maxWidth", "width", "minHeight", "maxHeight", "height"], function (t, e) {
4462                                                                b.CSS.setPropertyValue(c, e, s + "%")
4463                                                            }), b.CSS.setPropertyValue(c, "paddingLeft", s + "em"), l.percentToPxWidth = E.lastPercentToPxWidth = (parseFloat(w.getPropertyValue(c, "width", null, !0)) || 1) / s, l.percentToPxHeight = E.lastPercentToPxHeight = (parseFloat(w.getPropertyValue(c, "height", null, !0)) || 1) / s, l.emToPx = E.lastEmToPx = (parseFloat(w.getPropertyValue(c, "paddingLeft")) || 1) / s, t.myParent.removeChild(c)
4464                                                        }
4465                                                        return null === E.remToPx && (E.remToPx = parseFloat(w.getPropertyValue(n.body, "fontSize")) || 16), null === E.vwToPx && (E.vwToPx = parseFloat(e.innerWidth) / 100, E.vhToPx = parseFloat(e.innerHe
vendor: 4,463 bytes, lines 4465-4523
4465ight) / 100), l.remToPx = E.remToPx, l.vwToPx = E.vwToPx, l.vhToPx = E.vhToPx, b.debug >= 1 && console.log("Unit ratios: " + JSON.stringify(l), a), l
4466                                                    }();
4467                                                    var $ = /margin|padding|left|right|width|text|word|letter/i.test(L) || /X$/.test(L) || "x" === L ? "x" : "y";
4468                                                    switch (Y) {
4469                                                        case"%":
4470                                                            V *= "x" === $ ? o.percentToPxWidth : o.percentToPxHeight;
4471                                                            break;
4472                                                        case"px":
4473                                                            break;
4474                                                        default:
4475                                                            V *= o[Y + "ToPx"]
4476                                                    }
4477                                                    switch (B) {
4478                                                        case"%":
4479                                                            V *= 1 / ("x" === $ ? o.percentToPxWidth : o.percentToPxHeight);
4480                                                            break;
4481                                                        case"px":
4482                                                            break;
4483                                                        default:
4484                                                            V *= 1 / o[B + "ToPx"]
4485                                                    }
4486                                                }
4487                                            switch (j) {
4488                                                case"+":
4489                                                    R = V + R;
4490                                                    break;
4491                                                case"-":
4492                                                    R = V - R;
4493                                                    break;
4494                                                case"*":
4495                                                    R *= V;
4496                                                    break;
4497                                                case"/":
4498                                                    R = V / R
4499                                            }
4500                                            l[L] = {rootPropertyValue: N, startValue: V, currentValue: V, endValue: R, unitType: B, easing: W}, b.debug && console.log("tweensContainer (" + L + "): " + JSON.stringify(l[L]), a)
4501                                        } else
4502                                            b.debug && console.log("Skipping [" + z + "] due to a lack of browser support.")
4503                                    }
4504                                    l.element = a
4505                                }
4506                                l.element && (w.Values.addClass(a, "velocity-animating"), O.push(l), "" === s.queue && (r(a).tweensContainer = l, r(a).opts = s), r(a).isAnimating = !0, S === C - 1 ? (b.State.calls.push([O, f, s, null, M.resolver]), !1 === b.State.isTicking && (b.State.isTicking = !0, u())) : S++)
4507                            }
4508                            var o, a = this, s = h.extend({}, b.defaults, y), l = {};
4509                            switch (r(a) === i && b.init(a), parseFloat(s.delay) && !1 !== s.queue && h.queue(a, s.queue, function (t) {
4510                                    b.velocityQueueEntryFlag = !0, r(a).delayTimer = {setTimeout: setTimeout(t, parseFloat(s.delay)), next: t}
4511                                }), s.duration.toString().toLowerCase()){case"fast":
4512                                    s.duration = 200;
4513                                    break;
4514                                case"normal":
4515                                    s.duration = v;
4516                                    break;
4517                                case"slow":
4518                                    s.duration = 600;
4519                                    break;
4520                                default:
4521                                    s.duration = parseFloat(s.duration) || 1
4522                            }
4523                            !1 !== b.mock && (!0 === b.mock ? s.duration = s.delay 
4523= 1 : (s.duration *= parseFloat(b.mock) || 1, s.delay *= parseFloat(b.mock) || 1)), s.easing = c(s.easing, s.duration), s.begin && !m.isFunction(s.begin) && (s.begin = null), s.progress && !m.isFunction(s.progress) && (s.progress = null), s.complete && !m.isFunction(s.complete) && (s.complete = null), s.display !== i && null !== s.display && (s.display = s.display.toString().toLowerCase(), "auto" === s.display && (s.display = b.CSS.Values.getDisplayType(a))), s.visibility !== i && null !== s.visibility && (s.visibility = s.visibility.toString().toLowerCase()), s.mobileHA = s.mobileHA && b.State.isMobile && !b.State.isGingerbread, !1 === s.queue ? s.delay ? setTimeout(t, s.delay) : t() : h.queue(a, s.queue, function (e, n) {
4524                                return!0 === n ? (M.promise && M.resolver(f), !0) : (b.velocityQueueEntryFlag = !0, void t(e))
4525                            }), "" !== s.queue && "fx" !== s.queue || "inprogress" === h.queue(a)[0] || h.dequeue(a)
4526                        }
4527                        var s, l, p, f, g, y, x = arguments[0] && (arguments[0].p || h.isPlainObject(arguments[0].properties) && !arguments[0].properties.names || m.isString(arguments[0].properties));
4528                        if (m.isWrapped(this) ? (s = !1, p = 0, f = this, l = this) : (s = !0, p = 1, f = x ? arguments[0].elements || arguments[0].e : arguments[0]), f = a(f)) {
4529                            x ? (g = arguments[0].properties || arguments[0].p, y = arguments[0].options || arguments[0].o) : (g = arguments[p], y = arguments[p + 1]);
4530                            var C = f.length, S = 0;
4531                            if (!/^(stop|finish)$/i.test(g) && !h.isPlainObject(y)) {
4532                                y = {};
4533                                for (var T = p + 1; T < arguments.length; T++)
4534                                    m.isArray(arguments[T]) || !/^(fast|normal|slow)$/i.test(arguments[T]) && !/^\d/.test(arguments[T]) ? m.isString(arguments[T]) || m.isArray(arguments[T]) ? y.easing = arguments[T] : m.isFunction(arguments[T]) && (y.complete = arguments[T]) : y.duration = arguments[T]
4535                            }
4536                            var M = {promise: null, resolver: null, rejecter: null};
4537                            s && b.Promise && (M.promise = new b.Promise(function (t, e) {
4538                                M.resolver = t, M.rejecter = e
4539                            }));
4540                            var I;
4541                            switch (g) {
4542                                case"scroll":
4543                                    I = "scroll";
4544                                    break;
4545                                case"reverse":
4546                                    I = "reverse";
4547                                    break;
4548                                case"finish":
4549                                case"stop":
4550                                    h.each(f, function (t, e) {
4551                                        r(e) && r(e).delayTimer && (clearTimeout(r(e).delayTimer.setTimeout), r(e).delayTimer.next && r(e).delayTimer.next(), delete r(e).delayTimer)
4552                                    });
4553                                    var A = [];
4554                                    return h.each(b.State.calls, function (t, e) {
4555                                        e && h.each(e[1], function (n, o) {
4556                                            var a = y === i ? "" : y;
4557                                            return!0 !== a && e[2].queue !== a && (y !== i || !1 !== e[2].queue) || void h.each(f, function (n, i) {
4558                                                i === o && ((!0 === y || m.isString(y)) && (h.each(h.queue(i, m.isString(y) ? y : ""), function (t, e) {
4559                                                    m.isFunction(e) && e(null, !0)
4560                                                }), h.queue(i, m.isString(y) ? y : "", [])), "stop" === g ? (r(i) && r(i).tweensContainer && !1 !== a && h.each(r(i).tweensContainer, function (t, e) {
4561                                                    e.endValue = e.currentValue
4562                                                }), A.push(t)) : "finish" === g && (e[2].duration = 1))
4563                                            })
4564                                        })
4565                                    }), "stop" === g && (h.each(A, function (t, e) {
4566                                        d(e, !0)
4567                                    }), M.promise && M.resolver(f)), t();
4568                                default:
4569                                    if (!h.isPlainObject(g) || m.isEmptyObject(g)) {
4570                                        if (m.isString(g) && b.Redirects[g]) {
4571                                            var P = (F = h.extend({}, y)).duration, _ = F.delay || 0;
4572                                            return!0 === F.backwards && (f = h.extend(!0, [], f).reverse()), h.each(f, function (t, e) {
4573                                                parseFloat(F.stagger) ? F.delay = _ + parseFloat(F.stagger) * t : m.isFunction(F.stagger) && (F.delay 
4573= _ + F.stagger.call(e, t, C)), F.drag && (F.duration = parseFloat(P) || (/^(callout|transition)/.test(g) ? 1e3 : v), F.duration = Math.max(F.duration * (F.backwards ? 1 - t / C : (t + 1) / C), .75 * F.duration, 200)), b.Redirects[g].call(e, e, F || {}, t, C, f, M.promise ? M : i)
4574                                            }), t()
4575                                        }
4576                                        var D = "Velocity: First argument (" + g + ") was not a property map, a known action, or a registered redirect. Aborting.";
4577                                        return M.promise ? M.rejecter(new Error(D)) : console.log(D), t()
4578                                    }
4579                                    I = "start"
4580                            }
4581                            var E = {lastParent: null, lastPosition: null, lastFontSize: null, lastPercentToPxWidth: null, lastPercentToPxHeight: null, lastEmToPx: null, remToPx: null, vwToPx: null, vhToPx: null}, O = [];
4582                            h.each(f, function (t, e) {
4583                                m.isNode(e) && o.call(e)
4584                            });
4585                            var L, F = h.extend({}, b.defaults, y);
4586                            if (F.loop = parseInt(F.loop), L = 2 * F.loop - 1, F.loop)
4587                                for (var R = 0; L > R; R++) {
4588                                    var W = {delay: F.delay, progress: F.progress};
4589                                    R === L - 1 && (W.display = F.display, W.visibility = F.visibility, W.complete = F.complete), k(f, "reverse", W)
4590                                }
4591                            return t()
4592                        }
4593                    };
4594                    (b = h.extend(k, b)).animate = k;
4595                    var C = e.requestAnimationFrame || f;
4596                    return b.State.isMobile || n.hidden === i || n.addEventListener("visibilitychange", function () {
4597                        n.hidden ? (C = function (t) {
4598                            return setTimeout(function () {
4599                                t(!0)
4600                            }, 16)
4601                        }, u()) : C = e.requestAnimationFrame || f
4602                    }), t.Velocity = b, t !== e && (t.fn.velocity = k, t.fn.velocity.defaults = b.defaults), h.each(["Down", "Up"], function (t, e) {
4603                        b.Redirects["slide" + e] = function (t, n, o, a, r, s) {
4604                            var l = h.extend({}, n), c = l.begin, u = l.complete, d = {height: "", marginTop: "", marginBottom: "", paddingTop: "", paddingBottom: ""}, p = {};
4605                            l.display === i && (l.display = "Down" === e ? "inline" === b.CSS.Values.getDisplayType(t) ? "inline-block" : "block" : "none"), l.begin = function () {
4606                                c && c.call(r, r);
4607                                for (var n in d) {
4608                                    p[n] = t.style[n];
4609                                    var i = b.CSS.getPropertyValue(t, n);
4610                                    d[n] = "Down" === e ? [i, 0] : [0, i]
4611                                }
4612                                p.overflow = t.style.overflow, t.style.overflow = "hidden"
4613                            }, l.complete = function () {
4614                                for (var e in p)
4615                                    t.style[e] = p[e];
4616                                u && u.call(r, r), s && s.resolver(r)
4617                            }, b(t, d, l)
4618                        }
4619                    }), h.each(["In", "Out"], function (t, e) {
4620                        b.Redirects["fade" + e] = function (t, n, o, a, r, s) {
4621                            var l = h.extend({}, n), c = {opacity: "In" === e ? 1 : 0}, u = l.complete;
4622                            l.complete = o !== a - 1 ? l.begin = null : function () {
4623                                u && u.call(r, r), s && s.resolver(r)
4624                            }, l.display === i && (l.display = "In" === e ? "auto" : "none"), b(this, c, l)
4625                        }
4626                    }), b
4627                }
4628                jQuery.fn.velocity = jQuery.fn.animate
4629            }
4630        }(window.jQuery || window.Zepto || window, window, document)
4631    })), function (t, e) {
4632        "use strict";
4633        "function" == typeof define && define.amd ? define([], function () {
4634            return e.apply(t)
4635        }) : "object" == typeof exports ? module.exports = e.call(t) : t.Waves = e.call(t)
4636    }("object" == typeof global ? global : this, function () {
4637        "use strict";
4638        function t(t) {
4639            return null !== t && t === t.window
4640        }
4641        function e(e) {
4642            return t(e) ? e : 9 === e.nodeType && e.defaultView
4643        }
4644        function n(t) {
4645            var e = typeof t;
4646            return"function" === e || "object" === e && !!t
4647        }
4648        function i(t) {
4649            return n(t) && t.nodeType > 0
4650        }
4651        function o(t) {
4652            var e = h.call(t);
4653            return"[object String]" === e ? d(t) : n(t) && /^\[object (Array|HTMLCollection|NodeList|Object)\]$/.test(e) && t.hasOwnProperty("length") ? t : i(t) ? [t] : []
4654        }
4655        function a(t) {
4656            var n, i, o = {top: 0, left: 0}, a = t && t.ownerDocument;
4657            return n = a.documentElement, void 0 !== t.getBoundingClientRect && (o = t.getBoundingClientRect()), i = e(a), {top: o.top + i.pageYOffset - n.clientTop, left: o.left + i.pageXOffset - n.clientLeft}
4658        }
4659        function r(t) {
4660            var e = "";
4661            for (var n in t)
4662                t.hasOwnProperty(n) && (e += n + ":" + t[n] + ";");
4663            return e
4664        }
4665        function s(t, e, n) {
4666            if (n) {
4667                n.classList.remove("waves-rippling");
4668                var i = n.getAttribute("data-x"), o = n.getAttribute("data-y"), a = n.getAttribute("data-scale"), s = n.getAttribute("data-translate"), l = 350 - (Date.now() - Number(n.getAttribute("data-hold")));
4669                l < 0 && (l = 0), "mousemove" === t.type && (l = 150);
4670                var c = "mousemove" === t.type ? 2500 : f.duration;
4671                setTimeout(function () {
4672                    var t = {top: o + "px", left: i + "px", opacity: "0", "-webkit-transition-duration": c + "ms", "-moz-transition-duration": c + "ms", "-o-transition-duration": c + "ms", "transition-duration": c + "ms", "-webkit-transform": a + " " + s, "-moz-transform": a + " " + s, "-ms-transform": a + " " + s, "-o-transform": a + " " + s, transform: a + " " + s};
4673                    n.setAttribute("style", r(t)), setTimeout(function () {
4674                        try {
4675                            e.removeChild(n)
4676                        } catch (t) {
4677                            return!1
4678                        }
4679                    }, c)
4680                }, l)
4681            }
4682        }
4683        function l(t) {
4684            if (!1 === g.allowEvent(t))
4685                return null;
4686            for (var e = null, n = t.target || t.srcElement; null !== n.parentElement; ) {
4687                if (n.classList.contains("waves-effect") && !(n instanceof SVGElement)) {
4688                    e = n;
4689                    break
4690                }
4691                n = n.parentElement
4692            }
4693            return e
4694        }
4695        function c(t) {
4696            var e = l(t);
4697            if (null !== e) {
4698                if (e.disabled || e.getAttribute("disabled") || e.classList.contains("disabled"))
4699                    return;
4700                if (g.registerEvent(t), "touchstart" === t.type && f.delay) {
4701                    var n = !1, i = setTimeout(function () {
4702                        i = null, f.show(t, e)
4703                    }, f.delay), o = function (o) {
4704                        i && (clearTimeout(i), i = null, f.show(t, e)), n || (n = !0, f.hide(o, e))
4705                    };
4706                    e.addEventListener("touchmove", function (t) {
4707                        i && (clearTimeout(i), i = null), o(t)
4708                    }, !1), e.addEventListener("touchend", o, !1), e.addEventListener("touchcancel", o, !1)
4709                } else
4710                    f.show(t, e), p && (e.addEventListener("touchend", f.hide, !1), e.addEventListener("touchcancel", f.hide, !1)), e.addEventListener("mouseup", f.hide, !1), e.addEventListener("mouseleave", f.hide, !1)
4711            }
4712        }
4713        var u = u || {}, d = document.querySelectorAll.bind(document), h = Object.prototype.toString, p = "ontouchstart"in window, f = {duration: 750, delay: 200, show: function (t, e, n) {
4714                if (2 === t.button)
4715                    return!1;
4716                e = e || this;
4717                var i = document.createElement("div");
4718//                i.className = "waves-ripple waves-rippling", e.a
vendor: 4,425 bytes, lines 4718-4773
4718ppendChild(i);
4719                var o = a(e), s = 0, l = 0;
4720                "touches"in t && t.touches.length ? (s = t.touches[0].pageY - o.top, l = t.touches[0].pageX - o.left) : (s = t.pageY - o.top, l = t.pageX - o.left), l = l >= 0 ? l : 0, s = s >= 0 ? s : 0;
4721                var c = "scale(" + e.clientWidth / 100 * 3 + ")", u = "translate(0,0)";
4722                n && (u = "translate(" + n.x + "px, " + n.y + "px)"), i.setAttribute("data-hold", Date.now()), i.setAttribute("data-x", l), i.setAttribute("data-y", s), i.setAttribute("data-scale", c), i.setAttribute("data-translate", u);
4723                var d = {top: s + "px", left: l + "px"};
4724                i.classList.add("waves-notransition"), i.setAttribute("style", r(d)), i.classList.remove("waves-notransition"), d["-webkit-transform"] = c + " " + u, d["-moz-transform"] = c + " " + u, d["-ms-transform"] = c + " " + u, d["-o-transform"] = c + " " + u, d.transform = c + " " + u, d.opacity = "1";
4725                var h = "mousemove" === t.type ? 2500 : f.duration;
4726                d["-webkit-transition-duration"] = h + "ms", d["-moz-transition-duration"] = h + "ms", d["-o-transition-duration"] = h + "ms", d["transition-duration"] = h + "ms", i.setAttribute("style", r(d))
4727            }, hide: function (t, e) {
4728                for (var n = (e = e || this).getElementsByClassName("waves-rippling"), i = 0, o = n.length; i < o; i++)
4729                    s(t, e, n[i])
4730            }}, m = {input: function (t) {
4731                var e = t.parentNode, n = document.createElement("div");
4732                n.className = "waves-input-wrapper", e.replaceChild(n, t), n.appendChild(t)
4733            }, img: function (t) {
4734                var e = t.parentNode;
4735                if ("i" !== e.tagName.toLowerCase() || !e.classList.contains("waves-effect")) {
4736                    var n = document.createElement("i");
4737                    e.replaceChild(n, t), n.appendChild(t)
4738                }
4739            }}, g = {touches: 0, allowEvent: function (t) {
4740                var e = !0;
4741                return/^(mousedown|mousemove)$/.test(t.type) && g.touches && (e = !1), e
4742            }, registerEvent: function (t) {
4743                var e = t.type;
4744                "touchstart" === e ? g.touches += 1 : /^(touchend|touchcancel)$/.test(e) && setTimeout(function () {
4745                    g.touches && (g.touches -= 1)
4746                }, 500)
4747            }};
4748        return u.init = function (t) {
4749            var e = document.body;
4750            "duration"in(t = t || {}) && (f.duration = t.duration), "delay"in t && (f.delay = t.delay), p && (e.addEventListener("touchstart", c, !1), e.addEventListener("touchcancel", g.registerEvent, !1), e.addEventListener("touchend", g.registerEvent, !1)), e.addEventListener("mousedown", c, !1)
4751        }, u.attach = function (t, e) {
4752            t = o(t), "[object Array]" === h.call(e) && (e = e.join(" ")), e = e ? " " + e : "";
4753            for (var n, i, a = 0, r = t.length; a < r; a++)
4754                i = (n = t[a]).tagName.toLowerCase(), -1 !== ["input", "img"].indexOf(i) && (m[i](n), n = n.parentElement), -1 === n.className.indexOf("waves-effect") && (n.className += " waves-effect" + e)
4755        }, u.ripple = function (t, e) {
4756            var n = (t = o(t)).length;
4757            if (e = e || {}, e.wait = e.wait || 0, e.position = e.position || null, n)
4758                for (var i, r, s, l = {}, c = 0, u = {type: "mousedown", button: 1}; c < n; c++)
4759                    if (i = t[c], r = e.position || {x: i.clientWidth / 2, y: i.clientHeight / 2}, s = a(i), l.x = s.left + r.x, l.y = s.top + r.y, u.pageX = l.x, u.pageY = l.y, f.show(u, i), e.wait >= 0 && null !== e.wait) {
4760                        var d = {type: "mouseup", button: 1};
4761                        setTimeout(function (t, e) {
4762                            return function () {
4763                                f.hide(t, e)
4764                            }
4765                        }(d, i), e.wait)
4766                    }
4767        }, u.calm = function (t) {
4768            for (var e = {type: "mouseup", button: 1}, n = 0, i = (t = o(t)).length; n < i; n++)
4769                f.hide(e, t[n])
4770        }, u.displayEffect = function (t) {
4771            console.error("Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect"), u.init(t)
4772        }, u
4773    }
4773), Waves.attach(".btn:not(.btn-flat), .btn-floating", ["waves-light"]), Waves.attach(".btn-flat", ["waves-effect"]), Waves.attach(".view .mask", ["waves-light"]), Waves.attach(".waves-light", ["waves-light"]), Waves.attach(".waves-effect", ["waves-effect"]), Waves.attach(".navbar-nav a:not(.navbar-brand), .nav-icons li a, .navbar form, .nav-tabs .nav-item", ["waves-light"]), Waves.attach(".pager li a", ["waves-light"]), Waves.attach(".pagination .page-item .page-link", ["waves-effect"]), Waves.init();
4774    var WOW = function (t) {
4775        var e = t || {};
4776        this._boxClass = e.boxClass || "wow", this._animateClass = e.animateClass || "animated", this._offset = e.offset || 0, this._mobile = void 0 === e.mobile, this._live = void 0 === e.live, this._seoFixEnabled = void 0 === e.seoFixEnabled, this._animationDuration = e.animationDuration || "1s", this._animationDelay = e.animationDelay || "0s", this._initStorageVariables()
4777    };
4778    WOW.prototype._initStorageVariables = function () {
4779        this._animation = [], this._boxes = [], this._cleanupBoxListener = [], this._cleanupBoxVisibleListener = []
4780    }, WOW.prototype.init = function () {
4781        !this._mobile && this._isMobile() || (this._eachBoxInit(this._prepareBox.bind(this)), this._startWow())
4782    }, WOW.prototype._isMobile = function () {
4783        return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
4784    }, WOW.prototype._eachBoxInit = function (t) {
4785        for (var e = document.getElementsByClassName(this._boxClass), n = 0; n < e.length; n++)
4786            !function (n) {
4787                t(e[n], n)
4788            }(n)
4789    }, WOW.prototype._prepareBox = function (t) {
4790        var e = this._boxes.push(t) - 1;
4791        this._animation[e] = {animationName: t.style.animationName || window.getComputedStyle(t, null).animationName}, t.style.animationName = "none", t.style.visibility = "hidden"
4792    }, WOW.prototype._startWow = function () {
4793        this._live && this._checkForChanges(), 0 === this._scrollY() && this._seoFixEnabled && this._seoFix(), this._appearInView(), this._scrollHandler()
4794    }, WOW.prototype._scrollY = function () {
4795        return this._isInt(window.pageYOffset) ? window.pageYOffset : this._isInt(document.documentElement.scrollTop) ? document.documentElement.scrollTop : this._isInt(document.body.scrollTop) ? document.body.scrollTop : void 0
4796    }, WOW.prototype._isInt = function (t) {
4797        return"number" == typeof t && isFinite(t) && Math.floor(t) === t
4798    }, WOW.prototype._seoFix = function () {
4799        this._showNotInView()
4800    }, WOW.prototype._appear = function (t, e) {
4801        t.style.animationPlayState || t.style.WebkitAnimationPlayState;
4802        -1 === t.className.indexOf(this._animateClass) && (delete this._boxes[e], this._onStartAnimation(t, e), this._onStopAnimation(t, e), this._animate(t, e, this._getAnimationConfig(t)))
4803    }, WOW.prototype._onStartAnimation = function (t, e) {
4804        this._cleanupBoxVisibleListener[e] = this._boxVisible.bind(this, t, e), t.addEventListener("animationstart", this._cleanupBoxVisibleListener[e]), t.addEventListener("webkitAnimationStart", this._cleanupBoxVisibleListener[e])
4805    }, WOW.prototype._onStopAnimation = function (t, e) {
4806        this._cleanupBoxListener[e] = this._cleanupBox.bind(this, t, e), t.addEventListener("animationend", this._cleanupBoxListener[e]), t.addEventListener("webkitAnimationEnd", this._cleanupBoxListener[e])
4807    }, WOW.prototype._getAnimationConfig = function (t) {
4808        return{delay: this._getDelay(t), duration: this._getDuration(t), iterations: this._getIterations(t)}
4809    }, WOW.prototype._getDelay = function (t) {
4810        return t.getAttribute("data-wow-delay") || this._animationDelay
4811    }, WOW.prototype._getDuration = function (t) {
4812        return t.getAttribute("data-wow-duration") || this._animationDuration
4813    }, WOW.prototype._getIterations = function (t) {
4814        return t.getAttribute("data-wow-iteration") || t.style.animationIterationCount || window.getComputedStyle(t, null).animationIterationCount || 1
4815    }, WOW.prototype._animate = function (t, e, n) {
4816        t.style.animationDelay = n.delay, t.style.animationDuration = n.duration, t.style.animationIterationCount = n.iterations, t.style.animationName = this._animation[e].animationName, t.className += " " + this._animateClass
4817    }, WOW.prototype._boxVisible = function (t, e) {
4818        t.style.visibility = "visible", t.removeEventListener("animationstart", this._cleanupBoxVisibleListener[e]), t.removeEventListener("webkitAnimationStart", this._cleanupBoxVisibleListener[e]), delete this._cleanupBoxVisibleListener[e]
4819    }, WOW.prototype._cleanupBox = function (t, e) {
4820        t.style.animationDelay = "", t.style.animationDuration = "", t.style.animationIterationCount = "", t.style.animationName = "none", this._cleanupClass(t), t.removeEventListener("animationend", this._cleanupBoxListener[e]), t.removeEventListener("webkitAnimationEnd", this._cleanupBoxListener[e]), delete this._cleanupBoxListener[e]
4821    }, WOW.prototype._cleanupClass = function (t) {
4822        var e = t.className.split(" "), n = e.indexOf(this._animateClass);
4823        -1 !== n && (e.splice(n, 1), t.className = e.join(" "))
4824    }
4824, WOW.prototype._eachBox = function (t) {
4825        for (var e = 0; e < this._boxes.length; e++)
4826            this._boxes[e] && function (e) {
4827                t(this._boxes[e], e)
4828            }.bind(this)(e)
4829    }, WOW.prototype._scrollHandler = function () {
4830        this._hideSeoFixListener = this._hideSeoFix.bind(this), window.addEventListener("scroll", this._hideSeoFixListener), window.addEventListener("scroll", this._appearInView.bind(this)), window.addEventListener("resize", this._appearInView.bind(this))
4831    }, WOW.prototype._hideSeoFix = function () {
4832        window.removeEventListener("scroll", this._hideSeoFixListener), delete this._hideSeoFixListener, this._eachBox(function (t, e) {
4833            this._isInView(t) || (t.style.visibility = "hidden")
4834        }.bind(this))
4835    }, WOW.prototype._appearInView = function () {
4836        this._eachBox(function (t, e) {
4837            this._animateBox(t, e)
4838        }.bind(this))
4839    }, WOW.prototype._animateBox = function (t, e) {
4840        this._isInView(t) && (delete this._boxes[e], this._appear(t, e))
4841    }, WOW.prototype._showNotInView = function () {
4842        this._eachBox(function (t, e) {
4843            this._makeVisible(t, e)
4844        }.bind(this))
4845    }, WOW.prototype._makeVisible = function (t, e) {
4846        this._isInView(t) || (this._boxes[e].style.visibility = "visible")
4847    }, WOW.prototype._isInView = function (t) {
4848        var e = t.getAttribute("data-wow-offset") || this._offset, n = this._getElementOffset(t) + ~~e;
4849        return n <= window.innerHeight + this._scrollY() && (0 === n ? 10 : n) >= this._scrollY()
4850    }, WOW.prototype._getElementOffset = function (t) {
4851        var e = t.getBoundingClientRect(), n = document.body, i = this._scrollY(), o = document.documentElement.clientTop || n.clientTop || 0, a = e.top + i - o;
4852        return Math.round(a)
4853    }, WOW.prototype._checkForChanges = function () {
4854        var t = {childList: !0, subtree: !0};
4855        new (window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver)(this._mutations.bind(this)).observe(document.body, t)
4856    }, WOW.prototype._mutations = function (t) {
4857        t.forEach(function (t) {
4858            for (var e = 0; e < t.addedNodes.length; e++)
4859                this.doSync(t.addedNodes[e])
4860        }.bind(this))
4861    }, WOW.prototype.doSync = function (t) {
4862        t.className && -1 !== t.className.split(" ").indexOf(this._boxClass) && this._prepareBox(t)
4863    }, function (t) {
4864        if ("object" == typeof exports && "undefined" != typeof module)
4865            module.exports = t();
4866        else if ("function" == typeof define && define.amd)
4867            define([], t);
4868        else {
4869            ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).Chart = t()
4870        }
4871    }(function () {
4872        return function t(e, n, i) {
4873            function o(r, s) {
4874                if (!n[r]) {
4875                    if (!e[r]) {
4876                        var l = "function" == typeof require && require;
4877                        if (!s && l)
4878                            return l(r, !0);
4879                        if (a)
4880                            return a(r, !0);
4881                        var c = new Error("Cannot find module '" + r + "'");
4882                        throw c.code = "MODULE_NOT_FOUND", c
4883                    }
4884                    var u = n[r] = {exports: {}};
4885                    e[r][0].call(u.exports, function (t) {
4886                        var n = e[r][1][t];
4887                        return o(n || t)
4888                    }, u, u.exports, t, e, n, i)
4889                }
4890                return n[r].exports
4891            }
4892            for (var a = "function" == typeof require && require, r = 0; r < i.length; r++)
4893                o(i[r]);
4894            return o
4895        }({1: [function (t, e, n) {}, {}], 2: [function (t, e, n) {
4896                    function i(t) {
4897                        if (t) {
4898                            var e = /^#([a-fA-F0-9]{3})$/, n = /^#([a-fA-F0-9]{6})$/, i = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/, o = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/, a = /(\w+)/, r = [0, 0, 0], s = 1, l = t.match(e);
4899                            if (l) {
4900                                l = l[1];
4901                                for (u = 0; u < r.length; u++)
4902                                    r[u] = parseInt(l[u] + l[u], 16)
4903                            } else if (l = t.match(n)) {
4904                                l = l[1];
4905                                for (u = 0; u < r.length; u++)
4906                                    r[u] = parseInt(l.slice(2 * u, 2 * u + 2), 16)
4907                            } else if (l = t.match(i)) {
4908                                for (u = 0; u < r.length; u++)
4909                                    r[u] = parseInt(l[u + 1]);
4910                                s = parseFloat(l[4])
4911                            }
4911 else if (l = t.match(o)) {
4912                                for (u = 0; u < r.length; u++)
4913                                    r[u] = Math.round(2.55 * parseFloat(l[u + 1]));
4914                                s = parseFloat(l[4])
4915                            } else if (l = t.match(a)) {
4916                                if ("transparent" == l[1])
4917                                    return[0, 0, 0, 0];
4918                                if (!(r = d[l[1]]))
4919                                    return
4920                            }
4921                            for (var u = 0; u < r.length; u++)
4922                                r[u] = c(r[u], 0, 255);
4923                            return s = s || 0 == s ? c(s, 0, 1) : 1, r[3] = s, r
4924                        }
4925                    }
4926                    function o(t) {
4927                        if (t) {
4928                            var e = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/, n = t.match(e);
4929                            if (n) {
4930                                var i = parseFloat(n[4]);
4931                                return[c(parseInt(n[1]), 0, 360), c(parseFloat(n[2]), 0, 100), c(parseFloat(n[3]), 0, 100), c(isNaN(i) ? 1 : i, 0, 1)]
4932                            }
4933                        }
4934                    }
4935                    function a(t) {
4936                        if (t) {
4937                            var e = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/, n = t.match(e);
4938                            if (n) {
4939                                var i = parseFloat(n[4]);
4940                                return[c(parseInt(n[1]), 0, 360), c(parseFloat(n[2]), 0, 100), c(parseFloat(n[3]), 0, 100), c(isNaN(i) ? 1 : i, 0, 1)]
4941                            }
4942                        }
4943                    }
4944                    function r(t, e) {
4945                        return void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), "rgba(" + t[0] + ", " + t[1] + ", " + t[2] + ", " + e + ")"
4946                    }
4947                    function s(t, e) {
4948                        return"rgba(" + Math.round(t[0] / 255 * 100) + "%, " + Math.round(t[1] / 255 * 100) + "%, " + Math.round(t[2] / 255 * 100) + "%, " + (e || t[3] || 1) + ")"
4949                    }
4950                    function l(t, e) {
4951                        return void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), "hsla(" + t[0] + ", " + t[1] + "%, " + t[2] + "%, " + e + ")"
4952                    }
4953                    function c(t, e, n) {
4954                        return Math.min(Math.max(e, t), n)
4955                    }
4956                    function u(t) {
4957                        var e = t.toString(16).toUpperCase();
4958                        return e.length < 2 ? "0" + e : e
4959                    }
4960                    var d = t(6);
4961                    e.exports = {getRgba: i, getHsla: o, getRgb: function (t) {
4962                            var e = i(t);
4963                            return e && e.slice(0, 3)
4964                        }, getHsl: function (t) {
4965                            var e = o(t);
4966                            return e && e.slice(0, 3)
4967                        }, getHwb: a, getAlpha: function (t) {
4968                            var e = i(t);
4969                            return e ? e[3] : (e = o(t)) ? e[3] : (e = a(t)) ? e[3] : void 0
4970                        }, hexString: function (t) {
4971                            return"#" + u(t[0]) + u(t[1]) + u(t[2])
4972                        }, rgbString: function (t, e) {
4973                            return e < 1 || t[3] && t[3] < 1 ? r(t, e) : "rgb(" + t[0] + ", " + t[1] + ", " + t[2] + ")"
4974                        }, rgbaString: r, percentString: function (t, e) {
4975                            return e < 1 || t[3] && t[3] < 1 ? s(t, e) : "rgb(" + Math.round(t[0] / 255 * 100) + "%, " + Math.round(t[1] / 255 * 100) + "%, " + Math.round(t[2] / 255 * 100) + "%)"
4976                        }, percentaString: s, hslString: function (t, e) {
4977                            return e < 1 || t[3] && t[3] < 1 ? l(t, e) : "hsl(" + t[0] + ", " + t[1] + "%, " + t[2] + "%)"
4978                        }, hslaString: l, hwbString: function (t, e) {
4979                            return void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), "hwb(" + t[0] + ", " + t[1] + "%, " + t[2] + "%" + (void 0 !== e && 1 !== e ? ", " + e : "") + ")"
4980                        }, keyword: function (t) {
4981                            return h[t.slice(0, 3)]
4982                        }};
4983                    var h = {};
4984                    for (var p in d)
4985                        h[d[p]] = p
4986                }, {6: 6}], 3: [function (t, e, n) {
4987                    var i = t(5), o = t(2), a = function (t) {
4988                        if (t instanceof a)
4989                            return t;
4990                        if (!(this instanceof a))
4991                            return new a(t);
4992                        this.valid = !1, this.values = {rgb: [0, 0, 0], hsl: [0, 0, 0], hsv: [0, 0, 0], hwb: [0, 0, 0], cmyk: [0, 0, 0, 0], alpha: 1};
4993                        var e;
4994                        "string" == typeof t ? (e = o.getRgba(t)) ? this.setValues("rgb", e) : (e = o.getHsla(t)) ? this.setValues("hsl", e) : (e = o.getHwb(t)) && this.setValues("hwb", e) : "object" == typeof t && (void 0 !== (e = t).r || void 0 !== e.red ? this.setValues("rgb", e) : void 0 !== e.l || void 0 !== e.lightness ? this.setValues("hsl", e) : void 0 !== e.v || void 0 !== e.value ? this.setValues("hsv", e) : void 0 !== e.w || void 0 !== e.whiteness ? this.setValues("hwb", e) : void 0 === e.c && void 0 === e.cyan || this.setValues("cmyk", e))
4995                    };
4996                    a.prototype = {isValid: function () {
4997                            return this.valid
4998                        }, rgb: function () {
4999                            return this.setSpace("rgb", arguments)
5000                        }, hsl: function () {
5001                            return this.setSpace("hsl", arguments)
5002                        }, hsv: function () {
5003                            return this.setSpace("hsv", arguments)
5004                        }, hwb: function () {
5005                            return this.setSpace("hwb", arguments)
5006                        }, cmyk: function () {
5007                            return this.setSpace("cmyk", arguments)
5008                        }, rgbArray: function () {
5009                            return this.values.rgb
5010                        }, hslArray: function () {
5011                            return this.values.hsl
5012                        }, hsvArray: function () {
5013                            return this.values.hsv
5014                        }, hwbArray: function () {
5015                            var t = this.values;
5016                            return 1 !== t.alpha ? t.hwb.concat([t.alpha]) : t.hwb
5017                        }, cmykArray: function () {
5018                            return this.values.cmyk
5019                        }, rgbaArray: function () {
5020                            var t = this.values;
5021                            return t.rgb.concat([t.alpha])
5022                        }, hslaArray: function () {
5023                            var t = this.values;
5024                            return t.hsl.concat([t.alpha])
5025                        }, alpha: function (t) {
5026                            return void 0 === t ? this.values.alpha : (this.setValues("alph
vendor: 5,771 bytes, lines 5026-5117
5026a", t), this)
5027                        }, red: function (t) {
5028                            return this.setChannel("rgb", 0, t)
5029                        }, green: function (t) {
5030                            return this.setChannel("rgb", 1, t)
5031                        }, blue: function (t) {
5032                            return this.setChannel("rgb", 2, t)
5033                        }, hue: function (t) {
5034                            return t && (t = (t %= 360) < 0 ? 360 + t : t), this.setChannel("hsl", 0, t)
5035                        }, saturation: function (t) {
5036                            return this.setChannel("hsl", 1, t)
5037                        }, lightness: function (t) {
5038                            return this.setChannel("hsl", 2, t)
5039                        }, saturationv: function (t) {
5040                            return this.setChannel("hsv", 1, t)
5041                        }, whiteness: function (t) {
5042                            return this.setChannel("hwb", 1, t)
5043                        }, blackness: function (t) {
5044                            return this.setChannel("hwb", 2, t)
5045                        }, value: function (t) {
5046                            return this.setChannel("hsv", 2, t)
5047                        }, cyan: function (t) {
5048                            return this.setChannel("cmyk", 0, t)
5049                        }, magenta: function (t) {
5050                            return this.setChannel("cmyk", 1, t)
5051                        }, yellow: function (t) {
5052                            return this.setChannel("cmyk", 2, t)
5053                        }, black: function (t) {
5054                            return this.setChannel("cmyk", 3, t)
5055                        }, hexString: function () {
5056                            return o.hexString(this.values.rgb)
5057                        }, rgbString: function () {
5058                            return o.rgbString(this.values.rgb, this.values.alpha)
5059                        }, rgbaString: function () {
5060                            return o.rgbaString(this.values.rgb, this.values.alpha)
5061                        }, percentString: function () {
5062                            return o.percentString(this.values.rgb, this.values.alpha)
5063                        }, hslString: function () {
5064                            return o.hslString(this.values.hsl, this.values.alpha)
5065                        }, hslaString: function () {
5066                            return o.hslaString(this.values.hsl, this.values.alpha)
5067                        }, hwbString: function () {
5068                            return o.hwbString(this.values.hwb, this.values.alpha)
5069                        }, keyword: function () {
5070                            return o.keyword(this.values.rgb, this.values.alpha)
5071                        }, rgbNumber: function () {
5072                            var t = this.values.rgb;
5073                            return t[0] << 16 | t[1] << 8 | t[2]
5074                        }, luminosity: function () {
5075                            for (var t = this.values.rgb, e = [], n = 0; n < t.length; n++) {
5076                                var i = t[n] / 255;
5077                                e[n] = i <= .03928 ? i / 12.92 : Math.pow((i + .055) / 1.055, 2.4)
5078                            }
5079                            return.2126 * e[0] + .7152 * e[1] + .0722 * e[2]
5080                        }, contrast: function (t) {
5081                            var e = this.luminosity(), n = t.luminosity();
5082                            return e > n ? (e + .05) / (n + .05) : (n + .05) / (e + .05)
5083                        }, level: function (t) {
5084                            var e = this.contrast(t);
5085                            return e >= 7.1 ? "AAA" : e >= 4.5 ? "AA" : ""
5086                        }, dark: function () {
5087                            var t = this.values.rgb;
5088                            return(299 * t[0] + 587 * t[1] + 114 * t[2]) / 1e3 < 128
5089                        }, light: function () {
5090                            return!this.dark()
5091                        }, negate: function () {
5092                            for (var t = [], e = 0; e < 3; e++)
5093                                t[e] = 255 - this.values.rgb[e];
5094                            return this.setValues("rgb", t), this
5095                        }, lighten: function (t) {
5096                            var e = this.values.hsl;
5097                            return e[2] += e[2] * t, this.setValues("hsl", e), this
5098                        }, darken: function (t) {
5099                            var e = this.values.hsl;
5100                            return e[2] -= e[2] * t, this.setValues("hsl", e), this
5101                        }, saturate: function (t) {
5102                            var e = this.values.hsl;
5103                            return e[1] += e[1] * t, this.setValues("hsl", e), this
5104                        }, desaturate: function (t) {
5105                            var e = this.values.hsl;
5106                            return e[1] -= e[1] * t, this.setValues("hsl", e), this
5107                        }, whiten: function (t) {
5108                            var e = this.values.hwb;
5109                            return e[1] += e[1] * t, this.setValues("hwb", e), this
5110                        }, blacken: function (t) {
5111                            var e = this.values.hwb;
5112                            return e[2] += e[2] * t, this.setValues("hwb", e), this
5113                        }, greyscale: function () {
5114                            var t = this.values.rgb, e = .3 * t[0] + .59 * t[1] + .11 * t[2];
5115                            return this.setValues("rgb", [e, e, e]), this
5116                        }, clearer: function (t) {
5117                            var e = this.values.alpha;
vendor: 4,087 bytes, lines 5118-5171
5118                            return this.setValues("alpha", e - e * t), this
5119                        }, opaquer: function (t) {
5120                            var e = this.values.alpha;
5121                            return this.setValues("alpha", e + e * t), this
5122                        }, rotate: function (t) {
5123                            var e = this.values.hsl, n = (e[0] + t) % 360;
5124                            return e[0] = n < 0 ? 360 + n : n, this.setValues("hsl", e), this
5125                        }, mix: function (t, e) {
5126                            var n = this, i = t, o = void 0 === e ? .5 : e, a = 2 * o - 1, r = n.alpha() - i.alpha(), s = ((a * r == -1 ? a : (a + r) / (1 + a * r)) + 1) / 2, l = 1 - s;
5127                            return this.rgb(s * n.red() + l * i.red(), s * n.green() + l * i.green(), s * n.blue() + l * i.blue()).alpha(n.alpha() * o + i.alpha() * (1 - o))
5128                        }, toJSON: function () {
5129                            return this.rgb()
5130                        }, clone: function () {
5131                            var t, e, n = new a, i = this.values, o = n.values;
5132                            for (var r in i)
5133                                i.hasOwnProperty(r) && (t = i[r], "[object Array]" === (e = {}.toString.call(t)) ? o[r] = t.slice(0) : "[object Number]" === e ? o[r] = t : console.error("unexpected color value:", t));
5134                            return n
5135                        }}, a.prototype.spaces = {rgb: ["red", "green", "blue"], hsl: ["hue", "saturation", "lightness"], hsv: ["hue", "saturation", "value"], hwb: ["hue", "whiteness", "blackness"], cmyk: ["cyan", "magenta", "yellow", "black"]}, a.prototype.maxes = {rgb: [255, 255, 255], hsl: [360, 100, 100], hsv: [360, 100, 100], hwb: [360, 100, 100], cmyk: [100, 100, 100, 100]}, a.prototype.getValues = function (t) {
5136                        for (var e = this.values, n = {}, i = 0; i < t.length; i++)
5137                            n[t.charAt(i)] = e[t][i];
5138                        return 1 !== e.alpha && (n.a = e.alpha), n
5139                    }, a.prototype.setValues = function (t, e) {
5140                        var n, o = this.values, a = this.spaces, r = this.maxes, s = 1;
5141                        if (this.valid = !0, "alpha" === t)
5142                            s = e;
5143                        else if (e.length)
5144                            o[t] = e.slice(0, t.length), s = e[t.length];
5145                        else if (void 0 !== e[t.charAt(0)]) {
5146                            for (n = 0; n < t.length; n++)
5147                                o[t][n] = e[t.charAt(n)];
5148                            s = e.a
5149                        } else if (void 0 !== e[a[t][0]]) {
5150                            var l = a[t];
5151                            for (n = 0; n < t.length; n++)
5152                                o[t][n] = e[l[n]];
5153                            s = e.alpha
5154                        }
5155                        if (o.alpha = Math.max(0, Math.min(1, void 0 === s ? o.alpha : s)), "alpha" === t)
5156                            return!1;
5157                        var c;
5158                        for (n = 0; n < t.length; n++)
5159                            c = Math.max(0, Math.min(r[t][n], o[t][n])), o[t][n] = Math.round(c);
5160                        for (var u in a)
5161                            u !== t && (o[u] = i[t][u](o[t]));
5162                        return!0
5163                    }, a.prototype.setSpace = function (t, e) {
5164                        var n = e[0];
5165                        return void 0 === n ? this.getValues(t) : ("number" == typeof n && (n = Array.prototype.slice.call(e)), this.setValues(t, n), this)
5166                    }, a.prototype.setChannel = function (t, e, n) {
5167                        var i = this.values[t];
5168                        return void 0 === n ? i[e] : n === i[e] ? this : (i[e] = n, this.setValues(t, i), this)
5169                    }, "undefined" != typeof window && (window.Color = a), e.exports = a
5170                }, {2: 2, 5: 5}], 4: [function (t, e, n) {
5171                    function i(t) {
5172                        var e, n, i, o = t[0] / 255, a = t[1] / 255, r = t[2] / 255, s = Math.min(o, a, r), l = Math.max(o, a, r), c = l - s;
5173                        return l == s ? e = 0 : o == l ? e = (a - r) / c : a == l ? e = 2 + (r - o) / c : r == l && (e = 4 + (o - a) / c), (e = Math.min(60 * e, 360)) < 0 && (e += 360), i = (s + l) / 2, n = l == s ? 0 : i <= .5 ? c / (l + s) : c / (2 - l - s), [e, 100 * n, 100 * i]
5174                    }
5175                    function o(t) {
5176                        var e, n, i, o = t[0], a = t[1], r = t[2], s = Math.min(o, a, r), l = Math.max(o, a, r), c = l - s;
5177                        return n = 0 == l ? 0 : c / l * 1e3 / 10, l == s ? e = 0 : o == l ? e = (a - r) / c : a == l ? e = 2 + (r - o) / c : r == l && (e = 4 + (o - a) / c), (e = Math.min(60 * e, 360)) < 0 && (e += 360), i = l / 255 * 1e3 / 10, [e, n, i]
5178                    }
5179                    function a(t) {
5180                        var e = t[0], n = t[1], o = t[2];
5181                        return[i(t)[0], 100 * (1 / 255 * Math.min(e, Math.min(n, o))), 100 * (o = 1 - 1 / 255 * Math.max(e, Math.max(n, o)))]
5182                    }
5183                    function s(t) {
5184                        var e, n, i, o, a = t[0] / 255, r = t[1] / 255, s = t[2] / 255;
5185                        return o = Math.min(1 - a, 1 - r, 1 - s), e = (1 - a - o) / (1 - o) || 0, n = (1 - r - o) / (1 - o) || 0, i = (1 - s - o) / (1 - o) || 0, [100 * e, 100 * n, 100 * i, 100 * o]
5186                    }
5187                    function l(t) {
5188                        return T[JSON.stringify(t)]
5189                    }
5190                    function c(t) {
5191                        var e = t[0] / 255, n = t[1] / 255, i = t[2] / 255;
5192                        return[100 * (.4124 * (e = e > .04045 ? Math.pow((e + .055) / 1.055, 2.4) : e / 12.92) + .3576 * (n = n > .04045 ? Math.pow((n + .055) / 1.055, 2.4) : n / 12.92) + .1805 * (i = i > .04045 ? Math.pow((i + .055) / 1.055, 2.4) : i / 12.92)), 100 * (.2126 * e + .7152 * n + .0722 * i), 100 * (.0193 * e + .1192 * n + .9505 * i)]
5193                    }
5194                    function u(t) {
5195                        var e, n, i, o = c(t), a = o[0], r = o[1], s = o[2];
5196                        return a /= 95.047, r /= 100, s /= 108.883, a = a > .008856 ? Math.pow(a, 1 / 3) : 7.787 * a + 16 / 116, r = r > .008856 ? Math.pow(r, 1 / 3) : 7.787 * r + 16 / 116, s = s > .008856 ? Math.pow(s, 1 / 3) : 7.787 * s + 16 / 116, e = 116 * r - 16, n = 500 * (a - r), i = 200 * (r - s), [e, n, i]
5197                    }
5198                    function d(t) {
5199                        var e, n, i, o, a, r = t[0] / 360, s = t[1] / 100, l = t[2] / 100;
5200                        if (0 == s)
5201                            return a = 255 * l, [a, a, a];
5202                        e = 2 * l - (n = l < .5 ? l * (1 + s) : l + s - l * s), o = [0, 0, 0];
5203                        for (var c = 0; c < 3; c++)
5204                            (i = r + 1 / 3 * -(c - 1)) < 0 && i++, i > 1 && i--, a = 6 * i < 1 ? e + 6 * (n - e) * i : 2 * i < 1 ? n : 3 * i < 2 ? e + (n - e) * (2 / 3 - i) * 6 : e, o[c] = 255 * a;
5205                        return o
5206                    }
5207                    function h(t) {
5208                        var e = t[0] / 60, n = t[1] / 100, i = t[2] / 100, o = Math.floor(e) % 6, a = e - Math.floor(e), r = 255 * i * (1 - n), s = 255 * i * (1 - n * a), l = 255 * i * (1 - n * (1 - a)), i = 255 * i;
5209                        switch (o) {
5210                            case 0:
5211                                return[i, l, r];
5212                            case 1:
5213                                return[s, i, r];
5214                            case 2:
5215                                return[r, i, l];
5216                            case 3:
5217                                return[r, s, i];
5218                            case 4:
5219                                return[l, r, i];
5220                            case 5:
5221                                return[i, r, s]
5222                        }
5223                    }
5224                    function p(t) {
5225                        var e, n, i, o, a = t[0] / 360, s = t[1] / 100, l = t[2] / 100, c = s + l;
5226                        switch (c > 1 && (s /= c, l /= c), e = Math.floor(6 * a), n = 1 - l, i = 6 * a - e, 0 != (1 & e) && (i = 1 - i), o = s + i * (n - s), e) {
5227                            default:
5228                            case 6:
5229                            case 0:
5230                                r = n, g = o, b = s;
5231                                break;
5232                            case 1:
5233                                r = o, g = n, b = s;
5234                                break;
5235                            case 2:
5236                                r = s, g = n, b = o;
5237                                break;
5238                            case 3:
5239                                r = s, g = o, b = n;
5240                                break;
5241                            case 4:
5242                                r = o, g = s, b = n;
5243                                break;
5244                            case 5:
5245                                r = n, g = s, b = o
5246                        }
5247                        return[255 * r, 255 * g, 255 * b]
5248                    }
5249                    function f(t) {
5250                        var e, n, i, o = t[0] / 100, a = t[1] / 100, r = t[2] / 100, s = t[3] / 100;
5251                        return e = 1 - Math.min(1, o * (1 - s) + s), n = 1 - Math.min(1, a * (1 - s) + s), i = 1 - Math.min(1, r * (1 - s) + s), [255 * e, 255 * n, 255 * i]
5252                    }
5253                    function m(t) {
5254                        var e, n, i, o = t[0] / 100, a = t[1] / 100, r = t[2] / 100;
5255                        return e = 3.2406 * o + -1.5372 * a + -.4986 * r, n = -.9689 * o + 1.8758 * a + .0415 * r, i = .0557 * o + -.204 * a + 1.057 * r, e = e > .0031308 ? 1.055 * Math.pow(e, 1 / 2.4) - .055 : e *= 12.92, n = n > .0031308 ? 1.055 * Math.pow(n, 1 / 2.4) - .055 : n *= 12.92, i = i > .0031308 ? 1.055 * Math.pow(i, 1 / 2.4) - .055 : i *= 12.92, e = Math.min(Math.max(0, e), 1), n = Math.min(Math.max(0, n), 1), i = Math.min(Math.max(0, i), 1), [255 * e, 255 * n, 255 * i]
5256                    }
5257                    function v(t) {
5258                        var e, n, i, o = t[0], a = t[1], r = t[2];
5259                        return o /= 95.047, a /= 100, r /= 108.883, o = o > .008856 ? Math.pow(o, 1 / 3) : 7.787 * o + 16 / 116, a = a > .008856 ? Math.pow(a, 1 / 3) : 7.787 * a + 16 / 116, r = r > .008856 ? Math.pow(r, 1 / 3) : 7.787 * r + 16 / 116, e = 116 * a - 16, n = 500 * (o - a), i = 200 * (a - r), [e, n, i]
5260                    }
5261                    function y(t) {
5262                        var e, n, i, o, a = t[0], r = t[1], s = t[2];
5263                        return a <= 8 ? o = (n = 100 * a / 903.3) / 100 * 7.787 + 16 / 116 : (n = 100 * Math.pow((a + 16) / 116, 3), o = Math.pow(n / 100, 1 / 3)), e = e / 95.047 <= .008856 ? e = 95.047 * (r / 500 + o - 16 / 116) / 7.787 : 95.047 * Math.pow(r / 500 + o, 3), i = i / 108.883 <= .008859 ? i = 108.883 * (o - s / 200 - 16 / 116) / 7.787 : 108.883 * Math.pow(o - s / 200, 3), [e, n, i]
5264                    }
5265                    function x(t) {
5266                        var e, n, i, o = t[0], a = t[1], r = t[2];
5267                        return e = Math.atan2(r, a), (n = 360 * e / 2 / Math.PI) < 0 && (n += 360), i = Math.sqrt(a * a + r * r), [o, i, n]
5268                    }
5269                    function w(t) {
5270                        return m(y(t))
5271                    }
5272                    function k(t) {
5273                        var e, n, i, o = t[0], a = t[1];
5274                        return i = t[2] / 360 * 2 * Math.PI, e = a * Math.cos(i), n = a * Math.sin(i), [o, e, n]
5275                    }
5276                    function C(t) {
5277                        return S[t]
5278                    }
5279                    e.exports = {rgb2hsl: i, rgb2hsv: o, rgb2hwb: a, rgb2cmyk: s, rgb2keyword: l, rgb2xyz: c, rgb2lab: u, rgb2lch: function (t) {
5280                            return x(u(t))
5281                        }, hsl2rgb: d, hsl2hsv: function (t) {
5282                            var e, n, i = t[0], o = t[1] / 100, a = t[2] / 100;
5283                            return 0 === a ? [0, 0, 0] : (a *= 2, o *= a <= 1 ? a : 2 - a, n = (a + o) / 2, e = 2 * o / (a + o), [i, 100 * e, 100 * n])
5284                        }, hsl2hwb: function (t) {
5285                            return a(d(t))
5286                        }, hsl2cmyk: function (t) {
5287                            return s(d(t))
5288                        }, hsl2keyword: function (t) {
5289                            return l(d(t))
5290                        }, hsv2rgb: h, hsv2hsl: function (t) {
5291                            var e, n, i = t[0], o = t[1] / 100, a = t[2] / 100;
5292                            return n = (2 - o) * a, e = o * a, e /= n <= 1 ? n : 2 - n, e = e || 0, n /= 2, [i, 100 * e, 100 * n]
5293                        }, hsv2hwb: function (t) {
5294                            return a(h(t))
5295                        }, hsv2cmyk: function (t) {
5296                            return s(h(t))
5297                        }, hsv2keyword: function (t) {
5298                            return l(h(t))
5299                        }, hwb2rgb: p, hwb2hsl: function (t) {
5300                            return i(p(t))
5301                        }, hwb2hsv: function (t) {
5302                            return o(p(t))
5303                        }, hwb2cmyk: function (t) {
5304                            return s(p(t))
5305                        }, hwb2keyword: function (t) {
5306                            return l(p(t))
5307                        }, cmyk2rgb: f, cmyk2hsl: function (t) {
5308                            return i(f(t))
5309                        }, cmyk2hsv: function (t) {
5310                            return o(f(t))
5311                        }, cmyk2hwb: function (t) {
5312                            return a(f(t))
5313                        }, cmyk2keyword: function (t) {
5314                            return l(f(t))
5315                        }, keyword2rgb: C, keyword2hsl: function (t) {
5316                            return i(C(t))
5317                        }, keyword2hsv: function (t) {
5318                            return o(C(t))
5319                        }, keyword2hwb: function (t) {
5320                            return a(C(t))
5321                        }, keyword2cmyk: function (t) {
5322                            return s(C(t))
5323                        }, keyword2lab: function (t) {
5324                            return u(C(t))
5325                        }, keyword2xyz: function (t) {
5326                            return c(C(t))
5327                        }, xyz2rgb: m, xyz2lab: v, xyz2lch: function (t) {
5328                            return x(v(t))
5329                        }, lab2xyz: y, lab2rgb: w, lab2lch: x, lch2lab: k, lch2xyz: function (t) {
5330                            return y(k(t))
5331                        }, lch2rgb: function (t) {
5332                            return w(k(t))
5333                        }};
5334                    var S = {aliceblue: [240, 248, 255], antiquewhite: [250, 235, 215], aqua: [0, 255, 255], aquamarine: [127, 255, 212], azure: [240, 255, 255], beige: [245, 245, 220], bisque: [255, 228, 196], black: [0, 0, 0], blanchedalmond: [255, 235, 205], blue: [0, 0, 255], blueviolet: [138, 43, 226], brown: [165, 42, 42], burlywood: [222, 184, 135], cadetblue: [95, 158, 160], chartreuse: [127, 255, 0], chocolate: [210, 105, 30], coral: [255, 127, 80], cornflowerblue: [100, 149, 237], cornsilk: [255, 248, 220], crimson: [220, 20, 60], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgoldenrod: [184, 134, 11], darkgray: [169, 169, 169], darkgreen: [0, 100, 0], darkgrey: [169, 169, 169], darkkhaki: [189, 183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkseagreen: [143, 188, 143], darkslateblue: [72, 61, 139], darkslategray: [47, 79, 79], darkslategrey: [47, 79, 79], darkturquoise: [0, 206, 209], darkviolet: [148, 0, 211], deeppink: [255, 20, 147], deepskyblue: [0, 191, 255], dimgray: [105, 105, 105], dimgrey: [105, 105, 105], dodgerblue: [30, 144, 255], firebrick: [178, 34, 34], floralwhite: [255, 250, 240], forestgreen: [34, 139, 34], fuchsia: [255, 0, 255], gainsboro: [220, 220, 220], ghostwhite: [248, 248, 255], gold: [255, 215, 0], goldenrod: [218, 165, 32], gray: [128, 128, 128], green: [0, 128, 0], greenyellow: [173, 255, 47], grey: [128, 128, 128], honeydew: [240, 255, 240], hotpink: [255, 105, 180], indianred: [205, 92, 92], indigo: [75, 0, 130], ivory: [255, 255, 240], khaki: [240, 230, 140], lavender: [230, 230, 250], lavenderblush: [255, 240, 245], lawngreen: [124, 252, 0], lemonchiffon: [255, 250, 205], lightblue: [173, 216, 230], lightcoral: [240, 128, 128], lightcyan: [224, 255, 255], lightgoldenrodyellow: [250, 250, 210], lightgray: [211, 211, 211], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightsalmon: [255, 160, 122], lightseagreen: [32, 178, 170], lightskyblue: [135, 206, 250], lightslategray: [119, 136, 153], lightslategrey: [119, 136, 153], lightsteelblue: [176, 196, 222], lightyellow: [255, 255, 224], lime: [0, 255, 0], limegreen: [50, 205, 50], linen: [250, 240, 230], magenta: [255, 0, 255], maroon: [128, 0, 0], mediumaquamarine: [102, 205, 170], mediumblue: [0, 0, 205], mediumorchid: [186, 85, 211], mediumpurple: [147, 112, 219], mediumseagreen: [60, 179, 113], mediumslateblue: [123, 104, 238], mediumspringgreen: [0, 250, 154], mediumturquoise: [72, 209, 204], mediumvioletred: [199, 21, 133], midnightblue: [25, 25, 112], mintcream: [245, 255, 250], mistyrose: [255, 228, 225], moccasin: [255, 228, 181], navajowhite: [255, 222, 173], navy: [0, 0, 128], oldlace: [253, 245, 230], olive: [128, 128, 0], olivedrab: [107, 142, 35], orange: [255, 165, 0], orangered: [255, 69, 0], orchid: [218, 112, 214], palegoldenrod: [238, 232, 170], palegreen: [152, 251, 152], paleturquoise: [175, 238, 238], palevioletred: [219, 112, 147], papayawhip: [255, 239, 213], peachpuff: [255, 218, 185], peru: [205, 133, 63], pink: [255, 192, 203], plum: [221, 160, 221], powderblue: [176, 224, 230], purple: [128, 0, 128], rebeccapurple: [102, 51, 153], red: [255, 0, 0], rosybrown: [188, 143, 143], royalblue: [65, 105, 225], saddlebrown: [139, 69, 19], salmon: [250, 128, 114], sandybrown: [244, 164, 96], seagreen: [46, 139, 87], seashell: [255, 245, 238], sienna: [160, 82, 45], silver: [192, 192, 192], skyblue: [135, 206, 235], slateblue: [106, 90, 205], slategray: [112, 128, 144], slategrey: [112, 128, 144], snow: [255, 250, 250], springgreen: [0, 255, 127], steelblue: [70, 130, 180], tan: [210, 180, 140], teal: [0, 128, 128], thistle: [216, 191, 216], tomato: [255, 99, 71], turquoise: [64, 224, 208], violet: [238, 130, 238], wheat: [245, 222, 179], white: [255, 255, 255], whitesmoke: [245, 245, 245], yellow: [255, 255, 0], yellowgreen: [154, 205, 50]}, T = {};
5335                    for (var M in S)
5336                        T[JSON.stringify(S[M])] = M
5337                }, {}], 5: [function (t, e, n) {
5338                    var i = t(4), o = function () {
5339                        return new c
5340                    };
5341                    for (var a in i) {
5342                        o[a + "Raw"] = function (t) {
5343                            return function (e) {
5344                                return"number" == typeof e && (e = Array.prototype.slice.call(arguments)), i[t](e)
5345                            }
5346                        }(a);
5347                        var r = /(\w+)2(\w+)/.exec(a), s = r[1], l = r[2];
5348                        (o[s] = o[s] || {})[l] = o[a] = function (t) {
5349                            return function (e) {
5350                                "number" == typeof e && (e = Array.prototype.slice.call(arguments));
5351                                var n = i[t](e);
5352                                if ("string" == typeof n || void 0 === n)
5353                                    return n;
5354                                for (var o = 0; o < n.length; o++)
5355                                    n[o] = Math.round(n[o]);
5356                                return n
5357                            }
5358                        }(a)
5359                    }
5360                    var c = function () {
5361                        this.convs = {}
5362                    };
5363                    c.prototype.routeSpace = function (t, e) {
5364                        var n = e[0];
vendor: 5,472 bytes, lines 5365-5384
5365                        return void 0 === n ? this.getValues(t) : ("number" == typeof n && (n = Array.prototype.slice.call(e)), this.setValues(t, n))
5366                    }, c.prototype.setValues = function (t, e) {
5367                        return this.space = t, this.convs = {}, this.convs[t] = e, this
5368                    }, c.prototype.getValues = function (t) {
5369                        var e = this.convs[t];
5370                        if (!e) {
5371                            var n = this.space, i = this.convs[n];
5372                            e = o[n][t](i), this.convs[t] = e
5373                        }
5374                        return e
5375                    }, ["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function (t) {
5376                        c.prototype[t] = function (e) {
5377                            return this.routeSpace(t, arguments)
5378                        }
5379                    }), e.exports = o
5380                }, {4: 4}], 6: [function (t, e, n) {
5381                    e.exports = {aliceblue: [240, 248, 255], antiquewhite: [250, 235, 215], aqua: [0, 255, 255], aquamarine: [127, 255, 212], azure: [240, 255, 255], beige: [245, 245, 220], bisque: [255, 228, 196], black: [0, 0, 0], blanchedalmond: [255, 235, 205], blue: [0, 0, 255], blueviolet: [138, 43, 226], brown: [165, 42, 42], burlywood: [222, 184, 135], cadetblue: [95, 158, 160], chartreuse: [127, 255, 0], chocolate: [210, 105, 30], coral: [255, 127, 80], cornflowerblue: [100, 149, 237], cornsilk: [255, 248, 220], crimson: [220, 20, 60], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgoldenrod: [184, 134, 11], darkgray: [169, 169, 169], darkgreen: [0, 100, 0], darkgrey: [169, 169, 169], darkkhaki: [189, 183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkseagreen: [143, 188, 143], darkslateblue: [72, 61, 139], darkslategray: [47, 79, 79], darkslategrey: [47, 79, 79], darkturquoise: [0, 206, 209], darkviolet: [148, 0, 211], deeppink: [255, 20, 147], deepskyblue: [0, 191, 255], dimgray: [105, 105, 105], dimgrey: [105, 105, 105], dodgerblue: [30, 144, 255], firebrick: [178, 34, 34], floralwhite: [255, 250, 240], forestgreen: [34, 139, 34], fuchsia: [255, 0, 255], gainsboro: [220, 220, 220], ghostwhite: [248, 248, 255], gold: [255, 215, 0], goldenrod: [218, 165, 32], gray: [128, 128, 128], green: [0, 128, 0], greenyellow: [173, 255, 47], grey: [128, 128, 128], honeydew: [240, 255, 240], hotpink: [255, 105, 180], indianred: [205, 92, 92], indigo: [75, 0, 130], ivory: [255, 255, 240], khaki: [240, 230, 140], lavender: [230, 230, 250], lavenderblush: [255, 240, 245], lawngreen: [124, 252, 0], lemonchiffon: [255, 250, 205], lightblue: [173, 216, 230], lightcoral: [240, 128, 128], lightcyan: [224, 255, 255], lightgoldenrodyellow: [250, 250, 210], lightgray: [211, 211, 211], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightsalmon: [255, 160, 122], lightseagreen: [32, 178, 170], lightskyblue: [135, 206, 250], lightslategray: [119, 136, 153], lightslategrey: [119, 136, 153], lightsteelblue: [176, 196, 222], lightyellow: [255, 255, 224], lime: [0, 255, 0], limegreen: [50, 205, 50], linen: [250, 240, 230], magenta: [255, 0, 255], maroon: [128, 0, 0], mediumaquamarine: [102, 205, 170], mediumblue: [0, 0, 205], mediumorchid: [186, 85, 211], mediumpurple: [147, 112, 219], mediumseagreen: [60, 179, 113], mediumslateblue: [123, 104, 238], mediumspringgreen: [0, 250, 154], mediumturquoise: [72, 209, 204], mediumvioletred: [199, 21, 133], midnightblue: [25, 25, 112], mintcream: [245, 255, 250], mistyrose: [255, 228, 225], moccasin: [255, 228, 181], navajowhite: [255, 222, 173], navy: [0, 0, 128], oldlace: [253, 245, 230], olive: [128, 128, 0], olivedrab: [107, 142, 35], orange: [255, 165, 0], orangered: [255, 69, 0], orchid: [218, 112, 214], palegoldenrod: [238, 232, 170], palegreen: [152, 251, 152], paleturquoise: [175, 238, 238], palevioletred: [219, 112, 147], papayawhip: [255, 239, 213], peachpuff: [255, 218, 185], peru: [205, 133, 63], pink: [255, 192, 203], plum: [221, 160, 221], powderblue: [176, 224, 230], purple: [128, 0, 128], rebeccapurple: [102, 51, 153], red: [255, 0, 0], rosybrown: [188, 143, 143], royalblue: [65, 105, 225], saddlebrown: [139, 69, 19], salmon: [250, 128, 114], sandybrown: [244, 164, 96], seagreen: [46, 139, 87], seashell: [255, 245, 238], sienna: [160, 82, 45], silver: [192, 192, 192], skyblue: [135, 206, 235], slateblue: [106, 90, 205], slategray: [112, 128, 144], slategrey: [112, 128, 144], snow: [255, 250, 250], springgreen: [0, 255, 127], steelblue: [70, 130, 180], tan: [210, 180, 140], teal: [0, 128, 128], thistle: [216, 191, 216], tomato: [255, 99, 71], turquoise: [64, 224, 208], violet: [238, 130, 238], wheat: [245, 222, 179], white: [255, 255, 255], whitesmoke: [245, 245, 245], yellow: [255, 255, 0], yellowgreen: [154, 205, 50]}
5382                }, {}], 7: [function (t, e, n) {
5383                    var i = t(28)();
5384                    t(26)(i), t(40)(i), t(22)(i), t(25)(i), t(30)(i), t(21)(i), t(23)(i), t(24)(i), t(29)(i), t(32)(i), t(33)(i), t(31)(i), t(27)(i), t(34)(i), t(35)(i), t(36)(i), t(37)(i), t(38)(i), t(46)(i), t(44)(i), t(45)(i), t(47)(i), t(48)(i), t(49)(i), t(15)(i), t(16)(i), t(17)(i), t(18)(i), t(19)(i), t(20)(i), t(8)(i), t(9)(i), t(10)(i), t(11)(i), t(12)(i), t(13)(i), t(14)(i);
5385                    var o = [];
5386                    o.push(t(41)(i), t(42)(i), t(43)(i)), i.plugins.register(o), e.exports = i, "undefined" != typeof window && (window.Chart = i)
5387                }, {10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32, 33: 33, 34: 34, 35: 35, 36: 36, 37: 37, 38: 38, 40: 40, 41: 41, 42: 42, 43: 43, 44: 44, 45: 45, 46: 46, 47: 47, 48: 48, 49: 49, 8: 8, 9: 9}], 8: [function (t, e, n) {
5388                    "use strict";
5389                    e.exports = function (t) {
5390                        t.Bar = function (e, n) {
5391                            return n.type = "bar", new t(e, n)
5392                        }
5393                    }
5394                }, {}], 9: [function (t, e, n) {
5395                    "use strict";
5396                    e.exports = function (t) {
5397                        t.Bubble = function (e, n) {
5398                            return n.type = "bubble", new t(e, n)
5399                        }
5400                    }
5401                }, {}], 10: [function (t, e, n) {
5402                    "use strict";
5403                    e.exports = function (t) {
5404                        t.Doughnut = function (e, n) {
5405                            return n.type = "doughnut", new t(e, n)
5406                        }
5407                    }
5408                }, {}], 11: [function (t, e, n) {
5409                    "use strict";
5410                    e.exports = function (t) {
5411                        t.Line = function (e, n) {
5412                            return n.type = "line", new t(e, n)
5413                        }
5414                    }
5415                }, {}], 12: [function (t, e, n) {
5416                    "use strict";
5417                    e.exports = function (t) {
5418                        t.PolarArea = function (e, n) {
5419                            return n.type = "polarArea", new t(e, n)
5420                        }
5421                    }
5422                }, {}], 13: [function (t, e, n) {
5423                    "use strict";
5424                    e.exports = function (t) {
5425                        t.Radar = function (e, n) {
5426                            return n.type = "radar", new t(e, n)
5427                        }
5428                    }
5429                }, {}], 14: [function (t, e, n) {
5430                    "use strict";
5431                    e.exports = function (t) {
5432                        var e = {hover: {mode: "single"}, scales: {xAxes: [{type: "linear", position: "bottom", id: "x-axis-1"}], yAxes: [{type: "linear", position: "left", id: "y-axis-1"}]}, tooltips: {callbacks: {title: function () {
5433                                        return""
5434                                    }, label: function (t) {
5435                                        return"(" + t.xLabel + ", " + t.yLabel + ")"
5436                                    }}}};
5437                        t.defaults.scatter = e, t.controllers.scatter = t.controllers.line, t.Scatter = function (e, n) {
5438                            return n.type = "scatter", new t(e, n)
5439                        }
5440                    }
5441                }, {}], 15: [function (t, e, n) {
5442                    "use strict";
5443                    e.exports = function (t) {
5444                        var e = t.helpers;
5445                        t.defaults.bar = {hover: {mode: "label"}, scales: {xAxes: [{type: "category", categoryPercentage: .8, barPercentage: .9, gridLines: {offsetGridLines: !0}}], yAxes: [{type: "linear"}]}}, t.controllers.bar = t.DatasetController.extend({dataElementType: t.elements.Rectangle, initialize: function () {
5446                                var e, n = this;
5447                                t.DatasetController.prototype.initialize.apply(n, arguments), (e = n.getMeta()).stack = n.getDataset().stack, e.bar = !0
5448                            }, update: function (t) {
5449                                var e, n, i = this, o = i.getMeta().data;
5450                                for (i._ruler = i.getRuler(), e = 0, n = o.length; e < n; ++e)
5451                                    i.updateElement(o[e], e, t)
5452                            }, updateElement: function (t, n, i) {
5453                                var o = this, a = o.chart, r = o.getMeta(), s = o.getDataset(), l = t.custom || {}, c = a.options.elements.rectangle;
5454                                t._xScale = o.getScaleForId(r.xAxisID), t._yScale = o.getScaleForId(r.yAxisID), t._datasetIndex = o.index, t._index = n, t._model = {datasetLabel: s.label, label: a.data.labels[n], borderSkipped: l.borderSkipped ? l.borderSkipped : c.borderSkipped, backgroundColor: l.backgroundColor ? l.backgroundColor : e.getValueAtIndexOrDefault(s.backgroundColor, n, c.backgroundColor), borderColor: l.borderColor ? l.borderColor : e.getValueAtIndexOrDefault(s.borderColor, n, c.borderColor), borderWidth: l.borderWidth ? l.borderWidth : e.getValueAtIndexOrDefault(s.borderWidth, n, c.borderWidth)}, o.updateElementGeometry(t, n, i), t.pivot()
5455                            }, updateElementGeometry: function (t, e, n) {
5456                                var i = this, o = t._model, a = i.getValueScale(), r = a.getBasePixel(), s = a.isHorizontal(), l = i._ruler || i.getRuler(), c = i.calculateBarValuePixels(i.index, e), u = i.calculateBarIndexPixels(i.index, e, l);
5457                                o.horizontal = s, o.base = n ? r : c.base, o.x = s ? n ? r : c.head : u.center, o.y = s ? u.center : n ? r : c.head, o.height = s ? u.size : void 0, o.width = s ? void 0 : u.size
5458                            }, getValueScaleId: function () {
5459                                return this.getMeta().yAxisID
5460                            }, getIndexScaleId: function () {
5461                                return this.getMeta().xAxisID
5462                            }, getValueScale: function () {
5463                                return this.getScaleForId(this.getValueScaleId())
5464                            }, getIndexScale: function () {
5465                                return this.getScaleForId(this.getIndexScaleId())
5466                            }, getStackCount: function (t) {
5467                                var e, n, i = this, o = i.chart, a = i.getIndexScale().options.stacked, r = void 0 === t ? o.data.datasets.length : t + 1, s = [];
5468                                for (e = 0; e < r; ++e)
5469                                    (n = o.getDatasetMeta(e)).bar && o.isDatasetVisible(e) && (!1 === a || !0 === a && -1 === s.indexOf(n.stack) || void 0 === a && (void 0 === n.stack || -1 === s.indexOf(n.stack))) && s.push(n.stack);
5470                                return s.length
5471                            }, getStackIndex: function (t) {
5472                                return this.getStackCount(t) - 1
5473                            }, getRuler: function () {
5474                                var t = this, n = t.getIndexScale(), i = n.options, o = t.getStackCount(), a = (n.isHorizontal() ? n.width : n.height) / n.ticks.length, r = a * i.categoryPercentage, s = r / o, l = s * i.barPercentage;
5475                                return l = Math.min(e.getValueOrDefault(i.barThickness, l), e.getValueOrDefault(i.maxBarThickness, 1 / 0)), {stackCount: o, tickSize: a, categorySize: r, categorySpacing: a - r, fullBarSize: s, barSize: l, barSpacing: s - l, scale: n}
5476                            }, calculateBarValuePixels: function (t, e) {
5477                                var n, i, o, a, r, s, l = this, c = l.chart, u = l.getMeta(), d = l.getValueScale(), h = c.data.datasets, p = Number(h[t].data[e]), f = d.options.stacked, m = u.stack, g = 0;
5478                                if (f || void 0 === f && void 0 !== m)
5479                                    for (n = 0; n < t; ++n)
5480                                        (i = c.getDatasetMeta(n)).bar && i.stack === m && i.controller.getValueScaleId() === d.id && c.isDatasetVisible(n) && (o = Number(h[n].data[e]), (p < 0 && o < 0 || p >= 0 && o > 0) && (g += o));
5481                                return a = d.getPixelForValue(g), r = d.getPixelForValue(g + p), s = (r - a) / 2, {size: s, base: a, head: r, center: r + s / 2}
5482                            }, calculateBarIndexPixels: function (t, e, n) {
5483                                var i = this, o = n.scale, a = i.chart.isCombo, r = i.getStackIndex(t), s = o.getPixelForValue(null, e, t, a), l = n.barSize;
5484                                return s -= a ? n.tickSize / 2 : 0, s += n.fullBarSize * r, s += n.categorySpacing / 2, s += n.barSpacing / 2, {size: l, base: s, head: s + l, center: s + l / 2}
5485                            }, draw: function () {
5486                                var t, n = this, i = n.chart, o = n.getMeta().data, a = n.getDataset(), r = o.length, s = 0;
5487                                for (e.canvas.clipArea(i.ctx, i.chartArea); s < r; ++s)
5488                                    null === (t = a.data[s]) || void 0 === t || isNaN(t) || o[s].draw();
5489                                e.canvas.unclipArea(i.ctx)
5490                            }, setHoverStyle: function (t) {
5491                                var n = this.chart.data.datasets[t._datasetIndex], i = t._index, o = t.custom || {}, a = t._model;
5492                                a.backgroundColor = o.hoverBackgroundColor ? o.hoverBackgroundColor : e.getValueAtIndexOrDefault(n.hoverBackgroundColor, i, e.getHoverColor(a.backgroundColor)), a.borderColor = o.hoverBorderColor ? o.hoverBorderColor : e.getValueAtIndexOrDefault(n.hoverBorderColor, i, e.getHoverColor(a.borderColor)), a.borderWidth = o.hoverBorderWidth ? o.hoverBorderWidth : e.getValueAtIndexOrDefault(n.hoverBorderWidth, i, a.borderWidth)
5493                            }, removeHoverStyle: function (t) {
5494                                var n = this.chart.data.datasets[t._datasetIndex], i = t._index, o = t.custom || {}, a = t._model, r = this.chart.options.elements.rectangle;
5495                                a.backgroundColor = o.backgroundColor ? o.backgroundColor : e.getValueAtIndexOrDefault(n.backgroundColor, i, r.backgroundColor), a.borderColor = o.borderColor ? o.borderColor : e.getValueAtIndexOrDefault(n.borderColor, i, r.borderColor), a.borderWidth = o.borderWidth ? o.borderWidth : e.getValueAtIndexOrDefault(n.borderWidth, i, r.borderWidth)
5496                            }}), t.defaults.horizontalBar = {hover: {mode: "label"}, scales: {xAxes: [{type: "linear", position: "bottom"}], yAxes: [{position: "left", type: "category", categoryPercentage: .8, barPercentage: .9, gridLines: {offsetGridLines: !0}}]}, elements: {rectangle: {borderSkipped: "left"}}, tooltips: {callbacks: {title: function (t, e) {
5497                                        var n = "";
5498                                        return t.length > 0 && (t[0].yLabel ? n = t[0].yLabel : e.labels.length > 0 && t[0].index < e.labels.length && (n = e.labels[t[0].index])), n
5499                                    }, label: function (t, e) {
5500                                        return(e.datasets[t.datasetIndex].label || "") + ": " + t.xLabel
5501                                    }}}}, t.controllers.horizontalBar = t.controllers.bar.extend({getValueScaleId: function () {
5502                                return this.getMeta().xAxisID
5503                            }, getIndexScaleId: function () {
5504                                return this.getMeta().yAxisID
5505                            }})
5506                    }
5507                }, {}], 16: [function (t, e, n) {
5508                    "use strict";
5509                    e.exports = function (t) {
5510                        var e = t.helpers;
5511                        t.defaults.bubble = {hover: {mode: "single"}, scales: {xAxes: [{type: "linear", position: "bottom", id: "x-axis-0"}], yAxes: [{type: "linear", position: "left", id: "y-axis-0"}]}, tooltips: {callbacks: {title: function () {
5512                                        return""
5513                                    }, label: function (t, e) {
5514                                        var n = e.datasets[t.datasetIndex].label || "", i = e.datasets[t.datasetIndex].data[t.index];
5515                                        return n + ": (" + t.xLabel + ", " + t.yLabel + ", " + i.r + ")"
5516                                    }}}}, t.controllers.bubble = t.DatasetController.extend({dataElementType: t.elements.Point, update: function (t) {
5517                                var n = this, i = n.getMeta().data;
5518                                e.each(i, function (e, i) {
5519                                    n.updateElement(e, i, t)
5520                                })
5521                            }, updateElement: function (n, i, o) {
5522                                var a = this, r = a.getMeta(), s = a.getScaleForId(r.xAxisID), l = a.getScaleForId(r.yAxisID), c = n.custom || {}, u = a.getDataset(), d = u.data[i], h = a.chart.options.elements.point, p = a.index;
5523                                e.extend(n, {_xScale: s, _yScale: l, _datasetIndex: p, _index: i, _model: {x: o ? s.getPixelForDecimal(.5) : s.getPixelForValue("object" == typeof d ? d : NaN, i, p, a.chart.isCombo), y: o ? l.getBasePixel() : l.getPixelForValue(d, i, p), radius: o ? 0 : c.radius ? c.radius : a.getRadius(d), hitRadius: c.hitRadius ? c.hitRadius : e.getValueAtIndexOrDefault(u.hitRadius, i, h.hitRadius)}}), t.DatasetController.prototype.removeHoverStyle.call(a, n, h);
5524                                var f = n._model;
5525                                f.skip = c.skip ? c.skip : isNaN(f.x) || isNaN(f.y), n.pivot()
5526                            }, getRadius: function (t) {
5527                                return t.r || this.chart.options.elements.point.radius
5528                            }, setHoverStyle: function (n) {
5529                                var i = this;
5530                                t.DatasetController.prototype.setHoverStyle.call(i, n);
5531                                var o = i.chart.data.datasets[n._datasetIndex], a = n._index, r = n.custom || {};
5532                                n._model.radius = r.hoverRadius ? r.hoverRadius : e.getValueAtIndexOrDefault(o.hoverRadius, a, i.chart.options.elements.point.hoverRadius) + i.getRadius(o.data[a])
5533                            }, removeHoverStyle: function (e) {
5534                                var n = this;
5535                                t.DatasetController.prototype.removeHoverStyle.call(n, e, n.chart.options.elements.point);
5536                                var i = n.chart.data.datasets[e._datasetIndex].data[e._index], o = e.custom || {};
5537                                e._model.radius = o.radius ? o.radius : n.getRadius(i)
5538                            }})
5539                    }
5540                }, {}], 17: [function (t, e, n) {
5541                    "use strict";
5542                    e.exports = function (t) {
5543                        var e = t.helpers, n = t.defaults;
5544                        n.doughnut = {animation: {animateRotate: !0, animateScale: !1}, aspectRatio: 1, hover: {mode: "single"}, legendCallback: function (t) {
5545                                var e = [];
5546                                e.push('<ul class="' + t.id + '-legend">');
5547                                var n = t.data, i = n.datasets, o = n.labels;
5548                                if (i.length)
5549                                    for (var a = 0; a < i[0].data.length; ++a)
5550                                        e.push('<li><span style="background-color:' + i[0].backgroundColor[a] + '"></span>'), o[a] && e.push(o[a]), e.push("</li>");
5551                                return e.push("</ul>"), e.join("")
5552                            }, legend: {labels: {generateLabels: function (t) {
5553                                        var n = t.data;
5554                                        return n.labels.length && n.datasets.length ? n.labels.map(function (i, o) {
5555                                            var a = t.getDatasetMeta(0), r = n.datasets[0], s = a.data[o], l = s && s.custom || {}
vendor: 6,389 bytes, lines 5555-5605
5555, c = e.getValueAtIndexOrDefault, u = t.options.elements.arc;
5556                                            return{text: i, fillStyle: l.backgroundColor ? l.backgroundColor : c(r.backgroundColor, o, u.backgroundColor), strokeStyle: l.borderColor ? l.borderColor : c(r.borderColor, o, u.borderColor), lineWidth: l.borderWidth ? l.borderWidth : c(r.borderWidth, o, u.borderWidth), hidden: isNaN(r.data[o]) || a.data[o].hidden, index: o}
5557                                        }) : []
5558                                    }}, onClick: function (t, e) {
5559                                    var n, i, o, a = e.index, r = this.chart;
5560                                    for (n = 0, i = (r.data.datasets || []).length; n < i; ++n)
5561                                        (o = r.getDatasetMeta(n)).data[a] && (o.data[a].hidden = !o.data[a].hidden);
5562                                    r.update()
5563                                }}, cutoutPercentage: 50, rotation: -.5 * Math.PI, circumference: 2 * Math.PI, tooltips: {callbacks: {title: function () {
5564                                        return""
5565                                    }, label: function (t, n) {
5566                                        var i = n.labels[t.index], o = ": " + n.datasets[t.datasetIndex].data[t.index];
5567                                        return e.isArray(i) ? (i = i.slice())[0] += o : i += o, i
5568                                    }}}}, n.pie = e.clone(n.doughnut), e.extend(n.pie, {cutoutPercentage: 0}), t.controllers.doughnut = t.controllers.pie = t.DatasetController.extend({dataElementType: t.elements.Arc, linkScales: e.noop, getRingIndex: function (t) {
5569                                for (var e = 0, n = 0; n < t; ++n)
5570                                    this.chart.isDatasetVisible(n) && ++e;
5571                                return e
5572                            }, update: function (t) {
5573                                var n = this, i = n.chart, o = i.chartArea, a = i.options, r = a.elements.arc, s = o.right - o.left - r.borderWidth, l = o.bottom - o.top - r.borderWidth, c = Math.min(s, l), u = {x: 0, y: 0}, d = n.getMeta(), h = a.cutoutPercentage, p = a.circumference;
5574                                if (p < 2 * Math.PI) {
5575                                    var f = a.rotation % (2 * Math.PI), m = (f += 2 * Math.PI * (f >= Math.PI ? -1 : f < -Math.PI ? 1 : 0)) + p, g = {x: Math.cos(f), y: Math.sin(f)}, v = {x: Math.cos(m), y: Math.sin(m)}, y = f <= 0 && 0 <= m || f <= 2 * Math.PI && 2 * Math.PI <= m, b = f <= .5 * Math.PI && .5 * Math.PI <= m || f <= 2.5 * Math.PI && 2.5 * Math.PI <= m, x = f <= -Math.PI && -Math.PI <= m || f <= Math.PI && Math.PI <= m, w = f <= .5 * -Math.PI && .5 * -Math.PI <= m || f <= 1.5 * Math.PI && 1.5 * Math.PI <= m, k = h / 100, C = {x: x ? -1 : Math.min(g.x * (g.x < 0 ? 1 : k), v.x * (v.x < 0 ? 1 : k)), y: w ? -1 : Math.min(g.y * (g.y < 0 ? 1 : k), v.y * (v.y < 0 ? 1 : k))}, S = {x: y ? 1 : Math.max(g.x * (g.x > 0 ? 1 : k), v.x * (v.x > 0 ? 1 : k)), y: b ? 1 : Math.max(g.y * (g.y > 0 ? 1 : k), v.y * (v.y > 0 ? 1 : k))}, T = {width: .5 * (S.x - C.x), height: .5 * (S.y - C.y)};
5576                                    c = Math.min(s / T.width, l / T.height), u = {x: -.5 * (S.x + C.x), y: -.5 * (S.y + C.y)}
5577                                }
5578                                i.borderWidth = n.getMaxBorderWidth(d.data), i.outerRadius = Math.max((c - i.borderWidth) / 2, 0), i.innerRadius = Math.max(h ? i.outerRadius / 100 * h : 0, 0), i.radiusLength = (i.outerRadius - i.innerRadius) / i.getVisibleDatasetCount(), i.offsetX = u.x * i.outerRadius, i.offsetY = u.y * i.outerRadius, d.total = n.calculateTotal(), n.outerRadius = i.outerRadius - i.radiusLength * n.getRingIndex(n.index), n.innerRadius = Math.max(n.outerRadius - i.radiusLength, 0), e.each(d.data, function (e, i) {
5579                                    n.updateElement(e, i, t)
5580                                })
5581                            }, updateElement: function (t, n, i) {
5582                                var o = this, a = o.chart, r = a.chartArea, s = a.options, l = s.animation, c = (r.left + r.right) / 2, u = (r.top + r.bottom) / 2, d = s.rotation, h = s.rotation, p = o.getDataset(), f = i && l.animateRotate ? 0 : t.hidden ? 0 : o.calculateCircumference(p.data[n]) * (s.circumference / (2 * Math.PI)), m = i && l.animateScale ? 0 : o.innerRadius, g = i && l.animateScale ? 0 : o.outerRadius, v = e.getValueAtIndexOrDefault;
5583                                e.extend(t, {_datasetIndex: o.index, _index: n, _model: {x: c + a.offsetX, y: u + a.offsetY, startAngle: d, endAngle: h, circumference: f, outerRadius: g, innerRadius: m, label: v(p.label, n, a.data.labels[n])}});
5584                                var y = t._model;
5585                                this.removeHoverStyle(t), i && l.animateRotate || (y.startAngle = 0 === n ? s.rotation : o.getMeta().data[n - 1]._model.endAngle, y.endAngle = y.startAngle + y.circumference), t.pivot()
5586                            }, removeHoverStyle: function (e) {
5587                                t.DatasetController.prototype.removeHoverStyle.call(this, e, this.chart.options.elements.arc)
5588                            }, calculateTotal: function () {
5589                                var t, n = this.getDataset(), i = this.getMeta(), o = 0;
5590                                return e.each(i.data, function (e, i) {
5591                                    t = n.data[i], isNaN(t) || e.hidden || (o += Math.abs(t))
5592                                }), o
5593                            }, calculateCircumference: function (t) {
5594                                var e = this.getMeta().total;
5595                                return e > 0 && !isNaN(t) ? 2 * Math.PI * (t / e) : 0
5596                            }, getMaxBorderWidth: function (t) {
5597                                for (var e, n, i = 0, o = this.index, a = t.length, r = 0; r < a; r++)
5598                                    e = t[r]._model ? t[r]._model.borderWidth : 0, i = (n = t[r]._chart ? t[r]._chart.config.data.datasets[o].hoverBorderWidth : 0) > (i = e > i ? e : i) ? n : i;
5599                                return i
5600                            }})
5601                    }
5602                }, {}], 18: [function (t, e, n) {
5603                    "use strict";
5604                    e.exports = function (t) {
5605                        function e(t, e) {
5606                            return n.getValueOrDefault(t.showLine, e.showLines)
5607                        }
5608                        var n = t.helpers;
5609                        t.defaults.line = {showLines: !0, spanGaps: !1, hover: {mode: "label"}, scales: {xAxes: [{type: "category", id: "x-axis-0"}], yAxes: [{type: "linear", id: "y-axis-0"}]}}, t.controllers.line = t.DatasetController.extend({datasetElementType: t.elements.Line, dataElementType: t.elements.Point, update: function (t) {
5610                                var i, o, a, r = this, s = r.getMeta(), l = s.dataset, c = s.data || [], u = r.chart.options, d = u.elements.line, h = r.getScaleForId(s.yAxisID), p = r.getDataset(), f = e(p, u);
5611                                for (f && (a = l.custom || {}, void 0 !== p.tension && void 0 === p.lineTension && (p.lineTension = p.tension), l._scale = h, l._datasetIndex = r.index, l._children = c, l._model = {spanGaps:p.spanGaps?p.spanGaps:u.spanGaps, tension:a.tension?a.tension:n.getValueOrDefault(p.lineTension, d.tension), backgroundColor:a.backgroundColor?a.backgroundColor:p.backgroundColor || d.backgroundColor, borderWidth:a.borderWidth?a.borderWidth:p.borderWidth || d.borderWidth, borderColor:a.borderColor?a.borderColor:p.borderColor || d.borderColor, borderCapStyle:a.borderCapStyle?a.borderCapStyle:p.borderCapStyle || d.borderCapStyle, borderDash:a.borderDash?a.borderDash:p.borderDash || d.borderDash, borderDashOffset:a.borderDashOffset?a.borderDashOffset:p.borderDashOffset || d.borderDashOffset, borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:p.borderJoinStyle || d.borderJoinStyle, fill:a.fill?a.fill:void 0 !== p.fill?p.fill:d.fill, steppedLine:a.steppedLine?a.steppedLine:n.getValueOrDefault(p.steppedLine, d.stepped), cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:n.getValueOrDefault(p.cubicInterpolationMode, d.cubicInterpolationMode)}, l.pivot()), i = 0, o = c.length; i < o; ++i)
5612                                    r.updateElement(c[i], i, t);
5613                                for (f && 0 !== l._model.tension && r.updateBezierControlPoints(), i = 0, o = c.length; i < o; ++i)
5614                                    c[i].pivot()
5615                            }
5615, getPointBackgroundColor: function (t, e) {
5616                                var i = this.chart.options.elements.point.backgroundColor, o = this.getDataset(), a = t.custom || {};
5617                                return a.backgroundColor ? i = a.backgroundColor : o.pointBackgroundColor ? i = n.getValueAtIndexOrDefault(o.pointBackgroundColor, e, i) : o.backgroundColor && (i = o.backgroundColor), i
5618                            }, getPointBorderColor: function (t, e) {
5619                                var i = this.chart.options.elements.point.borderColor, o = this.getDataset(), a = t.custom || {};
5620                                return a.borderColor ? i = a.borderColor : o.pointBorderColor ? i = n.getValueAtIndexOrDefault(o.pointBorderColor, e, i) : o.borderColor && (i = o.borderColor), i
5621                            }, getPointBorderWidth: function (t, e) {
5622                                var i = this.chart.options.elements.point.borderWidth, o = this.getDataset(), a = t.custom || {};
5623                                return isNaN(a.borderWidth) ? isNaN(o.pointBorderWidth) ? isNaN(o.borderWidth) || (i = o.borderWidth) : i = n.getValueAtIndexOrDefault(o.pointBorderWidth, e, i) : i = a.borderWidth, i
5624                            }, updateElement: function (t, e, i) {
5625                                var o, a, r = this, s = r.getMeta(), l = t.custom || {}, c = r.getDataset(), u = r.index, d = c.data[e], h = r.getScaleForId(s.yAxisID), p = r.getScaleForId(s.xAxisID), f = r.chart.options.elements.point, m = 1 === (r.chart.data.labels || []).length || 1 === c.data.length || r.chart.isCombo;
5626                                void 0 !== c.radius && void 0 === c.pointRadius && (c.pointRadius = c.radius), void 0 !== c.hitRadius && void 0 === c.pointHitRadius && (c.pointHitRadius = c.hitRadius), o = p.getPixelForValue("object" == typeof d ? d : NaN, e, u, m), a = i ? h.getBasePixel() : r.calculatePointY(d, e, u), t._xScale = p, t._yScale = h, t._datasetIndex = u, t._index = e, t._model = {x: o, y: a, skip: l.skip || isNaN(o) || isNaN(a), radius: l.radius || n.getValueAtIndexOrDefault(c.pointRadius, e, f.radius), pointStyle: l.pointStyle || n.getValueAtIndexOrDefault(c.pointStyle, e, f.pointStyle), backgroundColor: r.getPointBackgroun
vendor: 9,230 bytes, lines 5626-5704
5626dColor(t, e), borderColor: r.getPointBorderColor(t, e), borderWidth: r.getPointBorderWidth(t, e), tension: s.dataset._model ? s.dataset._model.tension : 0, steppedLine: !!s.dataset._model && s.dataset._model.steppedLine, hitRadius: l.hitRadius || n.getValueAtIndexOrDefault(c.pointHitRadius, e, f.hitRadius)}
5627                            }, calculatePointY: function (t, e, n) {
5628                                var i, o, a, r = this, s = r.chart, l = r.getMeta(), c = r.getScaleForId(l.yAxisID), u = 0, d = 0;
5629                                if (c.options.stacked) {
5630                                    for (i = 0; i < n; i++)
5631                                        if (o = s.data.datasets[i], "line" === (a = s.getDatasetMeta(i)).type && a.yAxisID === c.id && s.isDatasetVisible(i)) {
5632                                            var h = Number(c.getRightValue(o.data[e]));
5633                                            h < 0 ? d += h || 0 : u += h || 0
5634                                        }
5635                                    var p = Number(c.getRightValue(t));
5636                                    return p < 0 ? c.getPixelForValue(d + p) : c.getPixelForValue(u + p)
5637                                }
5638                                return c.getPixelForValue(t)
5639                            }, updateBezierControlPoints: function () {
5640                                function t(t, e, n) {
5641                                    return Math.max(Math.min(t, n), e)
5642                                }
5643                                var e, i, o, a, r = this, s = r.getMeta(), l = r.chart.chartArea, c = s.data || [];
5644                                if (s.dataset._model.spanGaps && (c = c.filter(function (t) {
5645                                    return!t._model.skip
5646                                })), "monotone" === s.dataset._model.cubicInterpolationMode)
5647                                    n.splineCurveMonotone(c);
5648                                else
5649                                    for (e = 0, i = c.length; e < i; ++e)
5650                                        o = c[e]._model, a = n.splineCurve(n.previousItem(c, e)._model, o, n.nextItem(c, e)._model, s.dataset._model.tension), o.controlPointPreviousX = a.previous.x, o.controlPointPreviousY = a.previous.y, o.controlPointNextX = a.next.x, o.controlPointNextY = a.next.y;
5651                                if (r.chart.options.elements.line.capBezierPoints)
5652                                    for (e = 0, i = c.length; e < i; ++e)
5653                                        (o = c[e]._model).controlPointPreviousX = t(o.controlPointPreviousX, l.left, l.right), o.controlPointPreviousY = t(o.controlPointPreviousY, l.top, l.bottom), o.controlPointNextX = t(o.controlPointNextX, l.left, l.right), o.controlPointNextY = t(o.controlPointNextY, l.top, l.bottom)
5654                            }, draw: function () {
5655                                var n = this, i = n.chart, o = n.getMeta(), a = o.data || [], r = i.chartArea, s = a.length, l = 0;
5656                                for (t.canvasHelpers.clipArea(i.ctx, r), e(n.getDataset(), i.options) && o.dataset.draw(), t.canvasHelpers.unclipArea(i.ctx); l < s; ++l)
5657                                    a[l].draw(r)
5658                            }, setHoverStyle: function (t) {
5659                                var e = this.chart.data.datasets[t._datasetIndex], i = t._index, o = t.custom || {}, a = t._model;
5660                                a.radius = o.hoverRadius || n.getValueAtIndexOrDefault(e.pointHoverRadius, i, this.chart.options.elements.point.hoverRadius), a.backgroundColor = o.hoverBackgroundColor || n.getValueAtIndexOrDefault(e.pointHoverBackgroundColor, i, n.getHoverColor(a.backgroundColor)), a.borderColor = o.hoverBorderColor || n.getValueAtIndexOrDefault(e.pointHoverBorderColor, i, n.getHoverColor(a.borderColor)), a.borderWidth = o.hoverBorderWidth || n.getValueAtIndexOrDefault(e.pointHoverBorderWidth, i, a.borderWidth)
5661                            }, removeHoverStyle: function (t) {
5662                                var e = this, i = e.chart.data.datasets[t._datasetIndex], o = t._index, a = t.custom || {}, r = t._model;
5663                                void 0 !== i.radius && void 0 === i.pointRadius && (i.pointRadius = i.radius), r.radius = a.radius || n.getValueAtIndexOrDefault(i.pointRadius, o, e.chart.options.elements.point.radius), r.backgroundColor = e.getPointBackgroundColor(t, o), r.borderColor = e.getPointBorderColor(t, o), r.borderWidth = e.getPointBorderWidth(t, o)
5664                            }})
5665                    }
5666                }, {}], 19: [function (t, e, n) {
5667                    "use strict";
5668                    e.exports = function (t) {
5669                        var e = t.helpers;
5670                        t.defaults.polarArea = {scale: {type: "radialLinear", angleLines: {display: !1}, gridLines: {circular: !0}, pointLabels: {display: !1}, ticks: {beginAtZero: !0}}, animation: {animateRotate: !0, animateScale: !0}, startAngle: -.5 * Math.PI, aspectRatio: 1, legendCallback: function (t) {
5671                                var e = [];
5672                                e.push('<ul class="' + t.id + '-legend">');
5673                                var n = t.data, i = n.datasets, o = n.labels;
5674                                if (i.length)
5675                                    for (var a = 0; a < i[0].data.length; ++a)
5676                                        e.push('<li><span style="background-color:' + i[0].backgroundColor[a] + '"></span>'), o[a] && e.push(o[a]), e.push("</li>");
5677                                return e.push("</ul>"), e.join("")
5678                            }, legend: {labels: {generateLabels: function (t) {
5679                                        var n = t.data;
5680                                        return n.labels.length && n.datasets.length ? n.labels.map(function (i, o) {
5681                                            var a = t.getDatasetMeta(0), r = n.datasets[0], s = a.data[o].custom || {}, l = e.getValueAtIndexOrDefault, c = t.options.elements.arc;
5682                                            return{text: i, fillStyle: s.backgroundColor ? s.backgroundColor : l(r.backgroundColor, o, c.backgroundColor), strokeStyle: s.borderColor ? s.borderColor : l(r.borderColor, o, c.borderColor), lineWidth: s.borderWidth ? s.borderWidth : l(r.borderWidth, o, c.borderWidth), hidden: isNaN(r.data[o]) || a.data[o].hidden, index: o}
5683                                        }) : []
5684                                    }}, onClick: function (t, e) {
5685                                    var n, i, o, a = e.index, r = this.chart;
5686                                    for (n = 0, i = (r.data.datasets || []).length; n < i; ++n)
5687                                        (o = r.getDatasetMeta(n)).data[a].hidden = !o.data[a].hidden;
5688                                    r.update()
5689                                }}, tooltips: {callbacks: {title: function () {
5690                                        return""
5691                                    }, label: function (t, e) {
5692                                        return e.labels[t.index] + ": " + t.yLabel
5693                                    }}}}, t.controllers.polarArea = t.DatasetController.extend({dataElementType: t.elements.Arc, linkScales: e.noop, update: function (t) {
5694                                var n = this, i = n.chart, o = i.chartArea, a = n.getMeta(), r = i.options, s = r.elements.arc, l = Math.min(o.right - o.left, o.bottom - o.top);
5695                                i.outerRadius = Math.max((l - s.borderWidth / 2) / 2, 0), i.innerRadius = Math.max(r.cutoutPercentage ? i.outerRadius / 100 * r.cutoutPercentage : 1, 0), i.radiusLength = (i.outerRadius - i.innerRadius) / i.getVisibleDatasetCount(), n.outerRadius = i.outerRadius - i.radiusLength * n.index, n.innerRadius = n.outerRadius - i.radiusLength, a.count = n.countVisibleElements(), e.each(a.data, function (e, i) {
5696                                    n.updateElement(e, i, t)
5697                                })
5698                            }, updateElement: function (t, n, i) {
5699                                for (var o = this, a = o.chart, r = o.getDataset(), s = a.options, l = s.animation, c = a.scale, u = e.getValueAtIndexOrDefault, d = a.data.labels, h = o.calculateCircumference(r.data[n]), p = c.xCenter, f = c.yCenter, m = 0, g = o.getMeta(), v = 0; v < n; ++v)
5700                                    isNaN(r.data[v]) || g.data[v].hidden || ++m;
5701                                var y = s.startAngle, b = t.hidden ? 0 : c.getDistanceFromCenterForValue(r.data[n]), x = y + h * m, w = x + (t.hidden ? 0 : h), k = l.animateScale ? 0 : c.getDistanceFromCenterForValue(r.data[n]);
5702                                e.extend(t, {_datasetIndex: o.index, _index: n, _scale: c, _model: {x: p, y: f, innerRadius: 0, outerRadius: i ? k : b, startAngle: i && l.animateRotate ? y : x, endAngle: i && l.animateRotate ? y : w, label: u(d, n, d[n])}}), o.removeHoverStyle(t), t.pivot()
5703                            }, removeHoverStyle: function (e) {
5704                                t.DatasetController.prototype.removeHoverStyle.call(this, e, this.chart.options.elements.ar
5704c)
5705                            }, countVisibleElements: function () {
5706                                var t = this.getDataset(), n = this.getMeta(), i = 0;
5707                                return e.each(n.data, function (e, n) {
5708                                    isNaN(t.data[n]) || e.hidden || i++
5709                                }), i
5710                            }, calculateCircumference: function (t) {
5711                                var e = this.getMeta().count;
5712                                return e > 0 && !isNaN(t) ? 2 * Math.PI / e : 0
5713                            }})
5714                    }
5715                }, {}], 20: [function (t, e, n) {
5716                    "use strict";
5717                    e.exports = function (t) {
5718                        var e = t.helpers;
5719                        t.defaults.radar = {aspectRatio: 1, scale: {type: "radialLinear"}, elements: {line: {tension: 0}}}, t.controllers.radar = t.DatasetController.extend({datasetElementType: t.elements.Line, dataElementType: t.elements.Point, linkScales: e.noop, update: function (t) {
5720                                var n = this, i = n.getMeta(), o = i.dataset, a = i.data, r = o.custom || {}, s = n.getDataset(), l = n.chart.options.elements.line, c = n.chart.scale;
5721                                void 0 !== s.tension && void 0 === s.lineTension && (s.lineTension = s.tension), e.extend(i.dataset, {_datasetIndex: n.index, _scale: c, _children: a, _loop: !0, _model: {tension: r.tension ? r.tension : e.getValueOrDefault(s.lineTension, l.tension), backgroundColor: r.backgroundColor ? r.backgroundColor : s.backgroundColor || l.backgroundColor, borderWidth: r.borderWidth ? r.borderWidth : s.borderWidth || l.borderWidth, borderColor: r.borderColor ? r.borderColor : s.borderColor || l.borderColor, fill: r.fill ? r.fill : void 0 !== s.fill ? s.fill : l.fill, borderCapStyle: r.borderCapStyle ? r.borderCapStyle : s.borderCapStyle || l.borderCapStyle, borderDash: r.borderDash ? r.borderDash : s.borderDash || l.borderDash, borderDashOffset: r.borderDashOffset ? r.borderDashOffset : s.borderDashOffset || l.borderDashOffset, borderJoinStyle: r.borderJoinStyle ? r.borderJoinStyle : s.borderJoinStyle || l.borderJoinStyle}}), i.dataset.pivot(), e.each(a, function (e, i) {
5722                                    n.updateElement(e, i, t)
5723                                }, n), n.updateBezierControlPoints()
5724                            }, updateElement: function (t, n, i) {
5725                                var o = this, a = t.custom || {}, r = o.getDataset(), s = o.chart.scale, l = o.chart.options.elements.point, c = s.getPointPositionForValue(n, r.data[n]);
5726                                void 0 !== r.radius && void 0 === r.pointRadius && (r.pointRadius = r.radius), void 0 !== r.hitRadius && void 0 === r.pointHitRadius && (r.pointHitRadius = r.hitRadius), e.extend(t, {_datasetIndex: o.index, _index: n, _scale: s, _model: {x: i ? s.xCenter : c.x, y: i ? s.yCenter : c.y, tension: a.tension ? a.tension : e.getValueOrDefault(r.lineTension, o.chart.options.elements.line.tension), radius: a.radius ? a.radius : e.getValueAtIndexOrDefault(r.pointRadius, n, l.radius), backgroundColor: a.backgroundColor ? a.backgroundColor : e.getValueAtIndexOrDefault(r.pointBackgroun
vendor: 8,364 bytes, lines 5726-5806
5726dColor, n, l.backgroundColor), borderColor: a.borderColor ? a.borderColor : e.getValueAtIndexOrDefault(r.pointBorderColor, n, l.borderColor), borderWidth: a.borderWidth ? a.borderWidth : e.getValueAtIndexOrDefault(r.pointBorderWidth, n, l.borderWidth), pointStyle: a.pointStyle ? a.pointStyle : e.getValueAtIndexOrDefault(r.pointStyle, n, l.pointStyle), hitRadius: a.hitRadius ? a.hitRadius : e.getValueAtIndexOrDefault(r.pointHitRadius, n, l.hitRadius)}}), t._model.skip = a.skip ? a.skip : isNaN(t._model.x) || isNaN(t._model.y)
5727                            }, updateBezierControlPoints: function () {
5728                                var t = this.chart.chartArea, n = this.getMeta();
5729                                e.each(n.data, function (i, o) {
5730                                    var a = i._model, r = e.splineCurve(e.previousItem(n.data, o, !0)._model, a, e.nextItem(n.data, o, !0)._model, a.tension);
5731                                    a.controlPointPreviousX = Math.max(Math.min(r.previous.x, t.right), t.left), a.controlPointPreviousY = Math.max(Math.min(r.previous.y, t.bottom), t.top), a.controlPointNextX = Math.max(Math.min(r.next.x, t.right), t.left), a.controlPointNextY = Math.max(Math.min(r.next.y, t.bottom), t.top), i.pivot()
5732                                })
5733                            }, setHoverStyle: function (t) {
5734                                var n = this.chart.data.datasets[t._datasetIndex], i = t.custom || {}, o = t._index, a = t._model;
5735                                a.radius = i.hoverRadius ? i.hoverRadius : e.getValueAtIndexOrDefault(n.pointHoverRadius, o, this.chart.options.elements.point.hoverRadius), a.backgroundColor = i.hoverBackgroundColor ? i.hoverBackgroundColor : e.getValueAtIndexOrDefault(n.pointHoverBackgroundColor, o, e.getHoverColor(a.backgroundColor)), a.borderColor = i.hoverBorderColor ? i.hoverBorderColor : e.getValueAtIndexOrDefault(n.pointHoverBorderColor, o, e.getHoverColor(a.borderColor)), a.borderWidth = i.hoverBorderWidth ? i.hoverBorderWidth : e.getValueAtIndexOrDefault(n.pointHoverBorderWidth, o, a.borderWidth)
5736                            }, removeHoverStyle: function (t) {
5737                                var n = this.chart.data.datasets[t._datasetIndex], i = t.custom || {}, o = t._index, a = t._model, r = this.chart.options.elements.point;
5738                                a.radius = i.radius ? i.radius : e.getValueAtIndexOrDefault(n.pointRadius, o, r.radius), a.backgroundColor = i.backgroundColor ? i.backgroundColor : e.getValueAtIndexOrDefault(n.pointBackgroundColor, o, r.backgroundColor), a.borderColor = i.borderColor ? i.borderColor : e.getValueAtIndexOrDefault(n.pointBorderColor, o, r.borderColor), a.borderWidth = i.borderWidth ? i.borderWidth : e.getValueAtIndexOrDefault(n.pointBorderWidth, o, r.borderWidth)
5739                            }})
5740                    }
5741                }, {}], 21: [function (t, e, n) {
5742                    "use strict";
5743                    e.exports = function (t) {
5744                        var e = t.helpers;
5745                        t.defaults.global.animation = {duration: 1e3, easing: "easeOutQuart", onProgress: e.noop, onComplete: e.noop}, t.Animation = t.Element.extend({chart: null, currentStep: 0, numSteps: 60, easing: "", render: null, onAnimationProgress: null, onAnimationComplete: null}), t.animationService = {frameDuration: 17, animations: [], dropFrames: 0, request: null, addAnimation: function (t, e, n, i) {
5746                                var o, a, r = this.animations;
5747                                for (e.chart = t, i || (t.animating = !0), o = 0, a = r.length; o < a; ++o)
5748                                    if (r[o].chart === t)
5749                                        return void(r[o] = e);
5750                                r.push(e), 1 === r.length && this.requestAnimationFrame()
5751                            }, cancelAnimation: function (t) {
5752                                var n = e.findIndex(this.animations, function (e) {
5753                                    return e.chart === t
5754                                });
5755                                -1 !== n && (this.animations.splice(n, 1), t.animating = !1)
5756                            }, requestAnimationFrame: function () {
5757                                var t = this;
5758                                null === t.request && (t.request = e.requestAnimFrame.call(window, function () {
5759                                    t.request = null, t.startDigest()
5760                                }))
5761                            }, startDigest: function () {
5762                                var t = this, e = Date.now(), n = 0;
5763                                t.dropFrames > 1 && (n = Math.floor(t.dropFrames), t.dropFrames = t.dropFrames % 1), t.advance(1 + n);
5764                                var i = Date.now();
5765                                t.dropFrames += (i - e) / t.frameDuration, t.animations.length > 0 && t.requestAnimationFrame()
5766                            }, advance: function (t) {
5767                                for (var n, i, o = this.animations, a = 0; a < o.length; )
5768                                    i = (n = o[a]).chart, n.currentStep = (n.currentStep || 0) + t, n.currentStep = Math.min(n.currentStep, n.numSteps), e.callback(n.render, [i, n], i), e.callback(n.onAnimationProgress, [n], i), n.currentStep >= n.numSteps ? (e.callback(n.onAnimationComplete, [n], i), i.animating = !1, o.splice(a, 1)) : ++a
5769                            }}, Object.defineProperty(t.Animation.prototype, "animationObject", {get: function () {
5770                                return this
5771                            }}), Object.defineProperty(t.Animation.prototype, "chartInstance", {get: function () {
5772                                return this.chart
5773                            }, set: function (t) {
5774                                this.chart = t
5775                            }})
5776                    }
5777                }, {}], 22: [function (t, e, n) {
5778                    "use strict";
5779                    e.exports = function (t) {
5780                        var e = t.canvasHelpers = {};
5781                        e.drawPoint = function (e, n, i, o, a) {
5782                            var r, s, l, c, u, d;
5783                            if ("object" != typeof n || "[object HTMLImageElement]" !== (r = n.toString()) && "[object HTMLCanvasElement]" !== r) {
5784                                if (!(isNaN(i) || i <= 0)) {
5785                                    switch (n) {
5786                                        default:
5787                                            e.beginPath(), e.arc(o, a, i, 0, 2 * Math.PI), e.closePath(), e.fill();
5788                                            break;
5789                                        case"triangle":
5790                                            e.beginPath(), u = (s = 3 * i / Math.sqrt(3)) * Math.sqrt(3) / 2, e.moveTo(o - s / 2, a + u / 3), e.lineTo(o + s / 2, a + u / 3), e.lineTo(o, a - 2 * u / 3), e.closePath(), e.fill();
5791                                            break;
5792                                        case"rect":
5793                                            d = 1 / Math.SQRT2 * i, e.beginPath(), e.fillRect(o - d, a - d, 2 * d, 2 * d), e.strokeRect(o - d, a - d, 2 * d, 2 * d);
5794                                            break;
5795                                        case"rectRounded":
5796                                            var h = i / Math.SQRT2, p = o - h, f = a - h, m = Math.SQRT2 * i;
5797                                            t.helpers.drawRoundedRectangle(e, p, f, m, m, i / 2), e.fill();
5798                                            break;
5799                                        case"rectRot":
5800                                            d = 1 / Math.SQRT2 * i, e.beginPath(), e.moveTo(o - d, a), e.lineTo(o, a + d), e.lineTo(o + d, a), e.lineTo(o, a - d), e.closePath(), e.fill();
5801                                            break;
5802                                        case"cross":
5803                                            e.beginPath(), e.moveTo(o, a + i), e.lineTo(o, a - i), e.moveTo(o - i, a), e.lineTo(o + i, a), e.closePath();
5804                                            break;
5805                                        case"crossRot":
5806                                            e.beginPath(), l = Math.
5806cos(Math.PI / 4) * i, c = Math.sin(Math.PI / 4) * i, e.moveTo(o - l, a - c), e.lineTo(o + l, a + c), e.moveTo(o - l, a + c), e.lineTo(o + l, a - c), e.closePath();
5807                                            break;
5808                                        case"star":
5809                                            e.beginPath(), e.moveTo(o, a + i), e.lineTo(o, a - i), e.moveTo(o - i, a), e.lineTo(o + i, a), l = Math.cos(Math.PI / 4) * i, c = Math.sin(Math.PI / 4) * i, e.moveTo(o - l, a - c), e.lineTo(o + l, a + c), e.moveTo(o - l, a + c), e.lineTo(o + l, a - c), e.closePath();
5810                                            break;
5811                                        case"line":
5812                                            e.beginPath(), e.moveTo(o - i, a), e.lineTo(o + i, a), e.closePath();
5813                                            break;
5814                                        case"dash":
5815                                            e.beginPath(), e.moveTo(o, a), e.lineTo(o + i, a), e.closePath()
5816                                    }
5817                                    e.stroke()
5818                                }
5819                            } else
5820                                e.drawImage(n, o - n.width / 2, a - n.height / 2, n.width, n.height)
5821                        }, e.clipArea = function (t, e) {
5822                            t.save(), t.beginPath(), t.rect(e.left, e.top, e.right - e.left, e.bottom - e.top), t.clip()
5823                        }, e.unclipArea = function (t) {
5824                            t.restore()
5825                        }, e.lineTo = function (t, e, n, i) {
5826                            if (n.steppedLine)
5827                                return"after" === n.steppedLine ? t.lineTo(e.x, n.y) : t.lineTo(n.x, e.y), void t.lineTo(n.x, n.y);
5828                            n.tension ? t.bezierCurveTo(i ? e.controlPointPreviousX : e.controlPointNextX, i ? e.controlPointPreviousY : e.controlPointNextY, i ? n.controlPointNextX : n.controlPointPreviousX, i ? n.controlPointNextY : n.controlPointPreviousY, n.x, n.y) : t.lineTo(n.x, n.y)
5829                        }, t.helpers.canvas = e
5830                    }
5831                }, {}], 23: [function (t, e, n) {
5832                    "use strict";
5833                    e.exports = function (t) {
5834                        function e(e) {
5835                            var n = (e = e || {}).data = e.data || {};
5836                            return n.datasets = n.datasets || [], n.labels = n.labels || [], e.options = o.configMerge(t.defaults.global, t.defaults[e.type], e.options || {}), e
5837                        }
5838                        function n(t) {
5839                            var e = t.options;
5840                            e.scale ? t.scale.options = e.scale : e.scales && e.scales.xAxes.concat(e.scales.yAxes).forEach(function (e) {
5841                                t.scales[e.id].options = e
5842                            }), t.tooltip._options = e.tooltips
5843                        }
5844                        function i(t) {
5845                            return"top" === t || "bottom" === t
5846                        }
5847                        var o = t.helpers, a = t.plugins, r = t.platform;
5848                        t.types = {}, t.instances = {}, t.controllers = {}, o.extend(t.prototype, {construct: function (n, i) {
5849                                var a = this;
5850                                i = e(i);
5851                                var s = r.acquireContext(n, i), l = s && s.canvas, c = l && l.height, u = l && l.
5851width;
5852                                a.id = o.uid(), a.ctx = s, a.canvas = l, a.config = i, a.width = u, a.height = c, a.aspectRatio = c ? u / c : null, a.options = i.options, a._bufferedRender = !1, a.chart = a, a.controller = a, t.instances[a.id] = a, Object.defineProperty(a, "data", {get: function () {
5853                                        return a.config.data
5854                                    }, set: function (t) {
5855                                        a.config.data = t
5856                                    }}), s && l ? (a.initialize(), a.update()) : console.error("Failed to create chart: can't acquire context from the given item")
5857                            }, initialize: function () {
5858                                var t = this;
5859                                return a.notify(t, "beforeInit"), o.retinaScale(t), t.bindEvents(), t.options.responsive && t.resize(!0), t.ensureScalesHaveIDs(), t.buildScales(), t.initToolTip(), a.notify(t, "afterInit"), t
5860                            }, clear: function () {
5861                                return o.clear(this), this
5862                            }, stop: function () {
5863                                return t.animationService.cancelAnimation(this), this
5864                            }, resize: function (t) {
5865                                var e = this, n = e.options, i = e.canvas, r = n.maintainAspectRatio && e.aspectRatio || null, s = Math.floor(o.getMaximumWidth(i)), l = Math.floor(r ? s / r : o.getMaximumHeight(i));
5866                                if ((e.width !== s || e.height !== l) && (i.width = e.width = s, i.height = e.height = l, i.style.width = s + "px", i.style.height = l + "px", o.retinaScale(e), !t)) {
5867                                    var c = {width: s, height: l};
5868                                    a.notify(e, "resize", [c]), e.options.onResize && e.options.onResize(e, c), e.stop(), e.update(e.options.responsiveAnimationDuration)
5869                                }
5870                            }, ensureScalesHaveIDs: function () {
5871                                var t = this.options, e = t.scales || {}, n = t.scale;
5872                                o.each(e.xAxes, function (t, e) {
5873                                    t.id = t.id || "x-axis-" + e
5874                                }), o.each(e.yAxes, function (t, e) {
5875                                    t.id = t.id || "y-axis-" + e
5876                                }), n && (n.id = n.id || "scale")
5877                            }, buildScales: function () {
5878                                var e = this, n = e.options, a = e.scales = {}, r = [];
5879                                n.scales && (r = r.concat((n.scales.xAxes || []).map(function (t) {
5880                                    return{options: t, dtype: "category", dposition: "bottom"}
5881                                }), (n.scales.yAxes || []).map(function (t) {
5882                                    return{options: t, dtype: "linear", dposition: "left"}
5883                                }))), n.scale && r.push({options: n.scale, dtype: "radialLinear", isDefault: !0, dposition: "chartArea"}), o.each(r, function (n) {
5884                                    var r = n.options, s = o.getValueOrDefault(r.type, n.dtype), l = t.scaleService.getScaleConstructor(s);
5885                                    if (l) {
5886                                        i(r.position) !== i(n.dposition) && (r.position = n.dposition);
5887                                        var c = new l({id: r.id, options: r, ctx: e.ctx, chart: e});
5888                                        a[c.id] = c, n.isDefault && (e.scale = c)
5889                                    }
5890                                }), t.scaleService.addScalesToLayout(this)
5891                            }, buildOrUpdateControllers: function () {
5892                                var e = this, n = [], i = [];
5893                                if (o.each(e.data.datasets, function (o, a) {
5894                                    var r = e.getDatasetMeta(a);
5895                                    if (r.type || (r.type = o.type || e.config.type), n.push(r.type), r.controller)
5896                                        r.controller.updateIndex(a);
5897                                    else {
5898                                        var s = t.controllers[r.type];
5899                                        if (void 0 === s)
5900                                            throw new Error('"' + r.type + '" is not a chart type.');
5901                                        r.controller = new s(e, a), i.push(r.controller)
5902                                    }
5903                                }, e), n.length > 1)
5904                                    for (var a = 1; a < n.length; a++)
5905                                        if (n[a] !== n[a - 1]) {
5906                                            e.isCombo = !0;
5907                                            break
5908                                        }
5909                                return i
5910                            }, resetElements: function () {
5911                                var t = this;
5912                                o.each(t.data.datasets, function (e, n) {
5913                                    t.getDatasetMeta(n).controller.reset()
5914                                }, t)
5915                            }, reset: function () {
5916                                this.resetElements(), this.tooltip.initialize()
5917                            }, update: function (t, e) {
5918                                var i = this;
5919                                if (n(i), !1 !== a.notify(i, "beforeUpdate")) {
5920                                    i.tooltip._data = i.data;
5921                                    var r = i.buildOrUpdateControllers();
5922                                    o.each(i.data.datasets, function (t, e) {
5923                                        i.getDatasetMeta(e).controller.buildOrUpdateElements()
5924                                    }, i), i.updateLayout(), o.each(r, function (t) {
5925                                        t.reset()
5926                                    }), i.updateDatasets(), a.notify(i, "afterUpdate"), i._bufferedRender ? i._bufferedRequest = {lazy: e, duration: t} : i.render(t, e)
5927                                }
5928                            }, updateLayout: function () {
5929                                var e = this;
5930                                !1 !== a.notify(e, "beforeLayout") && (t.layoutService.update(this, this.width, this.height), a.notify(e, "afterScaleUpdate"), a.notify(e, "afterLayout"))
5931                            }, updateDatasets: function () {
5932                                var t = this;
5933                                if (!1 !== a.notify(t, "beforeDatasetsUpdate")) {
5934                                    for (var e = 0, n = t.data.datasets.length; e < n; ++e)
5935                                        t.updateDataset(e);
5936                                    a.notify(t, "afterDatasetsUpdate")
5937                                }
5938                            }, updateDataset: function (t) {
5939                                var e = this, n = e.getDatasetMeta(t), i = {meta: n, index: t};
5940                                !1 !== a.notify(e, "beforeDatasetUpdate", [i]) && (n.controller.update(
5940), a.notify(e, "afterDatasetUpdate", [i]))
5941                            }, render: function (e, n) {
5942                                var i = this;
5943                                if (!1 !== a.notify(i, "beforeRender")) {
5944                                    var r = i.options.animation, s = function (t) {
5945                                        a.notify(i, "afterRender"), o.callback(r && r.onComplete, [t], i)
5946                                    };
5947                                    if (r && (void 0 !== e && 0 !== e || void 0 === e && 0 !== r.duration)) {
5948                                        var l = new t.Animation({numSteps: (e || r.duration) / 16.66, easing: r.easing, render: function (t, e) {
5949                                                var n = o.easingEffects[e.easing], i = e.currentStep, a = i / e.numSteps;
5950                                                t.draw(n(a), a, i)
5951                                            }, onAnimationProgress: r.onProgress, onAnimationComplete: s});
5952                                        t.animationService.addAnimation(i, l, e, n)
5953                                    } else
5954                                        i.draw(), s(new t.Animation({numSteps: 0, chart: i}));
5955                                    return i
5956                                }
5957                            }, draw: function (t) {
5958                                var e = this;
5959                                e.clear(), void 0 !== t && null !== t || (t = 1), e.transition(t), !1 !== a.notify(e, "beforeDraw", [t]) && (o.each(e.boxes, function (t) {
5960                                    t.draw(e.chartArea)
5961                                }, e), e.scale && e.scale.draw(), e.drawDatasets(t), e.tooltip.draw(), a.notify(e, "afterDraw", [t]))
5962                            }, transition: function (t) {
5963                                for (var e = this, n = 0, i = (e.data.datasets || []).length; n < i; ++n)
5964                                    e.isDatasetVisible(n) && e.getDatasetMeta(n).controller.transition(t);
5965                                e.tooltip.transition(t)
5966                            }, drawDatasets: function (t) {
5967                                var e = this;
5968                                if (!1 !== a.notify(e, "beforeDatasetsDraw", [t])) {
5969                                    for (var n = (e.data.datasets || []).length - 1; n >= 0; --n)
5970                                        e.isDatasetVisible(n) && e.drawDataset(n, t);
5971                                    a.notify(e, "afterDatasetsDraw", [t])
5972                                }
5973                            }, drawDataset: function (t, e) {
5974                                var n = this, i = n.getDatasetMeta(t), o = {meta: i, index: t, easingValue: e};
5975                                !1 !== a.notify(n, "beforeDatasetDraw", [o]) && (i.controller.draw(e), a.notify(n, "afterDatasetDraw", [o]))
5976                            }, getElementAtEvent: function (e) {
5977                                return t.Interaction.modes.single(this, e)
5978                            }, getElementsAtEvent: function (e) {
5979                                return t.Interaction.modes.label(this, e, {intersect: !0})
5980                            }, getElementsAtXAxis: function (e) {
5981                                return t.Interaction.modes["x-axis"](this, e, {intersect: !0})
5982                            }, getElementsAtEventForMode: function (e, n, i) {
5983                                var o = t.Interaction.modes[n];
5984                                return"function" == typeof o ? o(this, e, i) : []
5985                            }, getDatasetAtEvent: function (e) {
5986                                return t.Interaction.modes.dataset(this, e, {intersect: !0})
5987                            }, getDatasetMeta: function (t) {
5988                                var e = this, n = e.data.datasets[t];
5989                                n._meta || (n._meta = {});
5990                                var i = n._meta[e.id];
5991                                return i || (i = n._meta[e.id] = {type: null, data: [], dataset: null, controller: null, hidden: null, xAxisID: null, yAxisID: null}), i
5992                            }, getVisibleDatasetCount: function () {
5993                                for (var t = 0, e = 0, n = this.data.datasets.length; e < n; ++e)
5994                                    this.isDatasetVisible(e) && t++;
5995                                return t
5996                            }, isDatasetVisible: function (t) {
5997                                var e = this.getDatasetMeta(t);
5998                                return"boolean" == typeof e.hidden ? !e.hidden : !this.data.datasets[t].hidden
5999                            }, generateLegend: function () {
6000                                return this.options.legendCallback(this)
6001                            }, destroy: function () {
6002                                var e, n, i, s = this, l = s.canvas;
6003                                for (s.stop(), n = 0, i = s.data.datasets.length; n < i; ++n)
6004                                    (e = s.getDatasetMeta(n)).controller && (e.controller.destroy(), e.controller = null);
6005                                l && (s.unbindEvents(), o.clear(s), r.releaseContext(s.ctx), s.canvas = null, s.ctx = null), a.notify(s, "destroy"), delete t.instances[s.id]
6006                            }, toBase64Image: function () {
6007                                return this.canvas.toDataURL.apply(this.canvas, arguments)
6008                            }, initToolTip: function () {
6009                                var e = this;
6010                                e.tooltip = new t.Tooltip({_chart: e, _chartInstance: e, _data: e.data, _options: e.options.tooltips}, e), e.tooltip.initialize()
6011                            }, bindEvents: function () {
6012                                var t = this, e = t._listeners = {}, n = function () {
6013                                    t.eventHandler.apply(t, arguments)
6014                                };
6015                                o.each(t.options.events, function (i) {
6016                                    r.addEventListener(t, i, n), e[i] = n
6017                                }), t.options.responsive && (n = function () {
6018                                    t.resize()
6019                                }, r.addEventListener(t, "resize", n), e.resize = n)
6020                            }, unbindEvents: function () {
6021                                var t = this, e = t._listeners;
6022                                e && (delete t._listeners, o.each(e, function (e, n) {
6023                                    r.removeEventListener(t, n, e)
6024                                }))
6025                            }, updateHoverStyle: function (t, e, n) {
6026                                var i, o, a, r = n ? "setHoverStyle" : "removeHoverStyle";
6027                                for (o = 0, a = t.length; o < a; ++o)
6028                                    (i = t[o]) && this.getDatasetMeta(i._datasetIndex).controller[r](i)
6029                            }, eventHandler: function (t) {
6030                                var e = this, n = e.tooltip;
6031                                if (!1 !== a.notify(e, "beforeEvent", [t])) {
6032                                    e._bufferedRender = !0, e._bufferedRequest = null;
6033                                    var i = e.handleEvent(t);
6034                                    i |= n && n.handleEvent(t), a.notify(e, "afterEvent", [t]);
6035                                    var o = e._bufferedRequest;
6036                                    return o ? e.render(o.duration, o.lazy) : i && !e.animating && (e.stop(), e.render(e.options.hover.animationDuration, !0)), e._bufferedRender = !1, e._bufferedRequest = null, e
6037                                }
6038                            }, handleEvent: function (t) {
6039                                var e = this, n = e.options || {}, i = n.hover, a = !1;
6040                                return e.lastActive = e.lastActive || [], "mouseout" === t.type ? e.active = [] : e.active = e.getElementsAtEventForMode(t, i.mode, i), i.onHover && i.onHover.call(e, t.native, e.active), "mouseup" !== t.type && "click" !== t.type || n.onClick && n.onClick.call(e, t.native, e.active), e.lastActive.length && e.updateHoverStyle(e.lastActive, i.mode, !1), e.active.length && i.mode && e.updateHoverStyle(e.active, i.mode, !0), a = !o.arrayEquals(e.active, e.lastActive), e.lastActive = e.active, a
6041                            }}), t.Controller = t
6042                    }
6043                }, {}], 24: [function (t, e, n) {
6044                    "use strict";
6045                    e.exports = function (t) {
6046                        function e(t, e) {
6047                            t._chartjs ? t._chartjs.listeners.push(e) : (Object.defineProperty(t, "_chartjs", {configurable: !0, enumerable: !1, value: {listeners: [e]}}), o.forEach(function (e) {
6048                                var n = "onData" + e.charAt(0).toUpperCase() + e.slice(1), o = t[e];
6049                                Object.defineProperty(t, e, {configurable: !0, enumerable: !1, value: function () {
6050                                        var e = Array.prototype.slice.call(arguments), a = o.apply(this, e);
6051                                        return i.each(t._chartjs.listeners, function (t) {
6052                                            "function" == typeof t[n] && t[n].apply(t, e)
6053                                        }), a
6054                                    }})
6055                            }))
6056                        }
6057                        function n(t, e) {
6058                            var n = t._chartjs;
6059                            if (n) {
6060                                var i = n.listeners, a = i.indexOf(e);
6061                                -1 !== a && i.splice(a, 1), i.length >
6061 0 || (o.forEach(function (e) {
6062                                    delete t[e]
6063                                }), delete t._chartjs)
6064                            }
6065                        }
6066                        var i = t.helpers, o = ["push", "pop", "shift", "splice", "unshift"];
6067                        t.DatasetController = function (t, e) {
6068                            this.initialize(t, e)
6069                        }, i.extend(t.DatasetController.prototype, {datasetElementType: null, dataElementType: null, initialize: function (t, e) {
6070                                var n = this;
6071                                n.chart = t, n.index = e, n.linkScales(), n.addElements()
6072                            }, updateIndex: function (t) {
6073                                this.index = t
6074                            }, linkScales: function () {
6075                                var t = this, e = t.getMeta(), n = t.getDataset();
6076                                null === e.xAxisID && (e.xAxisID = n.xAxisID || t.chart.options.scales.xAxes[0].id), null === e.yAxisID && (e.yAxisID = n.yAxisID || t.chart.options.scales.yAxes[0].id)
6077                            }, getDataset: function () {
6078                                return this.chart.data.datasets[this.index]
6079                            }, getMeta: function () {
6080                                return this.chart.getDatasetMeta(this.index)
6081                            }, getScaleForId: function (t) {
6082                                return this.chart.scales[t]
6083                            }, reset: function () {
6084                                this.update(!0)
6085                            }, destroy: function () {
6086                                this._data && n(this._data, this)
6087                            }, createMetaDataset: function () {
6088                                var t = this, e = t.datasetElementType;
6089                                return e && new e({_chart: t.chart, _datasetIndex: t.index})
6090                            }, createMetaData: function (t) {
6091                                var e = this, n = e.dataElementType;
6092                                return n && new n({_chart: e.chart, _datasetIndex: e.index, _index: t})
6093                            }, addElements: function () {
6094                                var t, e, n = this, i = n.getMeta(), o = n.getDataset().data || [], a = i.data;
6095                                for (t = 0, e = o.length; t < e; ++t)
6096                                    a[t] = a[t] || n.createMetaData(t);
6097                                i.dataset = i.dataset || n.createMetaDataset()
6098                            }, addElementAndReset: function (t) {
6099                                var e = this.createMetaData(t);
6100                                this.getMeta().data.splice(t, 0, e), this.updateElement(e, t, !0)
6101                            }, buildOrUpdateElements: function () {
6102                                var t = this, i = t.getDataset(), o = i.data || (i.data = []);
6103                                t._data !== o && (t._data && n(t._data, t), e(o, t), t._data = o), t.resyncElements()
6104                            }, update: i.noop, transition: function (t) {
6105                                for (var e = this.getMeta(), n = e.data || [], i = n.length, o = 0; o < i; ++o)
6106                                    n[o].transition(t);
6107                                e.dataset && e.dataset.transition(t)
6108                            }, draw: function () {
6109                                var t = this.getMeta(), e = t.data || [], n = e.length, i = 0;
6110                                for (t.dataset && t.dataset.draw(); i < n; ++i)
6111                                    e[i].draw()
6112                            }, removeHoverStyle: function (t, e) {
6113                                var n = this.chart.data.datasets[t._datasetIndex], o = t._index, a = t.custom || {}, r = i.getValueAtIndexOrDefault, s = t._model;
6114                                s.backgroundColor = a.backgroundColor ? a.backgroundColor : r(n.backgroundColor, o, e.backgroundColor), s.borderColor = a.borderColor ? a.borderColor : r(n.borderColor, o, e.borderColor), s.borderWidth = a.borderWidth ? a.borderWidth : r(n.borderWidth, o, e.borderWidth)
6115                            }, setHoverStyle: function (t) {
6116                                var e = this.chart.data.datasets[t._datasetIndex], n = t._index, o = t.custom || {}, a = i.getValueAtIndexOrDefault, r = i.getHoverColor, s = t._model;
6117                                s.backgroundColor = o.hoverBackgroun
6117dColor ? o.hoverBackgroundColor : a(e.hoverBackgroundColor, n, r(s.backgroundColor)), s.borderColor = o.hoverBorderColor ? o.hoverBorderColor : a(e.hoverBorderColor, n, r(s.borderColor)), s.borderWidth = o.hoverBorderWidth ? o.hoverBorderWidth : a(e.hoverBorderWidth, n, s.borderWidth)
6118                            }, resyncElements: function () {
6119                                var t = this, e = t.getMeta(), n = t.getDataset().data, i = e.data.length, o = n.length;
6120                                o < i ? e.data.splice(o, i - o) : o > i && t.insertElements(i, o - i)
6121                            }, insertElements: function (t, e) {
6122                                for (var n = 0; n < e; ++n)
6123                                    this.addElementAndReset(t + n)
6124                            }, onDataPush: function () {
6125                                this.insertElements(this.getDataset().data.length - 1, arguments.length)
6126                            }, onDataPop: function () {
6127                                this.getMeta().data.pop()
6128                            }, onDataShift: function () {
6129                                this.getMeta().data.shift()
6130                            }, onDataSplice: function (t, e) {
6131                                this.getMeta().data.splice(t, e), this.insertElements(t, arguments.length - 2)
6132                            }, onDataUnshift: function () {
6133                                this.insertElements(0, arguments.length)
6134                            }}), t.DatasetController.extend = i.inherits
6135                    }
6136                }, {}], 25: [function (t, e, n) {
6137                    "use strict";
6138                    var i = t(3);
6139                    e.exports = function (t) {
6140                        function e(t, e, n, o) {
6141                            var a, r, s, l, c, u, d, h, p, f = Object.keys(n);
6142                            for (a = 0, r = f.length; a < r; ++a)
6143                                if (s = f[a], u = n[s], e.hasOwnProperty(s) || (e[s] = u), (l = e[s]) !== u && "_" !== s[0]) {
6144                                    if (t.hasOwnProperty(s) || (t[s] = l), c = t[s], (d = typeof u) === typeof c)
6145                                        if ("string" === d) {
6146                                            if ((h = i(c)).valid && (p = i(u)).valid) {
6147                                                e[s] = p.mix(h, o).rgbString();
6148                                                continue
6149                                            }
6150                                        } else if ("number" === d && isFinite(c) && isFinite(u)) {
6151                                            e[s] = c + (u - c) * o;
6152                                            continue
6153                                        }
6154                                    e[s] = u
6155                                }
6156                        }
6157                        var n = t.helpers;
6158                        t.elements = {}, t.Element = function (t) {
6159                            n.extend(this, t), this.initialize.apply(this, arguments)
6160                        }, n.extend(t.Element.prototype, {initialize: function () {
6161                                this.hidden = !1
6162                            }, pivot: function () {
6163                                var t = this;
6164                                return t._view || (t._view = n.clone(t._model)), t._start = {}, t
6165                            }, transition: function (t) {
6166                                var n = this, i = n._model, o = n._start, a = n._view;
6167                                return i && 1 !== t ? (a || (a = n._view = {}), o || (o = n._start = {}), e(o, a, i, t), n) : (n._view = i, n._start = null, n)
6168                            }, tooltipPosition: function () {
6169                                return{x: this._model.x, y: this._model.y}
6170                            }, hasValue: function () {
6171                                return n.isNumber(this._model.x) && n.isNumber(this._model.y)
6172                            }}), t.Element.extend = n.inherits
6173                    }
6174                }, {3: 3}], 26: [function (t, e, n) {
6175                    "use strict";
6176                    var i = t(3);
6177                    e.exports = function (t) {
6178                        function e(t, e, n) {
6179                            var i;
6180                            return"string" == typeof t ? (i = parseInt(t, 10), -1 !== t.indexOf("%") && (i = i / 100 * e.parentNode[n])) : i = t, i
6181                        }
6182                        function n(t) {
6183                            return void 0 !== t && null !== t && "none" !== t
6184                        }
6185                        function o(t, i, o) {
6186                            var a = document.defaultView, r = t.parentNode, s = a.getComputedStyle(t)[i], l = a.getComputedStyle(r)[i], c = n(s), u = n(l), d = Number.POSITIVE_INFINITY;
6187                            return c || u ? Math.min(c ? e(s, t, o) : d, u ? e(l, r, o) : d) : "none"
6188                        }
6189                        var a = t.helpers = {};
6190                        a.each = function (t, e, n, i) {
6191                            var o, r;
6192                            if (a.isArray(t))
6193                                if (r = t.length, i)
6194                                    for (o = r - 1; o >= 0; o--)
6195                                        e.call(n, t[o], o);
6196                                else
6197                                    for (o = 0; o < r; o++)
6198                                        e.call(n, t[o], o);
6199                            else if ("object" == typeof t) {
6200                                var s = Object.keys(t);
6201                                for (r = s.length, o = 0; o < r; o++)
6202                                    e.call(n, t[s[o]], s[o])
6203                            }
6204                        }, a.clone = function (t) {
6205                            var e = {};
6206                            return a.each(t, function (t, n) {
6207                                a.isArray(t) ? e[n] = t.slice(0) : e[n] = "object" == typeof t && null !== t ? a.clone(t) : t
6208                            }), e
6209                        }, a.extend = function (t) {
6210                            for (var e = 1, n = arguments.length; e < n; e++)
6211                                a.each(arguments[e], function (e, n) {
6212                                    t[n] = e
6213                                });
6214                            return t
6215                        }, a.configMerge = function (e) {
6216                            var n = a.clone(e);
6217                            return a.each(Array.prototype.slice.call(arguments, 1), function (e) {
6218                                a.each(e, function (e, i) {
6219                                    var o = n.hasOwnProperty(i), r = o ? n[i] : {};
6220                                    "scales" === i ? n[i] = a.scaleMerge(r, e) : "scale" === i ? n[i] = a.configMerge(r, t.scaleService.getScaleDefaults(e.type), e) : !o || "object" != typeof r || a.isArray(r) || null === r || "object" != typeof e || a.isArray(e) ? n[i] = e : n[i] = a.configMerge(r, e)
6221                                })
6222                            }), n
6223                        }, a.scaleMerge = function (e, n) {
6224                            var i = a.clone(e);
6225                            return a.each(n, function (e, n) {
6226                                "xAxes" === n || "yAxes" === n ? i.hasOwnProperty(n) ? a.each(e, function (e, o) {
6227                                    var r = a.getValueOrDefault(e.type, "xAxes" === n ? "category" : "linear"), s = t.scaleService.getScaleDefaults(r);
6228                                    o >= i[n].length || !i[n][o].type ? i[n].push(a.configMerge(s, e)) : e.type && e.type !== i[n][o].type ? i[n][o] = a.configMerge(i[n][o], s, e) : i[n][o] = a.configMerge(i[n][o], e)
6229                                }) : (i[n] = [], a.each(e, function (e) {
6230                                    var o = a.getValueOrDefault(e.type, "xAxes" === n ? "category" : "linear");
6231                                    i[n].push(a.configMerge(t.scaleService.getScaleDefaults(o), e))
6232                                })) : i.hasOwnProperty(n) && "object" == typeof i[n] && null !== i[n] && "object" == typeof e ? i[n] = a.configMerge(i[n], e) : i[n] = e
6233                            }), i
6234                        }, a.getValueAtIndexOrDefault = function (t, e, n) {
6235                            return void 0 === t || null === t ? n : a.isArray(t) ? e < t.length ? t[e] : n : t
6236                        }, a.getValueOrDefault = function (t, e) {
6237                            return void 0 === t ? e : t
6238                        }, a.indexOf = Array.prototype.indexOf ? function (t, e) {
6239                            return t.indexOf(e)
6240                        } : function (t, e) {
6241                            for (var n = 0, i = t.length; n < i; ++n)
6242                                if (t[n] === e)
6243                                    return n;
6244                            return-1
6245                        }, a.where = function (t, e) {
6246                            if (a.isArray(t) && Array.prototype.filter)
6247                                return t.filter(e);
6248                            var n = [];
6249                            return a.each(t, function (t) {
6250                                e(t) && n.push(t)
6251                            }), n
6252                        }, a.findIndex = Array.prototype.findIndex ? function (t, e, n) {
6253                            return t.findIndex(e, n)
6254                        } : function (t, e, n) {
6255                            n = void 0 === n ? t : n;
6256                            for (var i = 0, o = t.length; i < o; ++i)
6257                                if (e.call(n, t[i], i, t))
6258                                    return i;
6259                            return-1
6260                        }, a.findNextWhere = function (t, e, n) {
6261                            void 0 !== n && null !== n || (n = -1);
6262                            for (var i = n + 1; i < t.length; i++) {
6263                                var o = t[i];
6264                                if (e(o))
6265                                    return o
6266                            }
6267                        }, a.findPreviousWhere = function (t, e, n) {
6268                            void 0 !== n && null !== n || (n = t.length);
6269                            for (var i = n - 1; i >= 0; i--) {
6270                                var o = t[i];
6271                                if (e(o))
6272                                    return o
6273                            }
6274                        }, a.inherits = function (t) {
6275                            var e = this, n = t && t.hasOwnProperty("constructor") ? t.constructor : function () {
6276                                return e.apply(this, arguments)
6277                            }, i = function () {
6278                                this.constructor = n
6279                            };
6280                            return i.prototype = e.prototype, n.prototype = new i, n.extend = a.inherits, t && a.extend(n.prototype, t), n.__super__ = e.prototype, n
6281                        }, a.noop = function () {}, a.uid = function () {
6282                            var t = 0;
6283                            return function () {
6284                                return t++
6285                            }
6286                        }(), a.isNumber = function (t) {
6287                            return!isNaN(parseFloat(t)) && isFinite(t)
6288                        }, a.almostEquals = function (t, e, n) {
6289                            return Math.abs(t - e) < n
6290                        }, a.almostWhole = function (t, e) {
6291                            var n = Math.round(t);
6292                            return n - e < t && n + e > t
6293                        }, a.max = function (t) {
6294                            return t.reduce(function (t, e) {
6295                                return isNaN(e) ? t : Math.max(t, e)
6296                            }, Number.NEGATIVE_INFINITY)
6297                        }, a.min = function (t) {
6298                            return t.reduce(function (t, e) {
6299                                return isNaN(e) ? t : Math.min(t, e)
6300                            }, Number.POSITIVE_INFINITY)
6301                        }, a.sign = Math.sign ? function (t) {
6302                            return Math.sign(t)
6303                        } : function (t) {
6304                            return t = +t, 0 === t || isNaN(t) ? t : t > 0 ? 1 : -1
6305                        }, a.log10 = Math.log10 ? function (t) {
6306                            return Math.log10(t)
6307                        } : function (t) {
6308                            return Math.log(t) / Math.LN10
6309                        }, a.toRadians = function (t) {
6310                            return t * (Math.PI / 180)
6311                        }, a.toDegrees = function (t) {
6312                            return t * (180 / Math.PI)
6313                        }, a.getAngleFromPoint = function (t, e) {
6314                            var n = e.x - t.x, i = e.y - t.y, o = Math.sqrt(n * n + i * i), a = Math.atan2(i, n);
6315                            return a < -.5 * Math.PI && (a += 2 * Math.PI), {angle: a, distance: o}
6316                        }, a.distanceBetweenPoints = function (t, e) {
6317                            return Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2))
6318                        }, a.aliasPixel = function (t) {
6319                            return t % 2 == 0 ? 0 : .5
6320                        }, a.splineCurve = function (t, e, n, i) {
6321                            var o = t.skip ? e : t, a = e, r = n.skip ? e : n, s = Math.sqrt(Math.pow(a.x - o.x, 2) + Math.pow(a.y - o.y, 2)), l = Math.sqrt(Math.pow(r.x - a.x, 2) + Math.pow(r.y - a.y, 2)), c = s / (s + l), u = l / (s + l), d = i * (c = isNaN(c) ? 0 : c), h = i * (u = isNaN(u) ? 0 : u);
6322                            return{previous: {x: a.x - d * (r.x - o.x), y: a.y - d * (r.y - o.y)}, next: {x: a.x + h * (r.x - o.x), y: a.y + h * (r.y - o.y)}}
6323                        }, a.EPSILON = Number.EPSILON || 1e-14, a.splineCurveMonotone = function (t) {
6324                            var e, n, i, o, r = (t || []).map(function (t) {
6325                                return{model: t._model, deltaK: 0, mK: 0}
6326                            }), s = r.length;
6327                            for (e = 0; e < s; ++e)
6328                                if (!(i = r[e]).model.skip) {
6329                                    if (n = e > 0 ? r[e - 1] : null, (o = e < s - 1 ? r[e + 1] : null) && !o.model.skip) {
6330                                        var l = o.model.x - i.model.x;
6331                                        i.deltaK = 0 !== l ? (o.model.y - i.model.y) / l : 0
6332                                    }
6333                                    !n || n.model.skip ? i.mK = i.deltaK : !o || o.model.skip ? i.mK = n.deltaK : this.sign(n.deltaK) !== this.sign(i.deltaK) ? i.mK = 0 : i.mK = (n.deltaK + i.deltaK) / 2
6334                                }
6335                            var c, u, d, h;
6336                            for (e = 0; e < s - 1; ++e)
6337                                i = r[e], o = r[e + 1], i.model.skip || o.model.skip || (a.almostEquals(i.deltaK, 0, this.EPSILON) ? i.mK = o.mK = 0 : (c = i.mK / i.deltaK, u = o.mK / i.deltaK, (h = Math.pow(c, 2) + Math.pow(u, 2)) <= 9 || (d = 3 / Math.sqrt(h), i.mK = c * d * i.deltaK, o.mK = u * d * i.deltaK)));
6338                            var p;
6339                            for (e = 0; e < s; ++e)
6340                                (i = r[e]).model.skip || (n = e > 0 ? r[e - 1] : null, o = e < s - 1 ? r[e + 1] : null, n && !n.model.skip && (p = (i.model.x - n.model.x) / 3, i.model.controlPointPreviousX = i.model.x - p, i.model.controlPointPreviousY = i.model.y - p * i.mK), o && !o.model.skip && (p = (o.model.x - i.model.x) / 3, i.model.controlPointNextX = i.model.x + p, i.model.controlPointNextY = i.model.y + p * i.mK))
6341                        }, a.nextItem = function (t, e, n) {
6342                            return n ? e >= t.length - 1 ? t[0] : t[e + 1] : e >= t.length - 1 ? t[t.length - 1] : t[e + 1]
6343                        }, a.previousItem = function (t, e, n) {
6344                            return n ? e <= 0 ? t[t.length - 1] : t[e - 1] : e <= 0 ? t[0] : t[e - 1]
6345                        }, a.niceNum = function (t, e) {
6346                            var n = Math.floor(a.log10(t)), i = t / Math.pow(10, n);
6347                            return(e ? i < 1.5 ? 1 : i < 3 ? 2 : i < 7 ? 5 : 10 : i <= 1 ? 1 : i <= 2 ? 2 : i <= 5 ? 5 : 10) * Math.pow(10, n)
6348                        };
6349                        var r = a.easingEffects = {linear: function (t) {
6350                                return t
6351                            }, easeInQuad: function (t) {
6352                                return t * t
6353                            }, easeOutQuad: function (t) {
6354                                return-1 * t * (t - 2)
6355                            }, easeInOutQuad: function (t) {
6356                                return(t /= .5) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1)
6357                            }, easeInCubic: function (t) {
6358                                return t * t * t
6359                            }, easeOutCubic: function (t) {
6360                                return 1 * ((t = t / 1 - 1) * t * t + 1)
6361                            }, easeInOutCubic: function (t) {
6362                                return(t /= .5) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2)
6363                            }, easeInQuart: function (t) {
6364                                return t * t * t * t
6365                            }, easeOutQuart: function (t) {
6366                                return-1 * ((t = t / 1 - 1) * t * t * t - 1)
6367                            }, easeInOutQuart: function (t) {
6368                                return(t /= .5) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2)
6369                            }, easeInQuint: function (t) {
6370                                return 1 * (t /= 1) * t * t * t * t
6371                            }, easeOutQuint: function (t) {
6372                                return 1 * ((t = t / 1 - 1) * t * t * t * t + 1)
6373                            }, easeInOutQuint: function (t) {
6374                                return(t /= .5) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2)
6375                            }, easeInSine: function (t) {
6376                                return-1 * Math.cos(t / 1 * (Math.PI / 2)) + 1
6377                            }, easeOutSine: function (t) {
6378                                return 1 * Math.sin(t / 1 * (Math.PI / 2))
6379                            }, easeInOutSine: function (t) {
6380                                return-.5 * (Math.cos(Math.PI * t / 1) - 1)
6381                            }, easeInExpo: function (t) {
6382                                return 0 === t ? 1 : 1 * Math.pow(2, 10 * (t / 1 - 1))
6383                            }, easeOutExpo: function (t) {
6384                                return 1 === t ? 1 : 1 * (1 - Math.pow(2, -10 * t / 1))
6385                            }, easeInOutExpo: function (t) {
6386                                return 0 === t ? 0 : 1 === t ? 1 : (t /= .5) < 1 ? .5 * Math.pow(2, 10 * (t - 1)) : .5 * (2 - Math.pow(2, -10 * --t))
6387                            }, easeInCirc: function (t) {
6388                                return t >= 1 ? t : -1 * (Math.sqrt(1 - (t /= 1) * t) - 1)
6389                            }, easeOutCirc: function (t) {
6390                                return 1 * Math.sqrt(1 - (t = t / 1 - 1) * t)
6391                            }, easeInOutCirc: function (t) {
6392                                return(t /= .5) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1)
6393                            }, easeInElastic: function (t) {
6394                                var e = 1.70158, n = 0, i = 1;
6395                                return 0 === t ? 0 : 1 == (t /= 1) ? 1 : (n || (n = .3), i < Math.abs(1) ? (i = 1, e = n / 4) : e = n / (2 * Math.PI) * Math.asin(1 / i), -i * Math.pow(2, 10 * (t -= 1)) * Math.sin((1 * t - e) * (2 * Math.PI) / n))
6396                            }, easeOutElastic: function (t) {
6397                                var e = 1.70158, n = 0, i = 1;
6398                                return 0 === t ? 0 : 1 == (t /= 1) ? 1 : (n || (n = .3), i < Math.abs(1) ? (i = 1, e = n / 4) : e = n / (2 * Math.PI) * Math.asin(1 / i), i * Math.pow(2, -10 * t) * Math.sin((1 * t - e) * (2 * Math.PI) / n) + 1)
6399                            }, easeInOutElastic: function (t) {
6400                                var e = 1.70158, n = 0, i = 1;
6401                                return 0 === t ? 0 : 2 == (t /= .5) ? 1 : (n || (n = .3 * 1.5 * 1), i < Math.abs(1) ? (i = 1, e = n / 4) : e = n / (2 * Math.PI) * Math.asin(1 / i), t < 1 ? i * Math.pow(2, 10 * (t -= 1)) * Math.sin((1 * t - e) * (2 * Math.PI) / n) * -.5 : i * Math.pow(2, -10 * (t -= 1)) * Math.sin((1 * t - e) * (2 * Math.PI) / n) * .5 + 1)
6402                            }, easeInBack: function (t) {
6403                                var e = 1.70158;
6404                                return 1 * (t /= 1) * t * ((e + 1) * t - e)
6405                            }, easeOutBack: function (t) {
6406                                var e = 1.70158;
6407                                return 1 * ((t = t / 1 - 1) * t * ((e + 1) * t + e) + 1)
6408                            }, easeInOutBack: function (t) {
6409                                var e = 1.70158;
6410                                return(t /= .5) < 1 ? t * t * ((1 + (e *= 1.525)) * t - e) * .5 : .5 * ((t -= 2) * t * ((1 + (e *= 1.525)) * t + e) + 2)
6411                            }, easeInBounce: function (t) {
6412                                return 1 - r.easeOutBounce(1 - t)
6413                            }, easeOutBounce: function (t) {
6414                                return(t /= 1) < 1 / 2.75 ? 7.5625 * t * t * 1 : t < 2 / 2.75 ? 1 * (7.5625 * (t -= 1.5 / 2.75) * t + .75) : t < 2.5 / 2.75 ? 1 * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) : 1 * (7.5625 * (t -= 2.625 / 2.75) * t + .984375)
6415                            }, easeInOutBounce: function (t) {
6416                                return t < .5 ? .5 * r.easeInBounce(2 * t) : .5 * r.easeOutBounce(2 * t - 1) + .5
6417                            }};
6418                        a.requestAnimFrame = "undefined" == typeof window ? function (t) {
6419                            t()
6420                        } : window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (t) {
6421                            return window.setTimeout(t, 1e3 / 60)
6422                        }, a.getRelativePosition = function (t, e) {
6423                            var n, i, o = t.originalEvent || t, r = t.currentTarget || t.srcElement, s = r.getBoundingClientRect(), l = o.touches;
6424                            l && l.length > 0 ? (n = l[0].clientX, i = l[0].clientY) : (n = o.clientX, i = o.clientY);
6425                            var c = parseFloat(a.getStyle(r, "padding-left")), u = parseFloat(a.getStyle(r, "padding-top")), d = parseFloat(a.getStyle(r, "padding-right")), h = parseFloat(a.getStyle(r, "padding-bottom")), p = s.right - s.left - c - d, f = s.bottom - s.top - u - h;
6426                            return n = Math.round((n - s.left - c) / p * r.width / e.currentDevicePixelRatio), i = Math.round((i - s.top - u) / f * r.height / e.currentDevicePixelRatio), {x: n, y: i}
6427                        }, a.addEvent = function (t, e, n) {
6428                            t.addEventListener ? t.addEventListener(e, n) : t.attachEvent ? t.attachEvent("on" + e, n) : t["on" + e] = n
6429                        }, a.removeEvent = function (t, e, n) {
6430                            t.removeEventListener ? t.removeEventListener(e, n, !1) : t.detachEvent ? t.detachEvent("on" + e, n) : t["on" + e] = a.noop
6431                        }, a.getConstraintWidth = function (t) {
6432                            return o(t, "max-width", "clientWidth")
6433                        }, a.getConstraintHeight = function (t) {
6434                            return o(t, "max-height", "clientHeight")
6435                        }, a.getMaximumWidth = function (t) {
6436                            var e = t.parentNode, n = parseInt(a.getStyle(e, "padding-left"), 10), i = parseInt(a.getStyle(e, "padding-right"), 10), o = e.clientWidth - n - i, r = a.getConstraintWidth(t);
6437                            return isNaN(r) ? o : Math.min(o, r)
6438                        }, a.getMaximumHeight = function (t) {
6439                            var e = t.parentNode, n = parseInt(a.getStyle(e, "padding-top"), 10), i = parseInt(a.getStyle(e, "padding-bottom"), 10), o = e.clientHeight - n - i, r = a.getConstraintHeight(t);
6440                            return isNaN(r) ? o : Math.min(o, r)
6441                        }, a.getStyle = function (t, e) {
6442                            return t.currentStyle ? t.currentStyle[e] : document.defaultView.getComputedStyle(t, null).getPropertyValue(e)
6443                        }, a.retinaScale = function (t) {
6444                            var e = t.currentDevicePixelRatio = window.devicePixelRatio || 1;
6445                            if (1 !== e) {
6446                                var n = t.canvas, i = t.height, o = t.width;
6447                                n.height = i * e, n.width = o * e, t.ctx.scale(e, e), n.style.height = i + "px", n.style.width = o + "px"
6448                            }
6449                        }, a.clear = function (t) {
6450                            t.ctx.clearRect(0, 0, t.width, t.height)
6451                        }, a.fontString = function (t, e, n) {
6452                            return e + " " + t + "px " + n
6453                        }, a.longestText = function (t, e, n, i) {
6454                            var o = (i = i || {}).data = i.data || {}, r = i.garbageCollect = i.garbageCollect || [];
6455                            i.font !== e && (o = i.data = {}, r = i.garbageCollect = [], i.font = e), t.font = e;
6456                            var s = 0;
6457                            a.each(n, function (e) {
6458                                void 0 !== e && null !== e && !0 !== a.isArray(e) ? s = a.measureText(t, o, r, s, e) : a.isArray(e) && a.each(e, function (e) {
6459                                    void 0 === e || null === e || a.isArray(e) || (s = a.measureText(t, o, r, s, e))
6460                                })
6461                            });
6462                            var l = r.length / 2;
6463                            if (l > n.length) {
6464                                for (var c = 0; c < l; c++)
6465                                    delete o[r[c]];
6466                                r.splice(0, l)
6467                            }
6468                            return s
6469                        }, a.measureText = function (t, e, n, i, o) {
6470                            var a = e[o];
6471                            return a || (a = e[o] = t.measureText(o).width, n.push(o)), a > i && (i = a), i
6472                        }, a.numberOfLabelLines = function (t) {
6473                            var e = 1;
6474                            return a.each(t, function (t) {
6475                                a.isArray(t) && t.length > e && (e = t.length)
6476                            }), e
6477                        }, a.drawRoundedRectangle = function (t, e, n, i, o, a) {
6478                            t.beginPath(), t.moveTo(e + a, n), t.lineTo(e + i - a, n), t.quadraticCurveTo(e + i, n, e + i, n + a), t.lineTo(e + i, n + o - a), t.quadraticCurveTo(e + i, n + o, e + i - a, n + o), t.lineTo(e + a, n + o), t.quadraticCurveTo(e, n + o, e, n + o - a), t.lineTo(e, n + a), t.quadraticCurveTo(e, n, e + a, n), t.closePath()
6479                        }, a.color = i ? function (e) {
6480                            return e instanceof CanvasGradient && (e = t.defaults.global.defaultColor), i(e)
6481                        } : function (t) {
6482                            return console.error("Color.js not found!"), t
6483                        }, a.isArray = Array.isArray ? function (t) {
6484                            return Array.isArray(t)
6485                        } : function (t) {
6486                            return"[object Array]" === Object.prototype.toString.call(t)
6487                        }, a.arrayEquals = function (t, e) {
6488                            var n, i, o, r;
6489                            if (!t || !e || t.length !== e.length)
6490                                return!1;
6491                            for (n = 0, i = t.length; n < i; ++n)
6492                                if (o = t[n], r = e[n], o instanceof Array && r instanceof Array) {
6493                                    if (!a.arrayEquals(o, r))
6494                                        return!1
6495                                } else if (o !== r)
6496                                    return!1;
6497                            return!0
6498                        }, a.callback = function (t, e, n) {
6499                            t && "function" == typeof t.call && t.apply(n, e)
6500                        }, a.getHoverColor = function (t) {
6501                            return t instanceof CanvasPattern ? t : a.color(t).saturate(.5).darken(.1).rgbString()
6502                        }, a.c
6502allCallback = a.callback
6503                    }
6504                }, {3: 3}], 27: [function (t, e, n) {
6505                    "use strict";
6506                    e.exports = function (t) {
6507                        function e(t, e) {
6508                            return t.native ? {x: t.x, y: t.y} : r.getRelativePosition(t, e)
6509                        }
6510                        function n(t, e) {
6511                            var n, i, o, a, r;
6512                            for (i = 0, a = t.data.datasets.length; i < a; ++i)
6513                                if (t.isDatasetVisible(i))
6514                                    for (o = 0, r = (n = t.getDatasetMeta(i)).data.length; o < r; ++o) {
6515                                        var s = n.data[o];
6516                                        s._view.skip || e(s)
6517                                    }
6518                        }
6519                        function i(t, e) {
6520                            var i = [];
6521                            return n(t, function (t) {
6522                                t.inRange(e.x, e.y) && i.push(t)
6523                            }), i
6524                        }
6525                        function o(t, e, i, o) {
6526                            var a = Number.POSITIVE_INFINITY, s = [];
6527                            return o || (o = r.distanceBetweenPoints), n(t, function (t) {
6528                                if (!i || t.inRange(e.x, e.y)) {
6529                                    var n = t.getCenterPoint(), r = o(e, n);
6530                                    r < a ? (s = [t], a = r) : r === a && s.push(t)
6531                                }
6532                            }), s
6533                        }
6534                        function a(t, n, a) {
6535                            var r = e(n, t), s = a.intersect ? i(t, r) : o(t, r, !1, function (t, e) {
6536                                return Math.abs(t.x - e.x)
6537                            }), l = [];
6538                            return s.length ? (t.data.datasets.forEach(function (e, n) {
6539                                if (t.isDatasetVisible(n)) {
6540                                    var i = t.getDatasetMeta(n).data[s[0]._index];
6541                                    i && !i._view.skip && l.push(i)
6542                                }
6543                            }), l) : []
6544                        }
6545                        var r = t.helpers;
6546                        t.Interaction = {modes: {single: function (t, i) {
6547                                    var o = e(i, t), a = [];
6548                                    return n(t, function (t) {
6549                                        if (t.inRange(o.x, o.y))
6550                                            return a.push(t), a
6551                                    }), a.slice(0, 1)
6552                                }, label: a, index: a, dataset: function (t, n, a) {
6553                                    var r = e(n, t), s = a.intersect ? i(t, r) : o(t, r, !1);
6554                                    return s.length > 0 && (s = t.getDatasetMeta(s[0]._datasetIndex).data), s
6555                                }, "x-axis": function (t, e) {
6556                                    return a(t, e, !0)
6557                                }, point: function (t, n) {
6558                                    return i(t, e(n, t))
6559                                }, nearest: function (t, n, i) {
6560                                    var a = o(t, e(n, t), i.intersect);
6561                                    return a.length > 1 && a.sort(function (t, e) {
6562                                        var n = t.getArea() - e.getArea();
6563                                        return 0 === n && (n = t._datasetIndex - e._datasetIndex), n
6564                                    }), a.slice(0, 1)
6565                                }, x: function (t, i, o) {
6566                                    var a = e(i, t), r = [], s = !1;
6567                                    return n(t, function (t) {
6568                                        t.inXRange(a.x) && r.push(t), t.inRange(a.x, a.y) && (s = !0)
6569                                    }), o.intersect && !s && (r = []), r
6570                                }, y: function (t, i, o) {
6571                                    var a = e(i, t), r = [], s = !1;
6572                                    return n(t, function (t) {
6573                                        t.inYRange(a.y) && r.push(t), t.inRange(a.x, a.y) && (s = !0)
6574                                    }), o.intersect && !s && (r = []), r
6575                                }}}
6576                    }
6577                }, {}], 28: [function (t, e, n) {
6578                    "use strict";
6579                    e.exports = function () {
6580                        var t = function (t, e) {
6581                            return this.construct(t, e), this
6582                        };
6583                        return t.defaults = {global: {responsive: !0, responsiveAnimationDuration: 0, maintainAspectRatio: !0, events: ["mousemove", "mouseout", "click", "touchstart", "touchmove"], hover: {onHover: null, mode: "nearest", intersect: !0, animationDuration: 400}, onClick: null, defaultColor: "rgba(0,0,0,0.1)", defaultFontColor: "#666", defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", defaultFontSize: 12, defaultFontStyle: "normal", showLines: !0, elements: {}, legendCallback: function (t) {
6584                                    var e = [];
6585                                    e.push('<ul class="' + t.id + '-legend">');
6586                                    for (var n = 0; n < t.data.datasets.length; n++)
6587                                        e.push('<li><span style="background-color:' + t.data.datasets[n].backgroundColor + '"></span>'), t.data.datasets[n].label && e.push(t.data.datasets[n].label), e.push("</li>");
6588                                    return e.push("</ul>"), e.join("")
6589                                }}}, t.Chart = t, t
6590                    }
6591                }, {}], 29: [function (t, e, n) {
6592                    "use strict";
6593                    e.exports = function (t) {
6594                        function e(t, e) {
6595                            return i.where(t, function (t) {
6596                                return t.position === e
6597                            })
6598                        }
6599                        function n(t, e) {
6600                            t.forEach(function (t, e) {
6601                                return t._tmpIndex_ = e, t
6602                            }), t.sort(function (t, n) {
6603                                var i = e ? n : t, o = e ? t : n;
6604                                return i.weight === o.weight ? i._tmpIndex_ - o._tmpIndex_ : i.weight - o.weight
6605                            }), t.forEach(function (t) {
6606                                delete t._tmpIndex_
6607                            })
6608                        }
6609                        var i = t.helpers;
6610                        t.layoutService = {defaults: {}
6610, addBox: function (t, e) {
6611                                t.boxes || (t.boxes = []), e.fullWidth = e.fullWidth || !1, e.position = e.position || "top", e.weight = e.weight || 0, t.boxes.push(e)
6612                            }, removeBox: function (t, e) {
6613                                var n = t.boxes ? t.boxes.indexOf(e) : -1;
6614                                -1 !== n && t.boxes.splice(n, 1)
6615                            }, configure: function (t, e, n) {
6616                                for (var i, o = ["fullWidth", "position", "weight"], a = o.length, r = 0; r < a; ++r)
6617                                    i = o[r], n.hasOwnProperty(i) && (e[i] = n[i])
6618                            }, update: function (t, o, a) {
6619                                function r(t) {
6620                                    var e = i.findNextWhere(M, function (e) {
6621                                        return e.box === t
6622                                    });
6623                                    if (e)
6624                                        if (t.isHorizontal()) {
6625                                            var n = {left: Math.max(D, I), right: Math.max(E, A), top: 0, bottom: 0};
6626                                            t.update(t.fullWidth ? b : S, x / 2, n)
6627                                        } else
6628                                            t.update(e.minSize.width, T)
6629                                }
6630                                function s(t) {
6631                                    t.isHorizontal() ? (t.left = t.fullWidth ? u : D, t.right = t.fullWidth ? o - d : D + S, t.top = N, t.bottom = N + t.height, N = t.bottom) : (t.left = z, t.right = z + t.width, t.top = O, t.bottom = O + T, z = t.right)
6632                                }
6633                                if (t) {
6634                                    var l = t.options.layout, c = l ? l.padding : null, u = 0, d = 0, h = 0, p = 0;
6635                                    isNaN(c) ? (u = c.left || 0, d = c.right || 0, h = c.top || 0, p = c.bottom || 0) : (u = c, d = c, h = c, p = c);
6636                                    var f = e(t.boxes, "left"), m = e(t.boxes, "right"), g = e(t.boxes, "top"), v = e(t.boxes, "bottom"), y = e(t.boxes, "chartArea");
6637                                    n(f, !0), n(m, !1), n(g, !0), n(v, !1);
6638                                    var b = o - u - d, x = a - h - p, w = x / 2, k = (o - b / 2) / (f.length + m.length), C = (a - w) / (g.length + v.length), S = b, T = x, M = [];
6639                                    i.each(f.concat(m, g, v), function (t) {
6640                                        var e, n = t.isHorizontal();
6641                                        n ? (e = t.update(t.fullWidth ? b : S, C), T -= e.height) : (e = t.update(k, w), S -= e.width), M.push({horizontal: n, minSize: e, box: t})
6642                                    });
6643                                    var I = 0, A = 0, P = 0, _ = 0;
6644                                    i.each(g.concat(v), function (t) {
6645                                        if (t.getPadding) {
6646                                            var e = t.getPadding();
6647                                            I = Math.max(I, e.left), A = Math.max(A, e.right)
6648                                        }
6649                                    }), i.each(f.concat(m), function (t) {
6650                                        if (t.getPadding) {
6651                                            var e = t.getPadding();
6652                                            P = Math.max(P, e.top), _ = Math.max(_, e.bottom)
6653                                        }
6654                                    });
6655                                    var D = u, E = d, O = h, L = p;
6656                                    i.each(f.concat(m), r), i.each(f, function (t) {
6657                                        D += t.width
6658                                    }), i.each(m, function (t) {
6659                                        E += t.width
6660                                    }), i.each(g.concat(v), r), i.each(g, function (t) {
vendor: 4,807 bytes, lines 6661-6731
6661                                        O += t.height
6662                                    }), i.each(v, function (t) {
6663                                        L += t.height
6664                                    }), i.each(f.concat(m), function (t) {
6665                                        var e = i.findNextWhere(M, function (e) {
6666                                            return e.box === t
6667                                        }), n = {left: 0, right: 0, top: O, bottom: L};
6668                                        e && t.update(e.minSize.width, T, n)
6669                                    }), D = u, E = d, O = h, L = p, i.each(f, function (t) {
6670                                        D += t.width
6671                                    }), i.each(m, function (t) {
6672                                        E += t.width
6673                                    }), i.each(g, function (t) {
6674                                        O += t.height
6675                                    }), i.each(v, function (t) {
6676                                        L += t.height
6677                                    });
6678                                    var F = Math.max(I - D, 0);
6679                                    D += F, E += Math.max(A - E, 0);
6680                                    var R = Math.max(P - O, 0);
6681                                    O += R, L += Math.max(_ - L, 0);
6682                                    var W = a - O - L, V = o - D - E;
6683                                    V === S && W === T || (i.each(f, function (t) {
6684                                        t.height = W
6685                                    }), i.each(m, function (t) {
6686                                        t.height = W
6687                                    }), i.each(g, function (t) {
6688                                        t.fullWidth || (t.width = V)
6689                                    }), i.each(v, function (t) {
6690                                        t.fullWidth || (t.width = V)
6691                                    }), T = W, S = V);
6692                                    var z = u + F, N = h + R;
6693                                    i.each(f.concat(g), s), z += S, N += T, i.each(m, s), i.each(v, s), t.chartArea = {left: D, top: O, right: D + S, bottom: O + T}, i.each(y, function (e) {
6694                                        e.left = t.chartArea.left, e.top = t.chartArea.top, e.right = t.chartArea.right, e.bottom = t.chartArea.bottom, e.update(S, T)
6695                                    })
6696                                }
6697                            }}
6698                    }
6699                }, {}], 30: [function (t, e, n) {
6700                    "use strict";
6701                    e.exports = function (t) {
6702                        var e = t.helpers;
6703                        t.defaults.global.plugins = {}, t.plugins = {_plugins: [], _cacheId: 0, register: function (t) {
6704                                var e = this._plugins;
6705                                [].concat(t).forEach(function (t) {
6706                                    -1 === e.indexOf(t) && e.push(t)
6707                                }), this._cacheId++
6708                            }, unregister: function (t) {
6709                                var e = this._plugins;
6710                                [].concat(t).forEach(function (t) {
6711                                    var n = e.indexOf(t);
6712                                    -1 !== n && e.splice(n, 1)
6713                                }), this._cacheId++
6714                            }, clear: function () {
6715                                this._plugins = [], this._cacheId++
6716                            }, count: function () {
6717                                return this._plugins.length
6718                            }, getAll: function () {
6719                                return this._plugins
6720                            }, notify: function (t, e, n) {
6721                                var i, o, a, r, s, l = this.descriptors(t), c = l.length;
6722                                for (i = 0; i < c; ++i)
6723                                    if (o = l[i], a = o.plugin, "function" == typeof (s = a[e]) && ((r = [t].concat(n || [])).push(o.options), !1 === s.apply(a, r)))
6724                                        return!1;
6725                                return!0
6726                            }, descriptors: function (n) {
6727                                var i = n._plugins || (n._plugins = {});
6728                                if (i.id === this._cacheId)
6729                                    return i.descriptors;
6730                                var o = [], a = [], r = n && n.config || {}, s = t.defaults.global.plugins, l = r.options && r.options.plugins || {};
6731                                return this._plugins.concat(r.plugins || []).forEac
6731h(function (t) {
6732                                    if (-1 === o.indexOf(t)) {
6733                                        var n = t.id, i = l[n];
6734                                        !1 !== i && (!0 === i && (i = e.clone(s[n])), o.push(t), a.push({plugin: t, options: i || {}}))
6735                                    }
6736                                }), i.descriptors = a, i.id = this._cacheId, a
6737                            }}, t.pluginService = t.plugins, t.PluginBase = t.Element.extend({})
6738                    }
6739                }, {}], 31: [function (t, e, n) {
6740                    "use strict";
6741                    e.exports = function (t) {
6742                        function e(t, e, n) {
6743                            return i.isArray(e) ? i.longestText(t, n, e) : t.measureText(e).width
6744                        }
6745                        function n(e) {
6746                            var n = i.getValueOrDefault, o = t.defaults.global, a = n(e.fontSize, o.defaultFontSize), r = n(e.fontStyle, o.defaultFontStyle), s = n(e.fontFamily, o.defaultFontFamily);
6747                            return{size: a, style: r, family: s, font: i.fontString(a, r, s)}
6748                        }
6749                        var i = t.helpers;
6750                        t.defaults.scale = {display: !0, position: "left", gridLines: {display: !0, color: "rgba(0, 0, 0, 0.1)", lineWidth: 1, drawBorder: !0, drawOnChartArea: !0, drawTicks: !0, tickMarkLength: 10, zeroLineWidth: 1, zeroLineColor: "rgba(0,0,0,0.25)", zeroLineBorderDash: [], zeroLineBorderDashOffset: 0, offsetGridLines: !1, borderDash: [], borderDashOffset: 0}, scaleLabel: {labelString: "", display: !1}, ticks: {beginAtZero: !1, minRotation: 0, maxRotation: 50, mirror: !1, padding: 0, reverse: !1, display: !0, autoSkip: !0, autoSkipPadding: 0, labelOffset: 0, callback: t.Ticks.formatters.values}}, t.Scale = t.Element.extend({getPadding: function () {
6751                                var t = this;
6752                                return{left: t.paddingLeft || 0, top: t.paddingTop || 0, right: t.paddingRight || 0, bottom: t.paddingBottom || 0}
6753                            }, beforeUpdate: function () {
6754                                i.callback(this.options.beforeUpdate, [this])
6755                            }, update: function (t, e, n) {
6756                                var o = this;
6757                                return o.beforeUpdate(), o.maxWidth = t, o.maxHeight = e, o.margins = i.extend({left: 0, right: 0, top: 0, bottom: 0}, n), o.longestTextCache = o.longestTextCache || {}, o.beforeSetDimensions(), o.setDimensions(), o.afterSetDimensions(), o.beforeDataLimits(), o.determineDataLimits(), o.afterDataLimits(), o.beforeBuildTicks(), o.buildTicks(), o.afterBuildTicks(), o.beforeTickToLabelConversion(), o.convertTicksToLabels(), o.afterTickToLabelConversion(), o.beforeCalculateTickRotation(), o.calculateTickRotation(), o.afterCalculateTickRotation(), o.beforeFit(), o.fit(), o.afterFit(), o.afterUpdate(), o.minSize
6758                            }, afterUpdate: function () {
6759                                i.callback(this.options.afterUpdate, [this])
6760                            }, beforeSetDimensions: function () {
6761                                i.callback(this.options.beforeSetDimensions, [this])
6762                            }, setDimensions: function () {
6763                                var t = this;
6764                                t.isHorizontal() ? (t.width = t.maxWidth, t.left = 0, t.right = t.width) : (t.height = t.maxHeight, t.top = 0, t.bottom = t.height), t.paddingLeft = 0, t.paddingTop = 0, t.paddingRight = 0, t.paddingBottom = 0
6765                            }, afterSetDimensions: function () {
6766                                i.callback(this.options.afterSetDimensions, [this])
6767                            }, beforeDataLimits: function () {
6768                                i.callback(this.options.beforeDataLimits, [this])
6769                            }, determineDataLimits: i.noop, afterDataLimits: function () {
6770                                i.callback(this.options.afterDataLimits, [this])
6771                            }, beforeBuildTicks: function () {
6772                                i.callback(this.options.beforeBuildTicks, [this])
6773                            }, buildTicks: i.noop, afterBuildTicks: function () {
6774                                i.callback(this.options.afterBuildTicks, [this])
6775                            }, beforeTickToLabelConversion: function () {
6776                                i.callback(this.options.beforeTickToLabelConversion, [this])
6777                            }, convertTicksToLabels: function () {
6778                                var t = this, e = t.options.ticks;
6779                                t.ticks = t.ticks.map(e.userCallback || e.callback)
6780                            }, afterTickToLabelConversion: function () {
6781                                i.callback(this.options.afterTickToLabelConversion, [this])
6782                            }, beforeCalculateTickRotation: function () {
6783                                i.callback(this.options.beforeCalculateTickRotation, [this])
6784                            }, calculateTickRotation: function () {
6785                                var t = this, e = t.ctx, o = t.options.ticks, a = n(o);
6786                                e.font = a.font;
6787                                var r = o.minRotation || 0;
6788                                if (t.options.display && t.isHorizontal())
6789                                    for (var s, l = i.longestText(e, a.font, t.ticks, t.longestTextCache), c = l, u = t.getPixelForTick(1) - t.getPixelForTick(0) - 6; c > u && r < o.maxRotation; ) {
6790                                        var d = i.toRadians(r);
6791                                        if (s = Math.cos(d), Math.sin(d) * l > t.maxHeight) {
6792                                            r--;
6793                                            break
6794                                        }
6795                                        r++, c = s * l
6796                                    }
6797                                t.labelRotation = r
6798                            }, afterCalculateTickRotation: function () {
6799                                i.callback(this.options.afterCalculateTickRotation, [this])
6800                            }, beforeFit: function () {
6801                                i.callback(this.options.beforeFit, [this])
6802                            }, fit: function () {
6803                                var t = this, o = t.minSize = {width: 0, height: 0}, a = t.options, r = a.ticks, s = a.scaleLabel, l = a.gridLines, c = a.display, u = t.isHorizontal(), d = n(r), h = 1.5 * n(s).size, p = a.gridLines.tickMarkLength;
6804                                if (o.width = u ? t.isFullWidth() ? t.maxWidth - t.margins.left - t.margins.right : t.maxWidth : c && l.drawTicks ? p : 0, o.height = u ? c && l.drawTicks ? p : 0 : t.maxHeight, s.display && c && (u ? o.height += h : o.width += h), r.display && c) {
6805                                    var f = i.longestText(t.ctx, d.font, t.ticks, t.longestTextCache), m = i.numberOfLabelLines(t.ticks), g = .5 * d.size;
6806                                    if (u) {
6807                                        t.longestLabelWidth = f;
6808                                        var v = i.toRadians(t.labelRotation), y = Math.cos(v), b = Math.sin(v) * f + d.size * m + g * m;
6809                                        o.height = Math.min(t.maxHeight, o.height + b), t.ctx.font = d.font;
6810                                        var x = t.ticks[0], w = e(t.ctx, x, d.font), k = t.ticks[t.ticks.length - 1], C = e(t.ctx, k, d.font);
6811                                        0 !== t.labelRotation ? (t.paddingLeft = "bottom" === a.position ? y * w + 3 : y * g + 3, t.paddingRight = "bottom" === a.position ? y * g + 3 : y * C + 3) : (t.paddingLeft = w / 2 + 3, t.paddingRight = C / 2 + 3)
6812                                    } else
6813                                        r.mirror ? f = 0 : f += t.options.ticks.padding, o.width = Math.min(t.maxWidth, o.width + f), t.paddingTop = d.size / 2, t.paddingBottom = d.size / 2
6814                                }
6815                                t.handleMargins(), t.width = o.width, t.height = o.height
6816                            }, handleMargins: function () {
6817                                var t = this;
6818                                t.margins && (t.paddingLeft = Math.max(t.paddingLeft - t.margins.left, 0), t.paddingTop = Math.max(t.paddingTop 
6818- t.margins.top, 0), t.paddingRight = Math.max(t.paddingRight - t.margins.right, 0), t.paddingBottom = Math.max(t.paddingBottom - t.margins.bottom, 0))
6819                            }, afterFit: function () {
6820                                i.callback(this.options.afterFit, [this])
6821                            }, isHorizontal: function () {
6822                                return"top" === this.options.position || "bottom" === this.options.position
6823                            }, isFullWidth: function () {
6824                                return this.options.fullWidth
6825                            }, getRightValue: function (t) {
6826                                return null === t || void 0 === t ? NaN : "number" != typeof t || isFinite(t) ? "object" == typeof t ? t instanceof Date || t.isValid ? t : this.getRightValue(this.isHorizontal() ? t.x : t.y) : t : NaN
6827                            }, getLabelForIndex: i.noop, getPixelForValue: i.noop, getValueForPixel: i.noop, getPixelForTick: function (t, e) {
6828                                var n = this;
6829                                if (n.isHorizontal()) {
6830                                    var i = (n.width - (n.paddingLeft + n.paddingRight)) / Math.max(n.ticks.length - (n.options.gridLines.offsetGridLines ? 0 : 1), 1), o = i * t + n.paddingLeft;
6831                                    e && (o += i / 2);
6832                                    var a = n.left + Math.round(o);
6833                                    return a += n.isFullWidth() ? n.margins.left : 0
6834                                }
6835                                var r = n.height - (n.paddingTop + n.paddingBottom);
6836                                return n.top + t * (r / (n.ticks.length - 1))
6837                            }, getPixelForDecimal: function (t) {
6838                                var e = this;
6839                                if (e.isHorizontal()) {
6840                                    var n = (e.width - (e.paddingLeft + e.paddingRight)) * t + e.paddingLeft, i = e.left + Math.round(n);
6841                                    return i += e.isFullWidth() ? e.margins.left : 0
6842                                }
6843                                return e.top + t * e.height
6844                            }, getBasePixel: function () {
6845                                return this.getPixelForValue(this.getBaseValue())
6846                            }, getBaseValue: function () {
6847                                var t = this, e = t.min, n = t.max;
6848                                return t.beginAtZero ? 0 : e < 0 && n < 0 ? n : e > 0 && n > 0 ? e : 0
6849                            }, draw: function (e) {
6850                                var o = this, a = o.options;
6851                                if (a.display) {
6852                                    var r, s, l = o.ctx, c = t.defaults.global, u = a.ticks, d = a.gridLines, h = a.scaleLabel, p = 0 !== o.labelRotation, f = u.autoSkip, m = o.isHorizontal();
6853                                    u.maxTicksLimit && (s = u.maxTicksLimit);
6854                                    var g = i.getValueOrDefault(u.fontColor, c.defaultFontColor), v = n(u), y = d.drawTicks ? d.tickMarkLength : 0, b = i.getValueOrDefault(h.fontColor, c.defaultFontColor), x = n(h), w = i.toRadians(o.labelRotation), k = Math.cos(w), C = o.longestLabelWidth * k;
6855                                    l.fillStyle = g;
6856                                    var S = [];
6857                                    if (m) {
6858                                        if (r = !1, (C + u.autoSkipPadding) * o.ticks.length > o.width - (o.paddingLeft + o.paddingRight) && (r = 1 + Math.floor((C + u.autoSkipPadding) * o.ticks.length / (o.width - (o.paddingLeft + o.paddingRight)))), s && o.ticks.length > s)
6859                                            for (; !r || o.ticks.length / (r || 1) > s; )
6860                                                r || (r = 1), r += 1;
6861                                        f || (r = !1)
6862                                    }
6863                                    var T = "right" === a.position ? o.left : o.right - y, M = "right" === a.position ? o.left + y : o.right, I = "bottom" === a.position ? o.top : o.bottom - y, A = "bottom" === a.position ? o.top + y : o.bottom;
6864                                    if (i.each(o.ticks, function (t, n) {
6865                                        if (void 0 !== t && null !== t) {
6866                                            var s = o.ticks.length === n + 1;
6867                                            if ((!(r > 1 && n % r > 0 || n % r == 0 && n + r >= o.ticks.length) || s) && void 0 !== t && null !== t) {
6868                                                var l, h, f, g;
6869                                                n === (void 0 !== o.zeroLineIndex ? o.zeroLineIndex : 0) ? (l = d.zeroLineWi
6869dth, h = d.zeroLineColor, f = d.zeroLineBorderDash, g = d.zeroLineBorderDashOffset) : (l = i.getValueAtIndexOrDefault(d.lineWidth, n), h = i.getValueAtIndexOrDefault(d.color, n), f = i.getValueOrDefault(d.borderDash, c.borderDash), g = i.getValueOrDefault(d.borderDashOffset, c.borderDashOffset));
6870                                                var v, b, x, k, C, P, _, D, E, O, L = "middle", F = "middle";
6871                                                if (m) {
6872                                                    "bottom" === a.position ? (F = p ? "middle" : "top", L = p ? "right" : "center", O = o.top + y) : (F = p ? "middle" : "bottom", L = p ? "left" : "center", O = o.bottom - y);
6873                                                    var R = o.getPixelForTick(n) + i.aliasPixel(l);
6874                                                    E = o.getPixelForTick(n, d.offsetGridLines) + u.labelOffset, v = x = C = _ = R, b = I, k = A, P = e.top, D = e.bottom
6875                                                } else {
6876                                                    var W, V = "left" === a.position, z = u.padding;
6877                                                    u.mirror ? (L = V ? "left" : "right", W = z) : (L = V ? "right" : "left", W = y + z), E = V ? o.right - W : o.left + W;
6878                                                    var N = o.getPixelForTick(n);
6879                                                    N += i.aliasPixel(l), O = o.getPixelForTick(n, d.offsetGridLines), v = T, x = M, C = e.left, _ = e.right, b = k = P = D = N
6880                                                }
6881                                                S.push({tx1: v, ty1: b, tx2: x, ty2: k, x1: C, y1: P, x2: _, y2: D, labelX: E, labelY: O, glWidth: l, glColor: h, glBorderDash: f, glBorderDashOffset: g, rotation: -1 * w, label: t, textBaseline: F, textAlign: L})
6882                                            }
6883                                        }
6884                                    }), i.each(S, function (t) {
6885                                        if (d.display && (l.save(), l.lineWidth = t.glWidth, l.strokeStyle = t.glColor, l.setLineDash && (l.setLineDash(t.glBorderDash), l.lineDashOffset = t.glBorderDashOffset), l.beginPath(), d.drawTicks && (l.moveTo(t.tx1, t.ty1), l.lineTo(t.tx2, t.ty2)), d.drawOnChartArea && (l.moveTo(t.x1, t.y1), l.lineTo(t.x2, t.y2)), l.stroke(), l.restore()), u.display) {
6886                                            l.save(), l.translate(t.labelX, t.labelY), l.rotate(t.rotation), l.font = v.font, l.textBaseline = t.textBaseline, l.textAlign = t.textAlign;
6887                                            var e = t.label;
6888                                            if (i.isArray(e))
6889                                                for (var n = 0, o = 0; n < e.length; ++n)
6890                                                    l.fillText("" + e[n], 0, o), o += 1.5 * v.size;
6891                                            else
6892                                                l.fillText(e, 0, 0);
6893                                            l.restore()
6894                                        }
6895                                    }), h.display) {
6896                                        var P, _, D = 0;
6897                                        if (m)
6898                                            P = o.left + (o.right - o.left) / 2, _ = "bottom" === a.position ? o.bottom - x.size / 2 : o.top + x.size / 2;
6899                                        else {
6900                                            var E = "left" === a.position;
6901                                            P = E ? o.left + x.size / 2 : o.right - x.size / 2, _ = o.top + (o.bottom - o.top) / 2, D = E ? -.5 * Math.PI : .5 * Math.PI
6902                                        }
6903                                        l.save(), l.translate(P, _), l.rotate(D), l.textAlign = "center", l.textBaseline = "middle", l.fillStyle = b, l.font = x.font, l.fillText(h.labelString, 0, 0
6903), l.restore()
6904                                    }
6905                                    if (d.drawBorder) {
6906                                        l.lineWidth = i.getValueAtIndexOrDefault(d.lineWidth, 0), l.strokeStyle = i.getValueAtIndexOrDefault(d.color, 0);
6907                                        var O = o.left, L = o.right, F = o.top, R = o.bottom, W = i.aliasPixel(l.lineWidth);
6908                                        m ? (F = R = "top" === a.position ? o.bottom : o.top, F += W, R += W) : (O = L = "left" === a.position ? o.right : o.left, O += W, L += W), l.beginPath(), l.moveTo(O, F), l.lineTo(L, R), l.stroke()
6909                                    }
6910                                }
6911                            }})
6912                    }
6913                }, {}], 32: [function (t, e, n) {
6914                    "use strict";
6915                    e.exports = function (t) {
6916                        var e = t.helpers;
6917                        t.scaleService = {constructors: {}, defaults: {}, registerScaleType: function (t, n, i) {
6918                                this.constructors[t] = n, this.defaults[t] = e.clone(i)
6919                            }, getScaleConstructor: function (t) {
6920                                return this.constructors.hasOwnProperty(t) ? this.constructors[t] : void 0
6921                            }, getScaleDefaults: function (n) {
6922                                return this.defaults.hasOwnProperty(n) ? e.scaleMerge(t.defaults.scale, this.defaults[n]) : {}
6923                            }, updateScaleDefaults: function (t, n) {
6924                                var i = this.defaults;
6925                                i.hasOwnProperty(t) && (i[t] = e.extend(i[t], n))
6926                            }, addScalesToLayout: function (n) {
6927                                e.each(n.scales, function (e) {
6928                                    e.fullWidth = e.options.fullWidth, e.position = e.options.position, e.weight = e.options.weight, t.layoutService.addBox(n, e)
6929                                })
6930                            }}
6931                    }
6932                }, {}], 33: [function (t, e, n) {
6933                    "use strict";
6934                    e.exports = function (t) {
6935                        var e = t.helpers;
6936                        t.Ticks = {generators: {linear: function (t, n) {
6937                                    var i, o = [];
6938                                    if (t.stepSize && t.stepSize > 0)
6939                                        i = t.stepSize;
6940                                    else {
6941                                        var a = e.niceNum(n.max - n.min, !1);
6942                                        i = e.niceNum(a / (t.maxTicks - 1), !0)
6943                                    }
6944                                    var r = Math.floor(n.min / i) * i, s = Math.ceil(n.max / i) * i;
6945                                    t.min && t.max && t.stepSize && e.almostWhole((t.max - t.min) / t.stepSize, i / 1e3) && (r = t.min, s = t.max);
6946                                    var l = (s - r) / i;
6947                                    l = e.almostEquals(l, Math.round(l), i / 1e3) ? Math.round(l) : Math.ceil(l), o.push(void 0 !== t.min ? t.min : r);
6948                                    for (var c = 1; c < l; ++c)
6949                                        o.push(r + c * i);
6950                                    return o.push(void 0 !== t.max ? t.max : s), o
6951                                }, logarithmic: function (t, n) {
6952                                    var i, o, a = [], r = e.getValueOrDefault, s = r(t.min, Math.pow(10, Math.floor(e.log10(n.min)))), l = Math.floor(e.log10(n.max)), c = Math.ceil(n.max / Math.pow(10, l));
6953                                    0 === s ? (i = Math.floor(e.log10(n.minNotZero)), o = Math.floor(n.minNotZero / Math.pow(10, i)), a.push(s), s = o * Math.pow(10, i)) : (i = Math.floor(e.log10(s)), o = Math.floor(s / Math.pow(10, i)));
6954                                    do {
6955                                        a.push(s), 10 === ++o && (o = 1, ++i), s = o * Math.pow(10, i)
6956                                    } while (i < l || i === l && o < c);
6957                                    var u = r(t.max, s);
6958                                    return a.push(u), a
6959                                }}, formatters: {values: function (t) {
6960                                    return e.isArray(t) ? t : "" + t
6961                                }, linear: function (t, n, i) {
6962                                    var o = i.length > 3 ? i[2] - i[1] : i[1] - i[0];
6963                                    Math.abs(o) >
6963 1 && t !== Math.floor(t) && (o = t - Math.floor(t));
6964                                    var a = e.log10(Math.abs(o)), r = "";
6965                                    if (0 !== t) {
6966                                        var s = -1 * Math.floor(a);
6967                                        s = Math.max(Math.min(s, 20), 0), r = t.toFixed(s)
6968                                    } else
6969                                        r = "0";
6970                                    return r
6971                                }, logarithmic: function (t, n, i) {
6972                                    var o = t / Math.pow(10, Math.floor(e.log10(t)));
6973                                    return 0 === t ? "0" : 1 === o || 2 === o || 5 === o || 0 === n || n === i.length - 1 ? t.toExponential() : ""
6974                                }}}
6975                    }
6976                }, {}], 34: [function (t, e, n) {
6977                    "use strict";
6978                    e.exports = function (t) {
6979                        function e(t, e) {
6980                            var n = l.color(t);
6981                            return n.alpha(e * n.alpha()).rgbaString()
6982                        }
6983                        function n(t, e) {
6984                            return e && (l.isArray(e) ? Array.prototype.push.apply(t, e) : t.push(e)), t
6985                        }
6986                        function i(t) {
6987                            var e = t._xScale, n = t._yScale || t._scale, i = t._index, o = t._datasetIndex;
6988                            return{xLabel: e ? e.getLabelForIndex(i, o) : "", yLabel: n ? n.getLabelForIndex(i, o) : "", index: i, datasetIndex: o, x: t._model.x, y: t._model.y}
6989                        }
6990                        function o(e) {
6991                            var n = t.defaults.global, i = l.getValueOrDefault;
6992                            return{xPadding: e.xPadding, yPadding: e.yPadding, xAlign: e.xAlign, yAlign: e.yAlign, bodyFontColor: e.bodyFontColor, _bodyFontFamily: i(e.bodyFontFamily, n.defaultFontFamily), _bodyFontStyle: i(e.bodyFontStyle, n.defaultFontStyle), _bodyAlign: e.bodyAlign, bodyFontSize: i(e.bodyFontSize, n.defaultFontSize), bodySpacing: e.bodySpacing, titleFontColor: e.titleFontColor, _titleFontFamily: i(e.titleFontFamily, n.defaultFontFamily), _titleFontStyle: i(e.titleFontStyle, n.defaultFontStyle), titleFontSize: i(e.titleFontSize, n.defaultFontSize), _titleAlign: e.titleAlign, titleSpacing: e.titleSpacing, titleMarginBottom: e.titleMarginBottom, footerFontColor: e.footerFontColor, _footerFontFamily: i(e.footerFontFamily, n.defaultFontFamily), _footerFontStyle: i(e.footerFontStyle, n.defaultFontStyle), footerFontSize: i(e.footerFontSize, n.defaultFontSize), _footerAlign: e.footerAlign, footerSpacing: e.footerSpacing, footerMarginTop: e.footerMarginTop, caretSize: e.caretSize, cornerRadius: e.cornerRadius, backgroundColor: e.backgroundColor, opacity: 0, legendColorBackground: e.multiKeyBackground, displayColors: e.displayColors, borderColor: e.borderColor, borderWidth: e.borderWidth}
6993                        }
6994                        function a(t, e) {
6995                            var n = t._chart.ctx, i = 2 * e.yPadding, o = 0, a = e.body, r = a.reduce(function (t, e) {
6996                                return t + e.before.length + e.lines.length + e.after.length
6997                            }, 0);
6998                            r += e.beforeBody.length + e.afterBody.length;
6999                            var s = e.title.length, c = e.footer.length, u = e.titleFontSize, d = e.bodyFontSize, h = e.footerFontSize;
7000                            i += s * u, i += s ? (s - 1) * e.titleSpacing : 0, i += s ? e.titleMarginBottom : 0, i += r * d, i += r ? (r - 1) * e.bodySpacing : 0, i += c ? e.footerMarginTop : 0, i += c * h, i += c ? (c - 1) * e.footerSpacing : 0;
7001                            var p = 0, f = function (t) {
7002                                o = Math.max(o, n.measureText(t).width + p)
7003                            };
7004                            return n.font = l.fontString(u, e._titleFontStyle, e._titleFontFamily), l.each(e.title, f), n.font = l.fontString(d, e._bodyFontStyle, e._bodyFontFamily), l.each(e.beforeBody.concat(e.afterBody), f), p = e.displayColors ? d + 2 : 0, l.each(a, function (t) {
7005                                l.each(t.before, f), l.each(t.lines, f), l.each(t.after, f)
7006                            }), p = 0, n.font = l.fontString(h, e._footerFontStyle, e._footerFontFamily), l.each(e.footer, f), o += 2 * e.xPadding, {width: o, height: i}
7007                        }
7008                        function r(t, e) {
7009                            var n = t._model, i = t._chart, o = t._chart.chartArea, a = "center", r = "center";
7010                            n.y < e.height ? r = "top" : n.y > i.height - e.height && (r = "bottom");
7011                            var s, l, c, u, d, h = (o.left + o.right) / 2, p = (o.top + o.bottom) / 2;
7012                            "center" === r ? (s = function (t) {
7013                                return t <= h
7014                            }, l = function (t) {
7015                                return t > h
7016                            }) : (s = function (t) {
7017                                return t <= e.width / 2
7018                            }, l = function (t) {
7019                                return t >= i.width - e.width / 2
7020                            }), c = function (t) {
7021                                return t + e.width > i.width
7022                            }, u = function (t) {
7023                                return t - e.width < 0
7024                            }, d = function (t) {
7025                                return t <= p ? "top" : "bottom"
7026                            }, s(n.x) ? (a = "left", c(n.x) && (a = "center", r = d(n.y))) : l(n.x) && (a = "right", u(n.x) && (a = "center", r = d(n.y)));
7027                            var f = t._options;
7028                            return{xAlign: f.xAlign ? f.xAlign : a, yAlign: f.yAlign ? f.yAlign : r}
7029                        }
7030                        function s(t, e, n) {
7031                            var i = t.x, o = t.y, a = t.caretSize, r = t.caretPadding, s = t.cornerRadius, l = n.xAlign, c = n.yAlign, u = a + r, d = s + r;
7032                            return"right" === l ? i -= e.width : "center" === l && (i -= e.width / 2), "top" === c ? o += u : o -= "bottom" === c ? e.height + u : e.height / 2, "center" === c ? "left" === l ? i += u : "right" === l && (i -= u) : "left" === l ? i -= d : "right" === l && (i += d), {x: i, y: o}
7033                        }
7034                        var l = t.helpers;
7035                        t.defaults.global.tooltips = {enabled: !0, custom: null, mode: "nearest", position: "average", intersect: !0, backgroundColor: "rgba(0,0,0,0.8)", titleFontStyle: "bold", titleSpacing: 2, titleMarginBottom: 6, titleFontColor: "#fff", titleAlign: "left", bodySpacing: 2, bodyFontColor: "#fff", bodyAlign: "left", footerFontStyle: "bold", footerSpacing: 2, footerMarginTop: 6, footerFontColor: "#fff", footerAlign: "left", yPadding: 6, xPadding: 6, caretPadding: 2, caretSize: 5, cornerRadius: 6, multiKeyBackgroun
7035d: "#fff", displayColors: !0, borderColor: "rgba(0,0,0,0)", borderWidth: 0, callbacks: {beforeTitle: l.noop, title: function (t, e) {
7036                                    var n = "", i = e.labels, o = i ? i.length : 0;
7037                                    if (t.length > 0) {
7038                                        var a = t[0];
7039                                        a.xLabel ? n = a.xLabel : o > 0 && a.index < o && (n = i[a.index])
7040                                    }
7041                                    return n
7042                                }, afterTitle: l.noop, beforeBody: l.noop, beforeLabel: l.noop, label: function (t, e) {
7043                                    var n = e.datasets[t.datasetIndex].label || "";
7044                                    return n && (n += ": "), n += t.yLabel
7045                                }, labelColor: function (t, e) {
7046                                    var n = e.getDatasetMeta(t.datasetIndex).data[t.index]._view;
7047                                    return{borderColor: n.borderColor, backgroundColor: n.backgroundColor}
7048                                }, afterLabel: l.noop, afterBody: l.noop, beforeFooter: l.noop, footer: l.noop, afterFooter: l.noop}}, t.Tooltip = t.Element.extend({initialize: function () {
7049                                this._model = o(this._options)
7050                            }, getTitle: function () {
7051                                var t = this, e = t._options.callbacks, i = e.beforeTitle.apply(t, arguments), o = e.title.apply(t, arguments), a = e.afterTitle.apply(t, arguments), r = [];
7052                                return r = n(r, i), r = n(r, o), r = n(r, a)
7053                            }, getBeforeBody: function () {
7054                                var t = this._options.callbacks.beforeBody.apply(this, arguments);
7055                                return l.isArray(t) ? t : void 0 !== t ? [t] : []
7056                            }, getBody: function (t, e) {
7057                                var i = this, o = i._options.callbacks, a = [];
7058                                return l.each(t, function (t) {
7059                                    var r = {before: [], lines: [], after: []};
7060                                    n(r.before, o.beforeLabel.call(i, t, e)), n(r.lines, o.label.call(i, t, e)), n(r.after, o.afterLabel.call(i, t, e)), a.push(r)
7061                                }), a
7062                            }, getAfterBody: function () {
7063                                var t = this._options.callbacks.afterBody.apply(this, arguments);
7064                                return l.isArray(t) ? t : void 0 !== t ? [t] : []
7065                            }, getFooter: function () {
7066                                var t = this, e = t._options.callbacks, i = e.beforeFooter.apply(t, arguments), o = e.footer.apply(t, arguments), a = e.afterFooter.apply(t, arguments), r = [];
7067                                return r = n(r, i), r = n(r, o), r = n(r, a)
7068                            }, update: function (e) {
7069                                var n, c, u = this, d = u._options, h = u._model, p = u._model = o(d), f = u._active, m = u._data, g = {xAlign: h.xAlign, yAlign: h.yAlign}, v = {x: h.x, y: h.y}, y = {width: h.width, height: h.height}, b = {x: h.caretX, y: h.caretY};
7070                                if (f.length) {
7071                                    p.opacity = 1;
7072                                    var x = [];
7073                                    b = t.Tooltip.positioners[d.position](f, u._eventPosition);
7074                                    var w = [];
7075                                    for (n = 0, c = f.length; n < c; ++n)
7076                                        w.push(i(f[n]));
7077                                    d.filter && (w = w.filter(function (t) {
7078                                        return d.filter(t, m)
7079                                    })), d.itemSort && (w = w.sort(function (t, e) {
7080                                        return d.itemSort(t, e, m)
7081                                    })), l.each(w, function (t) {
7082                                        x.push(d.callbacks.labelColor.call(u, t, u._chart))
7083                                    }), p.title = u.getTitle(w, m), p.beforeBody = u.getBeforeBody(w, m), p.body = u.getBody(w, m), p.afterBody = u.getAfterBody(w, m), p.footer = u.getFooter(w, m), p.x = Math.round(b.x), p.y = Math.round(b.y), p.caretPadding = d.caretPadding, p.labelColors = x, p.dataPoints = w, v = s(p, y = a(this, p), g = r(this, y))
7084                                } else
7085                                    p.opacity = 0;
7086                                return p.xAlign = g.xAlign, p.yAlign = g.yAlign, p.x = v.x, p.y = v.y, p.width = y.width, p.height = y.height, p.caretX = b.x, p.caretY = b.y, u._model = p, e && d.custom && d.custom.call(u, p), u
7087                            }, drawCaret: function (t, e) {
7088                                var n = this._chart.ctx, i = this._view, o = this.getCaretPosition(t, e, i);
7089                                n.lineTo(o.x1, o.y1), n.lineTo(o.x2, o.y2), n.lineTo(o.x3, o.y3)
7090                            }, getCaretPosition: function (t, e, n) {
7091                                var i, o, a, r, s, l, c = n.caretSize, u = n.cornerRadius, d = n.xAlign, h = n.yAlign, p = t.x, f = t.y, m = e.width, g = e.height;
7092                                if ("center" === h)
7093                                    s = f + g / 2, "left" === d ? (o = (i = p) - c, a = i, r = s + c, l = s - c) : (o = (i = p + m) + c, a = i, r = s - c, l = s + c);
7094                                else if ("left" === d ? (i = (o = p + u + c) - c, a = o + c) : "right" === d ? (i = (o = p + m - u - c) - c, a = o + c) : (i = (o = p + m / 2) - c, a = o + c), "top" === h)
7095                                    s = (r = f) - c, l = r;
7096                                else {
7097                                    s = (r = f + g) + c, l = r;
7098                                    var v = a;
7099                                    a = i, i = v
7100                                }
7101                                return{x1: i, x2: o, x3: a, y1: r, y2: s, y3: l}
7102                            }, drawTitle: function (t, n, i, o) {
7103                                var a = n.title;
7104                                if (a.length) {
7105                                    i.textAlign = n._titleAlign, i.textBaseline = "top";
7106                                    var r = n.titleFontSize, s = n.titleSpacing;
7107                                    i.fillStyle = e(n.titleFontColor, o), i.font = l.fontString(r, n._titleFontStyle, n._titleFontFamily);
7108                                    var c, u;
7109                                    for (c = 0, u = a.length; c < u; ++c)
7110                                        i.fillText(a[c], t.x, t.y), t.y += r + s, c + 1 === a.length && (t.y += n.titleMarginBottom - s)
7111                                }
7112                            }, drawBody: function (t, n, i, o) {
7113                                var a = n.bodyFontSize, r = n.bodySpacing, s = n.body;
7114                                i.textAlign = n._bodyAlign, i.textBaseline = "top";
7115                                var c = e(n.bodyFontColor, o);
7116                                i.fillStyle = c, i.font = l.fontString(a, n._bodyFontStyle, n._bodyFontFamily);
7117                                var u = 0, d = function (e) {
7118                                    i.fillText(e, t.x + u, t.y), t.y += a + r
7119                                };
7120                                l.each(n.beforeBody, d);
7121                                var h = n.displayColors;
7122                                u = h ? a + 2 : 0, l.each(s, function (r, s) {
7123                                    l.each(r.before, d), l.each(r.lines, function (r) {
7124                                        h && (i.fillStyle = e(n.legendColorBackground, o), i.fillRect(t.x, t.y, a, a), i.strokeStyle = e(n.labelColors[s].borderColor, o), i.strokeRect(t.x, t.y, a, a), i.fillStyle = e(n.labelColors[s].backgroundColor, o), i.fillRect(t.x + 1, t.y + 1, a - 2, a - 2), i.fillStyle = c), d(r)
7125                                    }), l.each(r.after, d)
7126                                }), u = 0, l.each(n.afterBody, d), t.y -= r
7127                            }, drawFooter: function (t, n, i, o) {
7128                                var a = n.footer;
7129                                a.length && (t.y += n.footerMarginTop, i.textAlign = n._footerAlign, i.textBaseline = "top", i.fillStyle = e(n.footerFontColor, o), i.font = l.fontString(n.footerFontSize, n._footerFontStyle, n._footerFontFamily), l.each(a, function (e) {
7130                                    i.fillText(e, t.x, t.y), t.y += n.footerFontSize + n.footerSpacing
7131                                }))
7132                            }, drawBackground: function (t, n, i, o, a) {
7133                                i.fillStyle = e(n.backgroundColor, a), i.strokeStyle = e(n.borderColor, a), i.lineWidth = n.borderWidth;
7134                                var r = n.xAlign, s = n.yAlign, l = t.x, c = t.y, u = o.width, d = o.height, h = n.cornerRadius;
7135                                i.beginPath(), i.moveTo(l + h, c), "top" === s && this.drawCaret(t, o), i.lineTo(l + u - h, c), i.quadraticCurveTo(l + u, c, l + u, c + h), "center" === s && "right" === r && this.drawCaret(t, o), i.lineTo(l + u, c + d - h), i.quadraticCurveTo(l + u, c + d, l + u - h, c + d), "bottom" === s && this.drawCaret(t, o), i.lineTo(l + h, c + d), i.quadraticCurveTo(l, c + d, l, c + d - h), "center" === s && "left" === r && this.drawCaret(t, o), i.lineTo(l, c + h), i.quadraticCurveTo(l, c, l + h, c), i.closePath(), i.fill(), n.borderWidth > 0 && i.stroke()
7136                            }, draw: function () {
7137                                var t = this._chart.ctx, e = this._view;
7138                                if (0 !== e.opacity) {
7139                                    var n = {width: e.width, height: e.height}, i = {x: e.x, y: e.y}, o = Math.abs(e.opacity < .001) ? 0 : e.opacity, a = e.title.length || e.beforeBody.length || e.body.length || e.afterBody.length || e.footer.length;
7140                                    this._options.enabled && a && (this.drawBackground(i, e, t, n, o), i.x += e.xPadding, i.y += e.yPadding, this.drawTitle(i, e, t, o), this.drawBody(i, e, t, o), this.drawFooter(i, e, t, o))
7141                                }
7142                            }, handleEvent: function (t) {
7143                                var e = this, n = e._options, i = !1;
7144                                if (e._lastActive = e._lastActive || [], "mouseout" === t.type ? e._active = [] : e._active = e._chart.getElementsAtEventForMode(t, n.mode, n), !(i = !l.arrayEquals(e._active, e._lastActive)))
7145                                    return!1;
7146                                if (e._lastActive = e._active, n.enabled || n.custom) {
7147                                    e._eventPosition = {x: t.x, y: t.y};
7148                                    var o = e._model;
7149                                    e.update(!0), e.pivot(), i |= o.x !== e._model.x || o.y !== e._model.y
7150                                }
7151                                return i
7152                            }}), t.Tooltip.positioners = {average: function (t) {
7153                                if (!t.length)
7154                                    return!1;
7155                                var e, n, i = 0, o = 0, a = 0;
7156                                for (e = 0, n = t.length; e < n; ++e) {
7157                                    var r = t[e];
7158                                    if (r && r.hasValue()) {
7159                                        var s = r.tooltipPosition();
7160                                        i += s.x, o += s.y, ++a
7161                                    }
7162                                }
7163                                return{x: Math.round(i / a), y: Math.round(o / a)}
7164                            }, nearest: function (t, e) {
7165                                var n, i, o, a = e.x, r = e.y, s = 
7165Number.POSITIVE_INFINITY;
7166                                for (i = 0, o = t.length; i < o; ++i) {
7167                                    var c = t[i];
7168                                    if (c && c.hasValue()) {
7169                                        var u = c.getCenterPoint(), d = l.distanceBetweenPoints(e, u);
7170                                        d < s && (s = d, n = c)
7171                                    }
7172                                }
7173                                if (n) {
7174                                    var h = n.tooltipPosition();
7175                                    a = h.x, r = h.y
7176                                }
7177                                return{x: a, y: r}
7178                            }}
7179                    }
7180                }, {}], 35: [function (t, e, n) {
7181                    "use strict";
7182                    e.exports = function (t) {
7183                        var e = t.helpers, n = t.defaults.global;
7184                        n.elements.arc = {backgroundColor: n.defaultColor, borderColor: "#fff", borderWidth: 2}, t.elements.Arc = t.Element.extend({inLabelRange: function (t) {
7185                                var e = this._view;
7186                                return!!e && Math.pow(t - e.x, 2) < Math.pow(e.radius + e.hoverRadius, 2)
7187                            }, inRange: function (t, n) {
7188                                var i = this._view;
7189                                if (i) {
7190                                    for (var o = e.getAngleFromPoint(i, {x: t, y: n}), a = o.angle, r = o.distance, s = i.startAngle, l = i.endAngle; l < s; )
7191                                        l += 2 * Math.PI;
7192                                    for (; a > l; )
7193                                        a -= 2 * Math.PI;
7194                                    for (; a < s; )
7195                                        a += 2 * Math.PI;
7196                                    var c = a >= s && a <= l, u = r >= i.innerRadius && r <= i.outerRadius;
7197                                    return c && u
7198                                }
7199                                return!1
7200                            }, getCenterPoint: function () {
7201                                var t = this._view, e = (t.startAngle + t.endAngle) / 2, n = (t.innerRadius + t.outerRadius) / 2;
7202                                return{x: t.x + Math.cos(e) * n, y: t.y + Math.sin(e) * n}
7203                            }, getArea: function () {
7204                                var t = this._view;
7205                                return Math.PI * ((t.endAngle - t.startAngle) / (2 * Math.PI)) * (Math.pow(t.outerRadius, 2) - Math.pow(t.innerRadius, 2))
7206                            }, tooltipPosition: function () {
7207                                var t = this._view, e = t.startAngle + (t.endAngle - t.startAngle) / 2, n = (t.outerRadius - t.innerRadius) / 2 + t.innerRadius;
7208                                return{x: t.x + Math.cos(e) * n, y: t.y + Math.sin(e) * n}
7209                            }, draw: function () {
7210                                var t = this._chart.ctx, e = this._view, n = e.startAngle, i = e.endAngle;
7211                                t.beginPath(), t.arc(e.x, e.y, e.outerRadius, n, i), t.arc(e.x, e.y, e.innerRadius, i, n, !0), t.closePath(), t.strokeStyle = e.borderColor, t.lineWidth = e.borderWidth, t.fillStyle = e.backgroundColor, t.fill(), t.lineJoin = "bevel", e.borderWidth && t.stroke()
7212                            }})
7213                    }
7214                }, {}], 36: [function (t, e, n) {
7215                    "use strict";
7216                    e.exports = function (t) {
7217                        var e = t.helpers, n = t.defaults.global;
7218                        t.defaults.global.elements.line = {tension: .4, backgroundColor: n.defaultColor, borderWidth: 3, borderColor: n.defaultColor, borderCapStyle: "butt", borderDash: [], borderDashOffset: 0, borderJoinStyle: "miter", capBezierPoints: !0, fill: !0}, t.elements.Line = t.Element.extend({draw: function () {
7219                                var t, i, o, a, r = this, s = r._view, l = r._chart.ctx, c = s.spanGaps, u = r._children.slice(), d = n.elements.line, h = -1;
7220                                for (r._loop && u.length && u.push(u[0]), l.save(), l.lineCap = s.borderCapStyle || d.borderCapStyle, l.setLineDash && l.setLineDash(s.borderDash || d.borderDash), l.lineDashOffset = s.borderDashOffset || d.borderDashOffset, l.lineJoin = s.borderJoinStyle || d.borderJoinStyle, l.lineWidth = s.borderWidth || d.borderWidth, l.strokeStyle = s.borderColor || n.defaultColor, l.beginPath(), h = - 1, t = 0; t < u.length; ++t)
7221                                    i = u[t], o = e.previousItem(u, t), a = i._view, 0 === t ? a.skip || (l.moveTo(a.x, a.y), h = t) 
7221: (o = -1 === h ? o : u[h], a.skip || (h !== t - 1 && !c || -1 === h ? l.moveTo(a.x, a.y) : e.canvas.lineTo(l, o._view, i._view), h = t));
7222                                l.stroke(), l.restore()
7223                            }})
7224                    }
7225                }, {}], 37: [function (t, e, n) {
7226                    "use strict";
7227                    e.exports = function (t) {
7228                        function e(t) {
7229                            var e = this._view;
7230                            return!!e && Math.pow(t - e.x, 2) < Math.pow(e.radius + e.hitRadius, 2)
7231                        }
7232                        var n = t.helpers, i = t.defaults.global, o = i.defaultColor;
7233                        i.elements.point = {radius: 3, pointStyle: "circle", backgroundColor: o, borderWidth: 1, borderColor: o, hitRadius: 1, hoverRadius: 4, hoverBorderWidth: 1}, t.elements.Point = t.Element.extend({inRange: function (t, e) {
7234                                var n = this._view;
7235                                return!!n && Math.pow(t - n.x, 2) + Math.pow(e - n.y, 2) < Math.pow(n.hitRadius + n.radius, 2)
7236                            }, inLabelRange: e, inXRange: e, inYRange: function (t) {
7237                                var e = this._view;
7238                                return!!e && Math.pow(t - e.y, 2) < Math.pow(e.radius + e.hitRadius, 2)
7239                            }, getCenterPoint: function () {
7240                                var t = this._view;
7241                                return{x: t.x, y: t.y}
7242                            }, getArea: function () {
7243                                return Math.PI * Math.pow(this._view.radius, 2)
7244                            }, tooltipPosition: function () {
7245                                var t = this._view;
7246                                return{x: t.x, y: t.y, padding: t.radius + t.borderWidth}
7247                            }, draw: function (e) {
7248                                var a = this._view, r = this._model, s = this._chart.ctx, l = a.pointStyle, c = a.radius, u = a.x, d = a.y, h = t.helpers.color, p = 0;
7249                                a.skip || (s.strokeStyle = a.borderColor || o, s.lineWidth = n.getValueOrDefault(a.borderWidth, i.elements.point.borderWidth), s.fillStyle = a.backgroundColor || o, void 0 !== e && (r.x < e.left || 1.01 * e.right < r.x || r.y < e.top || 1.01 * e.bottom < r.y) && (r.x < e.left ? p = (u - r.x) / (e.left - r.x) : 1.01 * e.right < r.x ? p = (r.x - u) / (r.x - e.right) : r.y < e.top ? p = (d - r.y) / (e.top - r.y) : 1.01 * e.bottom < r.y && (p = (r.y - d) / (r.y - e.bottom)), p = Math.round(100 * p) / 100, s.strokeStyle = h(s.strokeStyle).alpha(p).rgbString(), s.fillStyle = h(s.fillStyle).alpha(p).rgbString()), t.canvasHelpers.drawPoint(s, l, c, u, d))
7250                            }})
7251                    }
7252                }, {}], 38: [function (t, e, n) {
7253                    "use strict";
7254                    e.exports = function (t) {
7255                        function e(t) {
7256                            return void 0 !== t._view.width
7257                        }
7258                        function n(t) {
7259                            var n, i, o, a, r = t._view;
7260                            if (e(t)) {
7261                                var s = r.width / 2;
7262                                n = r.x - s, i = r.x + s, o = Math.min(r.y, r.base), a = Math.max(r.y, r.base)
7263                            } else {
7264                                var l = r.height / 2;
7265                                n = Math.min(r.x, r.base), i = Math.max(r.x, r.base), o = r.y - l, a = r.y + l
7266                            }
7267                            return{left: n, top: o, right: i, bottom: a}
7268                        }
7269                        var i = t.defaults.global;
7270                        i.elements.rectangle = {backgroundColor: i.defaultColor, borderWidth: 0, borderColor: i.defaultColor, borderSkipped: "bottom"}, t.elements.Rectangle = t.Element.extend({draw: function () {
7271                                function t(t) {
7272                                    return v[(y + t) % 4]
7273                                }
7274                                var e, n, i, o, a, r, s, l = this._chart.ctx, c = this._view, u = c.borderWidth;
7275                                if (c.horizontal ? (e = c.base, n = c.x, i = c.y - c.height / 2, o = c.y + c.height / 2, a = n > e ? 1 : -1, r = 1, s = c.borderSkipped || "left") : (e = c.x - c.width / 2, n = c.x + c.width / 2, i = c.y, a = 1, r = (o = c.base) > i ? 1 : -1, s = c.borderSkipped || "bottom"), u) {
7276                                    var d = Math.min(Math.abs(e - n), Math.abs(i - o)), h = (u = u > d ? d : u) / 2, p = e + ("left" !== s ? h * a : 0), f = n + ("right" !== s ? -h * a : 0), m = i + ("top" !== s ? h * r : 0), g = o + ("bottom" !== s ? -h * r : 0);
7277                                    p !== f && (i = m, o = g), m !== g && (e = p, n = f)
7278                                }
7279                                l.beginPath(), l.fillStyle = c.backgroundColor, l.strokeStyle = c.borderColor, l.lineWidth = u;
7280                                var v = [[e, o], [e, i], [n, i], [n, o]], y = ["bottom", "left", "top", "right"].indexOf(s, 0);
7281                                -1 === y && (y = 0);
7282                                var b = t(0);
7283                                l.moveTo(b[0], b[1]);
7284                                for (var x = 1; x < 4; x++)
7285                                    b = t(x), l.lineTo(b[0], b[1]);
7286                                l.fill(), u && l.stroke()
7287                            }, height: function () {
7288                                var t = this._view;
7289                                return t.base - t.y
7290                            }, inRange: function (t, e) {
7291                                var i = !1;
7292                                if (this._view) {
7293                                    var o = n(this);
7294                                    i = t >= o.left && t <= o.right && e >= o.top && e <= o.bottom
7295                                }
7296                                return i
7297                            }, inLabelRange: function (t, i) {
7298                                var o = this;
7299                                if (!o._view)
7300                                    return!1;
7301                                var a = n(o);
7302                                return e(o) ? t >= a.left && t <= a.right : i >= a.top && i <= a.bottom
7303                            }, inXRange: function (t) {
7304                                var e = n(this);
7305                                return t >= e.left && t <= e.right
7306                            }, inYRange: function (t) {
7307                                var e = n(this);
7308                                return t >= e.top && t <= e.bottom
7309                            }, getCenterPoint: function () {
7310                                var t, n, i = this._view;
7311                                return e(this) ? (t = i.x, n = (i.y + i.base) / 2) : (t = (i.x + i.base) / 2, n = i.y), {x: t, y: n}
7312                            }, getArea: function () {
7313                                var t = this._view;
7314                                return t.width * Math.abs(t.y - t.base)
7315                            }, tooltipPosition: function () {
7316                                var t = this._view;
7317                                return{x: t.x, y: t.y}
7318                            }})
7319                    }
7320                }, {}], 39: [function (t, e, n) {
7321                    "use strict";
7322                    e.exports = function (t) {
7323                        function e(t, e) {
7324                            var n = l.getStyle(t, e), i = n && n.match(/^(\d+)(\.\d+)?px$/);
7325                            return i ? Number(i[1]) : void 0
7326                        }
7327                        function n(t, n) {
7328                            var i = t.style, o = t.getAttribute("height"), a = t.getAttribute("width");
7329                            if (t._chartjs = {initial: {height: o, width: a, style: {display: i.display, height: i.height, width: i.width}}}, i.display = i.display || "block", null === a || "" === a) {
7330                                var r = e(t, "width");
7331                                void 0 !== r && (t.width = r)
7332                            }
7333                            if (null === o || "" === o)
7334                                if ("" === t.style.height)
7335                                    t.height = t.width / (n.options.aspectRatio || 2);
7336                                else {
7337                                    var s = e(t, "height");
7338                                    void 0 !== r && (t.height = s)
7339                                }
7340                            return t
7341                        }
7342                        function i(t, e, n, i, o) {
7343                            return{type: t, chart: e, native: o || null, x: void 0 !== n ? n : null, y: void 0 !== i ? i : null}
7344                        }
7345                        function o(t, e) {
7346                            var n = c[t.type] || t.type, o = l.getRelativePosition(t, e);
7347                            return i(n, e, o.x, o.y, t)
7348                        }
7349                        function a(t) {
7350                            var e = document.createElement("iframe");
7351                            return e.className = "chartjs-hidden-iframe", e.style.cssText = "display:block;overflow:hidden;border:0;margin:0;top:0;left:0;bottom:0;right:0;height:100%;width:100%;position:absolute;pointer-events:none;z-index:-1;", e.tabIndex = -1, l.addEvent(e, "load", function () {
7352                                l.addEvent(e.contentWindow || e, "resize", t), t()
7353                            }), e
7354                        }
7355                        function r(t, e, n) {
7356                            var o = t._chartjs = {ticking: !1};
7357                            o.resizer = a(function () {
7358                                o.ticking || (o.ticking = !0, l.requestAnimFrame.call(window, function () {
7359                                    if (o.resizer)
7360                                        return o.ticking = !1, e(i("resize", n))
7361                                }))
7362                            }), t.insertBefore(o.resizer, t.firstChild)
7363                        }
7364                        function s(t) {
7365                            if (t && t._chartjs) {
7366                                var e = t._chartjs.resizer;
7367                                e && (e.parentNode.removeChild(e), t._chartjs.resizer = null), delete t._chartjs
7368                            }
7369                        }
7370                        var l = t.helpers, c = {touchstart: "mousedown", touchmove: "mousemove", touchend: "mouseup", pointerenter: "mouseenter", pointerdown: "mousedown", pointermove: "mousemove", pointerup: "mouseup", pointerleave: "mouseout", pointerout: "mouseout"};
7371                        return{acquireContext: function (t, e) {
7372                                "string" == typeof t ? t = document.getElementById(t) : t.length && (t = t[0]), t && t.canvas && (t = t.canvas);
7373                                var i = t && t.getContext && t.getContext("2d");
7374                                return i && i.canvas === t ? (n(t, e), i) : null
7375                            }, releaseContext: function (t) {
7376                                var e = t.canvas;
7377                                if (e._chartjs) {
7378                                    var n = e._chartjs.initial;
7379                                    ["height", "width"].forEach(function (t) {
7380                                        var i = n[t];
7381                                        void 0 === i || null === i ? e.removeAttribute(t) : e.setAttribute(t, i)
7382                                    }), l.each(n.style || {}, function (t, n) {
7383                                        e.style[n] = t
7384                                    }), e.width = e.width, delete e._chartjs
7385                                }
7386                            }, addEventListener: function (t, e, n) {
7387                                var i = t.canvas;
7388                                if ("resize" !== e) {
7389                                    var a = n._chartjs || (n._chartjs = {}), s = (a.proxies || (a.proxies = {}))[t.id + "_" + e] = function (e) {
7390                                        n(o(e, t))
7391                                    };
7392                                    l.addEvent(i, e, s)
7393                                } else
7394                                    r(i.parentNode, n, t)
7395                            }, removeEventListener: function (t, e, n) {
7396                                var i = t.canvas;
7397                                if ("resize" !== e) {
7398                                    var o = ((n._chartjs || {}).proxies || {})[t.id + "_" + e];
7399                                    o && l.removeEvent(i, e, o)
7400                                } else
7401                                    s(i.parentNode)
7402                            }}
7403                    }
7404                }, {}], 40: [function (t, e, n) {
7405                    "use strict";
7406                    var i = t(39);
7407                    e.exports = function (t) {
7408                        t.platform = {acquireContext: function () {}, releaseContext: function () {}, addEventListener: function () {}, removeEventListener: function () {}}, t.helpers.extend(t.platform, i(t))
7409                    }
7410                }, {39: 39}], 41: [function (t, e, n) {
7411                    "use strict";
7412                    e.exports = function (t) {
7413                        function e(t, e, n) {
7414                            var i, o = t._model || {}, a = o.fill;
7415                            if (void 0 === a && (a = !!o.backgroundColor), !1 === a || null === a)
7416                                return!1;
7417                            if (!0 === a)
7418                                return"origin";
7419                            if (i = parseFloat(a, 10), isFinite(i) && Math.floor(i) === i)
7420                                return"-" !== a[0] && "+" !== a[0] || (i = e + i), !(i === e || i < 0 || i >= n) && i;
7421                            switch (a) {
7422                                case"bottom":
7423                                    return"start";
7424                                case"top":
7425                                    return"end";
7426                                case"zero":
7427                                    return"origin";
7428                                case"origin":
7429                                case"start":
7430                                case"end":
7431                                    return a;
7432                                default:
7433                                    return!1
7434                            }
7435                        }
7436                        function n(t) {
7437                            var e, n = t.el._model || {}, i = t.el._scale || {}, o = t.fill, a = null;
7438                            if (isFinite(o))
7439                                return null;
7440                            if ("start" === o ? a = void 0 === n.scaleBottom ? i.bottom : n.scaleBottom : "end" === o ? a = void 0 === n.scaleTop ? i.top : n.scaleTop : void 0 !== n.scaleZero ? a = n.scaleZero : i.getBasePosition ? a = i.getBasePosition() : i.getBasePixel && (a = i.getBasePixel()), void 0 !== a && null !== a) {
7441                                if (void 0 !== a.x && void 0 !== a.y)
7442                                    return a;
7443                                if ("number" == typeof a && isFinite(a))
7444                                    return e = i.isHorizontal(), {x: e ? a : null, y: e ? null : a}
7445                            }
7446                            return null
7447                        }
7448                        function i(t, e, n) {
7449                            var i, o = t[e].fill, a = [e];
7450                            if (!n)
7451                                return o;
7452                            for (; !1 !== o && -1 === a.indexOf(o); ) {
7453                                if (!isFinite(o))
7454                                    return o;
7455                                if (!(i = t[o]))
7456                                    return!1;
7457                                if (i.visible)
7458               
vendor: 9,235 bytes, lines 7458-7564
7458                     return o;
7459                                a.push(o), o = i.fill
7460                            }
7461                            return!1
7462                        }
7463                        function o(t) {
7464                            var e = t.fill, n = "dataset";
7465                            return!1 === e ? null : (isFinite(e) || (n = "boundary"), u[n](t))
7466                        }
7467                        function a(t) {
7468                            return t && !t.skip
7469                        }
7470                        function r(t, e, n, i, o) {
7471                            var a;
7472                            if (i && o) {
7473                                for (t.moveTo(e[0].x, e[0].y), a = 1; a < i; ++a)
7474                                    c.canvas.lineTo(t, e[a - 1], e[a]);
7475                                for (t.lineTo(n[o - 1].x, n[o - 1].y), a = o - 1; a > 0; --a)
7476                                    c.canvas.lineTo(t, n[a], n[a - 1], !0)
7477                            }
7478                        }
7479                        function s(t, e, n, i, o, s) {
7480                            var l, c, u, d, h, p, f, m = e.length, g = i.spanGaps, v = [], y = [], b = 0, x = 0;
7481                            for (t.beginPath(), l = 0, c = m + !!s; l < c; ++l)
7482                                h = n(d = e[u = l % m]._view, u, i), p = a(d), f = a(h), p && f ? (b = v.push(d), x = y.push(h)) : b && x && (g ? (p && v.push(d), f && y.push(h)) : (r(t, v, y, b, x), b = x = 0, v = [], y = []));
7483                            r(t, v, y, b, x), t.closePath(), t.fillStyle = o, t.fill()
7484                        }
7485                        t.defaults.global.plugins.filler = {propagate: !0};
7486                        var l = t.defaults, c = t.helpers, u = {dataset: function (t) {
7487                                var e = t.fill, n = t.chart, i = n.getDatasetMeta(e), o = i && n.isDatasetVisible(e) && i.dataset._children || [];
7488                                return o.length ? function (t, e) {
7489                                    return o[e]._view || null
7490                                } : null
7491                            }, boundary: function (t) {
7492                                var e = t.boundary, n = e ? e.x : null, i = e ? e.y : null;
7493                                return function (t) {
7494                                    return{x: null === n ? t.x : n, y: null === i ? t.y : i}
7495                                }
7496                            }};
7497                        return{id: "filler", afterDatasetsUpdate: function (a, r) {
7498                                var s, l, c, u, d = (a.data.datasets || []).length, h = r.propagate, p = [];
7499                                for (l = 0; l < d; ++l)
7500                                    u = null, (c = (s = a.getDatasetMeta(l)).dataset) && c._model && c instanceof t.elements.Line && (u = {visible: a.isDatasetVisible(l), fill: e(c, l, d), chart: a, el: c}), s.$filler = u, p.push(u);
7501                                for (l = 0; l < d; ++l)
7502                                    (u = p[l]) && (u.fill = i(p, l, h), u.boundary = n(u), u.mapper = o(u))
7503                            }, beforeDatasetDraw: function (t, e) {
7504                                var n = e.meta.$filler;
7505                                if (n) {
7506                                    var i = n.el, o = i._view, a = i._children || [], r = n.mapper, c = o.backgroundColor || l.global.defaultColor;
7507                                    r && c && a.length && s(t.ctx, a, r, o, c, i._loop)
7508                                }
7509                            }}
7510                    }
7511                }, {}], 42: [function (t, e, n) {
7512                    "use strict";
7513                    e.exports = function (t) {
7514                        function e(t, e) {
7515                            return t.usePointStyle ? e * Math.SQRT2 : t.boxWidth
7516                        }
7517                        function n(e, n) {
7518                            var i = new t.Legend({ctx: e.ctx, options: n, chart: e});
7519                            o.configure(e, i, n), o.addBox(e, i), e.legend = i
7520                        }
7521                        var i = t.helpers, o = t.layoutService, a = i.noop;
7522                        return t.defaults.global.legend = {display: !0, position: "top", fullWidth: !0, reverse: !1, weight: 1e3, onClick: function (t, e) {
7523                                var n = e.datasetIndex, i = this.chart, o = i.getDatasetMeta(n);
7524                                o.hidden = null === o.hidden ? !i.data.datasets[n].hidden : null, i.update()
7525                            }, onHover: null, labels: {boxWidth: 40, padding: 10, generateLabels: function (t) {
7526                                    var e = t.data;
7527                                    return i.isArray(e.datasets) ? e.datasets.map(function (e, n) {
7528                                        return{text: e.label, fillStyle: i.isArray(e.backgroundColor) ? e.backgroundColor[0] : e.backgroundColor, hidden: !t.isDatasetVisible(n), lineCap: e.borderCapStyle, lineDash: e.borderDash, lineDashOffset: e.borderDashOffset, lineJoin: e.borderJoinStyle, lineWidth: e.borderWidth, strokeStyle: e.borderColor, pointStyle: e.pointStyle, datasetIndex: n}
7529                                    }, this) : []
7530                                }}}, t.Legend = t.Element.extend({initialize: function (t) {
7531                                i.extend(this, t), this.legendHitBoxes = [], this.doughnutMode = !1
7532                            }, beforeUpdate: a, update: function (t, e, n) {
7533                                var i = this;
7534                                return i.beforeUpdate(), i.maxWidth = t, i.maxHeight = e, i.margins = n, i.beforeSetDimensions(), i.setDimensions(), i.afterSetDimensions(), i.beforeBuildLabels(), i.buildLabels(), i.afterBuildLabels(), i.beforeFit(), i.fit(), i.afterFit(), i.afterUpdate(), i.minSize
7535                            }, afterUpdate: a, beforeSetDimensions: a, setDimensions: function () {
7536                                var t = this;
7537                                t.isHorizontal() ? (t.width = t.maxWidth, t.left = 0, t.right = t.width) : (t.height = t.maxHeight, t.top = 0, t.bottom = t.height), t.paddingLeft = 0, t.paddingTop = 0, t.paddingRight = 0, t.paddingBottom = 0, t.minSize = {width: 0, height: 0}
7538                            }, afterSetDimensions: a, beforeBuildLabels: a, buildLabels: function () {
7539                                var t = this, e = t.options.labels, n = e.generateLabels.call(t, t.chart);
7540                                e.filter && (n = n.filter(function (n) {
7541                                    return e.filter(n, t.chart.data)
7542                                })), t.options.reverse && n.reverse(), t.legendItems = n
7543                            }, afterBuildLabels: a, beforeFit: a, fit: function () {
7544                                var n = this, o = n.options, a = o.labels, r = o.display, s = n.ctx, l = t.defaults.global, c = i.getValueOrDefault, u = c(a.fontSize, l.defaultFontSize), d = c(a.fontStyle, l.defaultFontStyle), h = c(a.fontFamily, l.defaultFontFamily), p = i.fontString(u, d, h), f = n.legendHitBoxes = [], m = n.minSize, g = n.isHorizontal();
7545                                if (g ? (m.width = n.maxWidth, m.height = r ? 10 : 0) : (m.width = r ? 10 : 0, m.height = n.maxHeight), r)
7546                                    if (s.font = p, g) {
7547                                        var v = n.lineWidths = [0], y = n.legendItems.length ? u + a.padding : 0;
7548                                        s.textAlign = "left", s.textBaseline = "top", i.each(n.legendItems, function (t, i) {
7549                                            var o = e(a, u) + u / 2 + s.measureText(t.text).width;
7550                                            v[v.length - 1] + o + a.padding >= n.width && (y += u + a.padding, v[v.length] = n.left), f[i] = {left: 0, top: 0, width: o, height: u}, v[v.length - 1] += o + a.padding
7551                                        }), m.height += y
7552                                    } else {
7553                                        var b = a.padding, x = n.columnWidths = [], w = a.padding, k = 0, C = 0, S = u + b;
7554                                        i.each(n.legendItems, function (t, n) {
7555                                            var i = e(a, u) + u / 2 + s.measureText(t.text).width;
7556                                            C + S > m.height && (w += k + a.padding, x.push(k), k = 0, C = 0), k = Math.max(k, i), C += S, f[n] = {left: 0, top: 0, width: i, height: u}
7557                                        }), w += k, x.push(k), m.width += w
7558                                    }
7559                                n.width = m.width, n.height = m.height
7560                            }, afterFit: a, isHorizontal: function () {
7561                                return"top" === this.options.position || "bottom" === this.options.position
7562                            }, draw: function () {
7563                                var n = this, o = n.options, a = o.labels, r = t.defaults.global, s = r.elements.line, l = n.width, c = n.lineWidths;
7564                                if (o.display) {
7565                                    var u, d = n.ctx, h = i.getValueOrDefault, p = h(a.fontColor, r.defaultFontColor), f = h(a.fontSize, r.defaultFontSize), m = h(a.fontStyle, r.defaultFontStyle), g = h(a.fontFamily, r.defaultFontFamily), v = i.fontString(f, m, g);
7566                                    d.textAlign = "left", d.textBaseline = "top", d.lineWidth = .5, d.strokeStyle = p, d.fillStyle = p, d.font = v;
7567                                    var y = e(a, f), b = n.legendHitBoxes, x = function (e, n, i) {
7568                                        if (!(isNaN(y) || y <= 0)) {
7569                                            d.save(), d.fillStyle = h(i.fillStyle, r.defaultColor), d.lineCap = h(i.lineCap, s.borderCapStyle), d.lineDashOffset = h(i.lineDashOffset, s.borderDashOffset), d.lineJoin = h(i.lineJoin, s.borderJoinStyle), d.lineWidth = h(i.lineWidth, s.borderWidth), d.strokeStyle = h(i.strokeStyle, r.defaultColor);
7570                                            var a = 0 === h(i.lineWidth, s.borderWidth);
7571                                            if (d.setLineDash && d.setLineDash(h(i.lineDash, s.borderDash)), o.labels && o.labels.usePointStyle) {
7572                                                var l = f * Math.SQRT2 / 2, c = l / Math.SQRT2, u = e + c, p = n + c;
7573                                                t.canvasHelpers.drawPoint(d, i.pointStyle, l, u, p)
7574                                            } else
7575                                                a || d.strokeRect(e, n, y, f), d.fillRect(e, n, y, f);
7576                                            d.restore()
7577                                        }
7578                                    }, w = function (t, e, n, i) {
7579                                        d.fillText(n.text, y + f / 2 + t, e), n.hidden && (d.beginPath(), d.lineWidth = 2, d.moveTo(y + f / 2 + t, e + f / 2), d.lineTo(y + f / 2 + t + i, e + f / 2), d.stroke())
7580                                    }, k = n.isHorizontal();
7581                                    u = k ? {x: n.left + (l - c[0]) / 2, y: n.top + a.padding, line: 0} : {x: n.left + a.padding, y: n.top + a.padding, line: 0};
7582                                    var C = f + a.padding;
7583                                    i.each(n.legendItems, function (t, e) {
7584                                        var i = d.measureText(t.text).width, o = y + f / 2 + i, r = u.x, s = u.y;
7585                                        k ? r + o >= l && (s = u.y += C, u.line++, r = u.x = n.left + (l - c[u.line]) / 2) : s + C > n.bottom && (r = u.x = r + n.columnWidths[u.line] + a.padding, s = u.y = n.top + a.padding, u.line++), x(r, s, t), b[e].left = r, b[e].top = s, w(r, s, t, i), k ? u.x += o + a.padding : u.y += C
7586                                    })
7587                                }
7588                            }, handleEvent: function (t) {
7589                                var e = this, n = e.options, i = "mouseup" === t.type ? "click" : t.type, o = !1;
7590                                if ("mousemove" === i) {
7591                                    if (!n.onHover)
7592                                        return
7593                                } else {
7594                                    if ("click" !== i)
7595                                        return;
7596                                    if (!n.onClick)
7597                                        return
7598                                }
7599                                var a = t.x, r = t.y;
7600                                if (a >= e.left && a <= e.right && r >= e.top && r <= e.bottom)
7601                                    for (var s = e.legendHitBoxes, l = 0; l < s.length; ++l) {
7602                                        var c = s[l];
7603                                        if (a >= c.left && a <= c.left + c.width && r >= c.top && r <= c.top + c.height) {
7604                                            if ("click" === i) {
7605                                                n.onClick.call(e, t.native, e.legendItems[l]), o = !0;
7606                                                break
7607                                            }
7608                                            if ("mousemove" === i) {
7609                                                n.onHover.call(e, t.native, e.legendItems[l]), o = !0;
7610                                                break
7611                                            }
7612                                        }
7613                                    }
7614                                return o
7615                            }}), {id: "legend", beforeInit: function (t) {
7616                                var e = t.options.legend;
7617                                e && n(t, e)
7618                            }, beforeUpdate: function (e) {
7619                                var a = e.options.legend, r = e.legend;
7620                                a ? (a = i.configMerge(t.defaults.global.legend, a), r ? (o.configure(e, r, a), r.options = a) : n(e, a)) : r && (o.removeBox(e, r), delete e.legend)
7621                            }, afterEvent: function (t, e) {
7622                                var n = t.legend;
7623                                n && n.handleEvent(e)
7624                            }}
7625                    }
7626                }, {}], 43: [function (t, e, n) {
7627                    "use strict";
7628                    e.exports = function (t) {
7629                        function e(e, n) {
7630                            var o = new t.Title({ctx: e.ctx, options: n, chart: e});
7631                            i.configure(e, o, n), i.addBox(e, o), e.titleBlock = o
7632                        }
7633                        var n = t.helpers, i = t.layoutService, o = n.noop;
7634                        return t.defaults.global.title = {display: !1, position: "top", fullWidth: !0, weight: 2e3, fontStyle: "bold", padding: 10, text: ""}, t.Title = t.Element.extend({initialize: function (t) {
7635                                var e = this;
7636                                n.extend(e, t), e.legendHitBoxes = []
7637                            }, beforeUpdate: o, update: function (t, e, n) {
7638                                var i = this;
7639                                return i.beforeUpdate(), i.maxWidth = t, i.maxHeight = e, i.margins = n, i.beforeSetDimensions(), i.setDimensions(), i.afterSetDimensions(), i.beforeBuildLabels(), i.buildLabels(), i.afterBuildLabels(), i.beforeFit(), i.fit(), i.afterFit(), i.afterUpdate(), i.minSize
7640                            }, afterUpdate: o, beforeSetDimensions: o, setDimensions: function () {
7641                                var t = this;
7642                                t.isHorizontal() ? (t.width = t.maxWidth, t.left = 0, t.right = t.width) : (t.height = t.maxHeight, t.top = 0, t.bottom = t.height), t.paddingLeft = 0, t.paddingTop = 0, t.paddingRight = 0, t.paddingBottom = 0, t.minSize = {width: 0, height: 0}
7643                            }, afterSetDimensions: o, beforeBuildLabels: o, buildLabels: o, afterBuildLabels: o, beforeFit: o, fit: function () {
7644                                var e = this, i = n.getValueOrDefault, o = e.options, a = t.defaults.global, r = o.display, s = i(o.fontSize, a.defaultFontSize), l = e.minSize;
7645                                e.isHorizontal() ? (l.width = e.maxWidth, l.height = r ? s + 2 * o.padding : 0) : (l.width = r ? s + 2 * o.padding : 0, l.height = e.maxHeight), e.width = l.width, e.height = l.height
7646                            }, afterFit: o, isHorizontal: function () {
7647                                var t = this.options.position;
7648                                return"top" === t || "bottom" === t
7649                            }, draw: function () {
7650                                var e = this, i = e.ctx, o = n.getValueOrDefault, a = e.options, r = t.defaults.global;
7651                                if (a.display) {
7652                                    var s, l, c, u = o(a.fontSize, r.defaultFontSize), d = o(a.fontStyle, r.defaultFontStyle), h = o(a.fontFamily, r.defaultFontFamily), p = n.fontString(u, d, h), f = 0, m = e.top, g = e.left, v = e.bottom, y = e.right;
7653                                    i.fillStyle = o(a.fontColor, r.defaultFontColor), i.font = p, e.isH
7653orizontal() ? (s = g + (y - g) / 2, l = m + (v - m) / 2, c = y - g) : (s = "left" === a.position ? g + u / 2 : y - u / 2, l = m + (v - m) / 2, c = v - m, f = Math.PI * ("left" === a.position ? -.5 : .5)), i.save(), i.translate(s, l), i.rotate(f), i.textAlign = "center", i.textBaseline = "middle", i.fillText(a.text, 0, 0, c), i.restore()
7654                                }
7655                            }}), {id: "title", beforeInit: function (t) {
7656                                var n = t.options.title;
7657                                n && e(t, n)
7658                            }, beforeUpdate: function (o) {
7659                                var a = o.options.title, r = o.titleBlock;
7660                                a ? (a = n.configMerge(t.defaults.global.title, a), r ? (i.configure(o, r, a), r.options = a) : e(o, a)) : r && (t.layoutService.removeBox(o, r), delete o.titleBlock)
7661                            }}
7662                    }
7663                }, {}], 44: [function (t, e, n) {
7664                    "use strict";
7665                    e.exports = function (t) {
7666                        var e = t.helpers, n = {position: "bottom"}, i = t.Scale.extend({getLabels: function () {
7667                                var t = this.chart.data;
7668                                return(this.isHorizontal() ? t.xLabels : t.yLabels) || t.labels
7669                            }, determineDataLimits: function () {
7670                                var t = this, n = t.getLabels();
7671                                t.minIndex = 0, t.maxIndex = n.length - 1;
7672                                var i;
7673                                void 0 !== t.options.ticks.min && (i = e.indexOf(n, t.options.ticks.min), t.minIndex = -1 !== i ? i : t.minIndex), void 0 !== t.options.ticks.max && (i = e.indexOf(n, t.options.ticks.max), t.maxIndex = -1 !== i ? i : t.maxIndex), t.min = n[t.minIndex], t.max = n[t.maxIndex]
7674                            }, buildTicks: function () {
7675                                var t = this, e = t.getLabels();
7676                                t.ticks = 0 === t.minIndex && t.maxIndex === e.length - 1 ? e : e.slice(t.minIndex, t.maxIndex + 1)
7677                            }, getLabelForIndex: function (t, e) {
7678                                var n = this, i = n.chart.data, o = n.isHorizontal();
7679                                return i.yLabels && !o ? n.getRightValue(i.datasets[e].data[t]) : n.ticks[t - n.minIndex]
7680                            }, getPixelForValue: function (t, e, n, i) {
7681                                var o, a = this, r = Math.max(a.maxIndex + 1 - a.minIndex - (a.options.gridLines.offsetGridLines ? 0 : 1), 1);
7682                                if (void 0 !== t && null !== t && (o = a.isHorizontal() ? t.x : t.y), void 0 !== o || void 0 !== t && isNaN(e)) {
7683                                    var s = a.getLabels();
7684                                    t = o || t;
7685                                    var l = s.indexOf(t);
7686                                    e = -1 !== l ? l : e
7687                                }
7688                                if (a.isHorizontal()) {
7689                                    var c = a.width / r, u = c * (e - a.minIndex);
7690                                    return(a.options.gridLines.offsetGridLines && i || a.maxIndex === a.minIndex && i) && (u += c / 2), a.left + Math.round(u)
7691                                }
7692                                var d = a.height / r, h = d * (e - a.minIndex);
7693                                return a.options.gridLines.offsetGridLines && i && (h += d / 2), a.top + Math.round(h)
7694                            }, getPixelForTick: function (t, e) {
7695                                return this.getPixelForValue(this.ticks[t], t + this.minIndex, null, e)
7696                            }, getValueForPixel: function (t) {
7697                                var e = this, n = Math.max(e.ticks.length - (e.options.gridLines.offsetGridLines ? 0 : 1), 1), i = e.isHorizontal(), o = (i ? e.width : e.height) / n;
7698                                return t -= i ? e.left : e.top, e.options.gridLines.offsetGridLines && (t -= o / 2), t <= 0 ? 0 : Math.round(t / o)
7699                            }, getBasePixel: function () {
7700                                return this.bottom
7701                            }});
7702                        t.scaleService.registerScaleType("category", i, n)
7703                    }
7704                }, {}], 45: [function (t, e, n) {
7705                    "use strict";
7706                    e.exports = function (t) {
7707                        var e = t.helpers, n = {position: "left", ticks: {callback: t.Ticks.formatters.linear}}, i = t.LinearScaleBase.extend({determineDataLimits: function () {
7708                                function t(t) {
7709                                    return r ? t.xAxisID === n.id : t.yAxisID === n.id
7710                                }
7711                                var n = this, i = n.options, o = n.chart, a = o.data.datasets, r = n.isHorizontal();
7712                                n.min = null, n.max = null;
7713                                var s = i.stacked;
7714                                if (void 0 === s && e.each(a, function (e, n) {
7715                                    if (!s) {
7716                                        var i = o.getDatasetMeta(n);
7717                                        o.isDatasetVisible(n) && t(i) && void 0 !== i.stack && (s = !0)
7718                                    }
7719                                }), i.stacked || s) {
7720                                    var l = {};
7721                                    e.each(a, function (a, r) {
7722                                        var s = o.getDatasetMeta(r), c = [s.type, void 0 === i.stacked && void 0 === s.stack ? r : "", s.stack].join(".");
7723                                        void 0 === l[c] && (l[c] = {positiveValues: [], negativeValues: []});
7724                                        var u = l[c].positiveValues, d = l[c].negativeValues;
7725                                        o.isDatasetVisible(r) && t(s) && e.each(a.data, function (t, e) {
7726                                            var o = +n.getRightValue(t);
7727                                            isNaN(o) || s.data[e].hidden || (u[e] = u[e] || 0, d[e] = d[e] || 0, i.relativePoints ? u[e] = 100 : o < 0 ? d[e] += o : u[e] += o)
7728                                        })
7729                                    }), e.each(l, function (t) {
7730                                        var i = t.positiveValues.concat(t.negativeValues), o = e.min(i), a = e.max(i);
7731                                        n.min = null === n.min ? o : Math.min(n.min, o), n.max = null === n.max ? a : Math.max(n.max, a)
7732                                    })
7733                                } else
7734                                    e.each(a, function (i, a) {
7735                                        var r = o.getDatasetMeta(a);
7736                                        o.isDatasetVisible(a) && t(r) && e.each(i.data, function (t, e) {
7737                                            var i = +n.getRightValue(t);
7738                                            isNaN(i) || r.data[e].hidden || (null === n.min ? n.min = i : i < n.min && (n.min = i), null === n.max ? n.max = i : i > n.max && (n.max = i))
7739                                        })
7740                                    });
7741                                n.min = isFinite(n.min) ? n.min : 0, n.max = isFinite(n.max) ? n.max : 1, this.handleTickRangeOptions()
7742                            }, getTickLimit: function () {
7743                                var n, i = this, o = i.options.ticks;
7744                                if (i.isHorizontal())
7745                                    n = Math.min(o.maxTicksLimit ? o.maxTicksLimit : 11, Math.ceil(i.width / 50));
7746                                else {
7747                                    var a = e.getValueOrDefault(o.fontSize, t.defaults.global.defaultFontSize);
7748                                    n = Math.min(o.maxTicksLimit ? o.maxTicksLimit : 11, Math.ceil(i.height / (2 * a)))
7749                                }
7750                                return n
7751                            }, handleDirectionalChanges: function () {
7752                                this.isHorizontal() || this.ticks.reverse()
7753                            }, getLabelForIndex: function (t, e) {
7754                                return+this.getRightValue(this.chart.data.datasets[e].data[t])
7755                            }, getPixelForValue: function (t) {
7756                                var e, n = this, i = n.start, o = +n.getRightValue(t), a = n.end - i;
7757                                return n.isHorizontal() ? (e = n.left + n.width / a * (o - i), Math.round(e)) : (e = n.bottom - n.height / a * (o - i), Math.round(e))
7758                            }, getValueForPixel: function (t) {
7759                                var e = this, n = e.isHorizontal(), i = n ? e.width : e.height, o = (n ? t - e.left : e.bottom - t) / i;
7760                                return e.start + (e.end - e.start) * o
7761                            }, getPixelForTick: function (t) {
7762                                return this.getPixelForValue(this.ticksAsNumbers[t])
7763                            }});
7764                        t.scaleService.registerScaleType("linear", i, n)
7765                    }
7766                }, {}], 46: [function (t, e, n) {
7767                    "use strict";
7768                    e.exports = function (t) {
7769                        var e = t.helpers, n = e.noop;
7770                        t.LinearScaleBase = t.Scale.extend({handleTickRangeOptions: function () {
7771                                var t = this, n = t.options.ticks;
7772                                if (n.beginAtZero) {
7773                                    var i = e.sign(t.min), o = e.sign(t.max);
7774                                    i < 0 && o < 0 ? t.max = 0 : i > 0 && o > 0 && (t.min = 0)
7775                                }
7776                                void 0 !== n.min ? t.min = n.min : void 0 !== n.suggestedMin && (null === t.min ? t.min = n.suggestedMin : t.min = Math.min(t.min, n.suggestedMin)), void 0 !== n.max ? t.max = n.max : void 0 !== n.suggestedMax && (null === t.max ? t.max = n.suggestedMax : t.max = Math.max(t.max, n.suggestedMax)), t.min === t.max && (t.max++, n.beginAtZero || t.min--)
7777                            }, getTickLimit: n, handleDirectionalChanges: n, buildTicks: function () {
7778                                var n = this, i = n.options.ticks, o = n.getTickLimit(), a = {maxTicks: o = Math.max(2, o), min: i.min, max: i.max, stepSize: e.getValueOrDefault(i.fixedStepSize, i.stepSize)}, r = n.ticks = t.Ticks.generators.linear(a, n);
7779                                n.handleDirectionalChanges(), n.max = e.max(r), n.min = e.min(r), i.reverse ? (r.reverse(), n.start = n.max, n.end = n.min) : (n.start = n.min, n.end = n.max)
7780                            }, convertTicksToLabels: function () {
7781                                var e = this;
7782                                e.ticksAsNumbers = e.ticks.slice(), e.zeroLineIndex = e.ticks.indexOf(0), t.Scale.prototype.convertTicksToLabels.call(e)
7783                            }})
7784                    }
7785                }, {}], 47: [function (t, e, n) {
7786                    "use strict";
7787                    e.exports = function (t) {
7788                        var e = t.helpers, n = {position: "left", ticks: {callback: t.Ticks.formatters.logarithmic}}, i = t.Scale.extend({determineDataLimits: function () {
7789                                function t(t) {
7790                                    return l ? t.xAxisID === n.id : t.yAxisID === n.id
7791                                }
7792                                var n = this, i = n.options, o = i.ticks, a = n.chart, r = a.data.datasets, s = e.getValueOrDefault, l = n.isHorizontal();
7793                                n.min = null, n.max = null, n.minNotZero = null;
7794                                var c = i.stacked;
7795                                if (void 0 === c && e.each(r, function (e, n) {
7796                                    if (!c) {
7797                                        var i = a.getDatasetMeta(n);
7798                                        a.isDatasetVisible(n) && t(i) && void 0 !== i.stack && (c = !0)
7799                                    }
7800                                }), i.stacked || c) {
7801                                    var u = {};
7802                                    e.each(r, function (o, r) {
7803                                        var s = a.getDatasetMeta(r), l = [s.type, void 0 === i.stacked && void 0 === s.stack ? r : "", s.stack].join(".");
7804                                        a.isDatasetVisible(r) && t(s) && (void 0 === u[l] && (u[l] = []), e.each(o.data, function (t, e) {
7805                                            var o = u[l], a = +n.getRightValue(t);
7806                                            isNaN(a) || s.data[e].hidden || (o[e] = o[e] || 0, i.relativePoints ? o[e] = 100 : o[e] += a)
7807                                        }))
7808                                    }), e.each(u, function (t) {
7809                                        var i = e.min(t), o = e.max(t);
7810                                        n.min = null === n.min ? i : Math.min(n.min, i), n.max = null === n.max ? o : Math.max(n.max, o)
7811                                    })
7812                                } else
7813                                    e.each(r, function (i, o) {
7814                                        var r = a.getDatasetMeta(o);
7815                                        a.isDatasetVisible(o) && t(r) && e.each(i.data, function (t, e) {
7816                                            var i = +n.getRightValue(t);
7817                                            isNaN(i) || r.data[e].hidden || (null === n.min ? n.min = i : i < n.min && (n.min = i), null === n.max ? n.max = i : i > n.max && (n.max = i), 0 !== i && (null === n.minNotZero || i < n.minNotZero) && (n.minNotZero = i))
7818                                        })
7819                                    });
7820                                n.min = s(o.min, n.min), n.max = s(o.max, n.max), n.min === n.max && (0 !== n.min && null !== n.min ? (n.min = Math.pow(10, Math.floor(e.log10(n.min)) - 1), n.max = Math.pow(10, Math.floor(e.log10(n.max)) + 1)) : (n.min = 1, n.max = 10))
7821                            }, buildTicks: function () {
7822                                var n = this, i = n.options.ticks, o = {min: i.min, max: i.max}, a = n.ticks = t.Ticks.generators.logarithmic(o, n);
7823                                n.isHorizontal() || a.reverse(), n.max = e.max(a), n.min = e.min(a), i.reverse ? (a.reverse(), n.start = n.max, n.end = n.min) : (n.start = n.min, n.end = n.max)
7824                            }, convertTicksToLabels: function () {
7825                                this.tickValues = this.ticks.slice(), t.Scale.prototype.convertTicksToLabels.call(this)
7826                            }, getLabelForIndex: function (t, e) {
7827                                return+this.getRightValue(this.chart.data.datasets[e].data[t])
7828                            }, getPixelForTick: function (t) {
7829                                return this.getPixelForValue(this.tickValues[t])
7830                            }, getPixelForValue: function (t) {
7831                                var n, i, o, a = this, r = a.start, s = +a.getRightValue(t), l = a.options.ticks;
7832                                return a.isHorizontal() ? (o = e.log10(a.end) - e.log10(r), 0 === s ? i = a.left : (n = a.width, i = a.left + n / o * (e.log10(s) - e.log10(r)))) : (n = a.height, 0 !== r || l.reverse ? 0 === a.end && l.reverse ? (o = e.log10(a.start) - e.log10(a.minNotZero), i = s === a.end ? a.top : s === a.minNotZero ? a.top + .02 * n : a.top + .02 * n + .98 * n / o * (e.log10(s) - e.log10(a.minNotZero))) : 0 === s ? i = l.reverse ? a.top : a.bottom : (o = e.log10(a.end) - e.log10(r), n = a.height, i = a.bottom - n / o * (e.log10(s) - e.log10(r))) : (o = e.log10(a.end) - e.log10(a.minNotZero), i = s === r ? a.bottom : s === a.minNotZero ? a.bottom - .02 * n : a.bottom - .02 * n - .98 * n / o * (e.log10(s) - e.log10(a.minNotZero)))), i
7833                            }, getValueForPixel: function (t) {
7834                                var n, i, o = thi
7834s, a = e.log10(o.end) - e.log10(o.start);
7835                                return o.isHorizontal() ? (i = o.width, n = o.start * Math.pow(10, (t - o.left) * a / i)) : (i = o.height, n = Math.pow(10, (o.bottom - t) * a / i) / o.start), n
7836                            }});
7837                        t.scaleService.registerScaleType("logarithmic", i, n)
7838                    }
7839                }, {}], 48: [function (t, e, n) {
7840                    "use strict";
7841                    e.exports = function (t) {
7842                        function e(t) {
7843                            var e = t.options;
7844                            return e.angleLines.display || e.pointLabels.display ? t.chart.data.labels.length : 0
7845                        }
7846                        function n(t) {
7847                            var e = t.options.pointLabels, n = p.getValueOrDefault(e.fontSize, f.defaultFontSize), i = p.getValueOrDefault(e.fontStyle, f.defaultFontStyle), o = p.getValueOrDefault(e.fontFamily, f.defaultFontFamily);
7848                            return{size: n, style: i, family: o, font: p.fontString(n, i, o)}
7849                        }
7850                        function i(t, e, n) {
7851                            return p.isArray(n) ? {w: p.longestText(t, t.font, n), h: n.length * e + 1.5 * (n.length - 1) * e} : {w: t.measureText(n).width, h: e}
7852                        }
7853                        function o(t, e, n, i, o) {
7854                            return t === i || t === o ? {start: e - n / 2, end: e + n / 2} : t < i || t > o ? {start: e - n - 5, end: e} : {start: e, end: e + n + 5}
7855                        }
7856                        function a(t) {
7857                            var a, r, s, l = n(t), c = Math.min(t.height / 2, t.width / 2), u = {r: t.width, l: 0, t: t.height, b: 0}, d = {};
7858                            t.ctx.font = l.font, t._pointLabelSizes = [];
7859                            var h = e(t);
7860                            for (a = 0; a < h; a++) {
7861                                s = t.getPointPosition(a, c), r = i(t.ctx, l.size, t.pointLabels[a] || ""), t._pointLabelSizes[a] = r;
7862                                var f = t.getIndexAngle(a), m = p.toDegrees(f) % 360, g = o(m, s.x, r.w, 0, 180), v = o(m, s.y, r.h, 90, 270);
7863                                g.start < u.l && (u.l = g.start, d.l = f), g.end > u.r && (u.r = g.end, d.r = f), v.start < u.t && (u.t = v.start, d.t = f), v.end > u.b && (u.b = v.end, d.b = f)
7864                            }
7865                            t.setReductions(c, u, d)
7866                        }
7867                        function r(t) {
7868                            var e = Math.min(t.height / 2, t.width / 2);
7869                            t.drawingArea = Math.round(e), t.setCenterPoint(0, 0, 0, 0)
7870                        }
7871                        function s(t) {
7872                            return 0 === t || 180 === t ? "center" : t < 180 ? "left" : "right"
7873                        }
7874                        function l(t, e, n, i) {
7875                            if (p.isArray(e))
7876                                for (var o = n.y, a = 1.5 * i, r = 0; r < e.length; ++r)
7877                                    t.fillText(e[r], n.x, o), o += a;
7878                            else
7879                                t.fillText(e, n.x, n.y)
7880                        }
7881                        function c(t, e, n) {
7882                            90 === t || 270 === t ? n.y -= e.h / 2 : (t > 270 || t < 90) && (n.y -= e.h)
7883                        }
7884                        function u(t) {
7885                            var i = t.ctx, o = p.getValueOrDefault, a = t.options, r = a.angleLines, u = a.pointLabels;
7886                            i.lineWidth = r.lineWidth, i.strokeStyle = r.color;
7887                            var d = t.getDistanceFromCenterForValue(a.reverse ? t.min : t.max), h = n(t);
7888                            i.textBaseline = "top";
7889                            for (var m = e(t) - 1; m >= 0; m--) {
7890                                if (r.display) {
7891                                    var g = t.getPointPosition(m, d);
7892                                    i.beginPath(), i.moveTo(t.xCenter, t.yCenter), i.lineTo(g.x, g.y), i.stroke(), i.closePath()
7893                                }
7894                                if (u.display) {
7895                                    var v = t.getPointPosition(m, d + 5), y = o(u.fontColor, f.defaultFontColor);
7896                                    i.font = h.font, i.fillStyle = y;
7897                                    var b = t.getIndexAngle(m), x = p.toDegrees(b);
7898                                    i.textAlign = s(x), c(x, t._pointLabelSizes[m], v), l(i, t.pointLabels[m] || "", v, h.size)
7899                                }
7900                            }
7901                        }
7902                        function d(t, n, i, o) {
7903                            var a = t.ctx;
7904                            if (a.strokeStyle = p.getValueAtIndexOrDefault(n.color, o - 1), a.lineWidth = p.getValueAtIndexOrDefault(n.lineWidth, o - 1), t.options.gridLines.circular)
7905                                a.beginPath(), a.arc(t.xCenter, t.yCenter, i, 0, 2 * Math.PI), a.closePath(), a.stroke();
7906                            else {
7907                                var r = e(t);
7908                                if (0 === r)
7909                                    return;
7910                                a.beginPath();
7911                                var s = t.getPointPosition(0, i);
7912                                a.moveTo(s.x, s.y);
7913                                for (var l = 1; l < r; l++)
7914                                    s = t.getPointPosition(l, i), a.lineTo(s.x, s.y);
7915                                a.closePath(), a.stroke()
7916                            }
7917                        }
7918                        function h(t) {
7919                            return p.isNumber(t) ? t : 0
7920                        }
7921                        var p = t.helpers, f = t.defaults.global, m = {display: !0, animate: !0, position: "chartArea", angleLines: {display: !0, color: "rgba(0, 0, 0, 0.1)", lineWidth: 1}, gridLines: {circular: !1}, ticks: {showLabelBackdrop: !0, backdropColor: "rgba(255,255,255,0.75)", backdropPaddingY: 2, backdropPaddingX: 2, callback: t.Ticks.formatters.linear}, pointLabels: {display: !0, fontSize: 10, callback: function (t) {
7922                                    return t
7923                                }}}, g = t.LinearScaleBase.extend({setDimensions: function () {
7924                                var t = this, e = t.options, n = e.ticks;
7925                                t.width = t.maxWidth, t.height = t.maxHeight, t.xCenter = Math.round(t.width / 2), t.yCenter = Math.round(t.height / 2);
7926                                var i = p.min([t.height, t.width]), o = p.getValueOrDefault(n.fontSize, f.defaultFontSize);
7927                                t.drawingArea = e.display ? i / 2 - (o / 2 + n.backdropPaddingY) : i / 2
7928                            }, determineDataLimits: function () {
7929                                var t = this, e = t.chart, n = Number.POSITIVE_INFINITY, i = Number.NEGATIVE_INFINITY;
7930                                p.each(e.data.datasets, function (o, a) {
7931                                    if (e.isDatasetVisible(a)) {
7932                                        var r = e.getDatasetMeta(a);
7933                                        p.each(o.data, function (e, o) {
7934                                            var a = +t.getRightValue(e);
7935                                            isNaN(a) || r.data[o].hidden || (n = Math.min(a, n), i = Math.max(a, i))
7936                                        })
7937                                    }
7938                                }), t.min = n === Number.POSITIVE_INFINITY ? 0 : n, t.max = i === Number.NEGATIVE_INFINITY ? 0 : i, t.handleTickRangeOptions()
7939                            }, getTickLimit: function () {
7940                                var t = this.options.ticks, e = p.getValueOrDefault(t.fontSize, f.defaultFontSize);
7941                                return Math.min(t.maxTicksLimit ? t.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * e)))
7942                            }, convertTicksToLabels: function () {
7943                                var e = this;
7944                                t.LinearScaleBase.prototype.convertTicksToLabels.call(e), e.pointLabels = e.chart.data.labels.map(e.options.pointLabels.callback, e)
7945                            }, getLabelForIndex: function (t, e) {
7946                                return+this.getRightValue(this.chart.data.datasets[e].data[t])
7947                            }, fit: function () {
7948                                this.options.pointLabels.display ? a(this) : r(this)
7949                            }, setReductions: function (t, e, n) {
7950                                var i = this, o = e.l / Math.sin(n.l), a = Math.max(e.r - i.width, 0) / Math.sin(n.r), r = -e.t / Math.cos(n.t), s = -Math.max(e.b - i.height, 0) / Math.cos(n.b);
7951                                o = h(o), a = h(a), r = h(r), s = h(s), i.drawingArea = Math.min(Math.round(t - (o + a) / 2), Math.round(t - (r + s) / 2)), i.setCenterPoint(o, a, r, s)
7952                            }, setCenterPoint: function (t, e, n, i) {
7953                                var o = this, a = o.width - e - o.drawingArea, r = t + o.drawingArea, s = n + o.drawingArea, l = o.height - i - o.drawingArea;
7954                                o.xCenter = Math.round((r + a) / 2 + o.left), o.yCenter = Math.round((s + l) / 2 + o.top)
7955                            }, getIndexAngle: function (t) {
7956                                return t * (2 * Math.PI / e(this)) + (this.chart.options && this.chart.options.startAngle ? this.chart.options.startAngle : 0) * Math.PI * 2 / 360
7957                            }, getDistanceFromCenterForValue: function (t) {
7958                                var e = this;
7959                                if (null === t)
7960                                    return 0;
7961                                var n = e.drawingArea / (e.max - e.min);
7962                                return e.options.reverse ? (e.max - t) * n : (t - e.min) * n
7963                            }, getPointPosition: function (t, e) {
7964                                var n = this, i = n.getIndexAngle(t) - Math.PI / 2;
7965                                return{x: Math.round(Math.cos(i) * e) + n.xCenter, y: Math.round(Math.sin(i) * e) + n.yCenter}
7966                            }, getPointPositionForValue: function (t, e) {
7967                                return this.getPointPosition(t, this.getDistanceFromCenterForValue(e))
7968                            }, getBasePosition: function () {
7969                                var t = this, e = t.min, n = t.max;
7970                                return t.getPointPositionForValue(0, t.beginAtZero ? 0 : e < 0 && n < 0 ? n : e > 0 && n > 0 ? e : 0)
7971                            }, draw: function () {
7972                                var t = this, e = t.options, n = e.gridLines, i = e.ticks, o = p.getValueOrDefault;
7973                                if (e.display) {
7974                                    var a = t.ctx, r = o(i.fontSize, f.defaultFontSize), s = o(i.fontStyle, f.defaultFontStyle), l = o(i.fontFamily, f.defaultFontFamily), c = p.fontString(r, s, l);
7975                                    p.each(t.ticks, function (s, l) {
7976                                        if (l > 0 || e.reverse) {
7977                                            var u = t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]), h = t.yCenter - u;
7978                                            if (n.display && 0 !== l && d(t, n, u, l), i.display) {
7979                                                var p = o(i.fontColor, f.defaultFontColor);
7980                                                if (a.font = c, i.showLabelBackdrop) {
7981                                                    var m = a.measureText(s).width;
7982                                                    a.fillStyle = i.backdropColor, a.fillRect(t.xCenter - m / 2 - i.backdropPaddingX, h - r / 2 - i.backdropPaddingY, m + 2 * i.backdropPaddingX, r + 2 * i.backdropPaddingY)
7983                                                }
7984                                                a.textAlign = "center", a.textBaseline = "middle", a.fillStyle = p, a.fillText(s, t.xCenter, h)
7985                                            }
7986                                        }
7987                                    }), (e.angleLines.display || e.pointLabels.display) && u(t)
7988                                }
7989                            }});
7990                        t.scaleService.registerScaleType("radialLinear", g, m)
7991                    }
7992                }, {}], 49: [function (t, e, n) {
7993                    "use strict";
7994                    var i = t(1);
7995                    i = "function" == typeof i ? i : window.moment, e.exports = function (t) {
7996                        function e(t, e) {
7997                            var n = t.options.time;
7998                            if ("string" == typeof n.parser)
7999                                return i(e, n.parser);
8000                            if ("function" == typeof n.parser)
8001                                return n.parser(e);
8002                            if ("function" == typeof e.getMonth || "number" == typeof e)
8003                                return i(e);
8004                            if (e.isValid && e.isValid())
8005                                return e;
8006                            var o = n.format;
8007                            return"string" != typeof o && o.call ? (console.warn("options.time.format is deprecated and replaced by options.time.parser."), o(e)) : i(e, o)
8008                        }
8009                        function n(t, e, n, i) {
8010                            for (var o, a = Object.keys(s), r = a.length, l = a.indexOf(t); l < r; l++) {
8011                                o = a[l];
8012                                var c = s[o], u = c.steps && c.steps[c.steps.length - 1] || c.maxStep;
8013                                if (void 0 === u || Math.ceil((n - e) / (u * c.size)) <= i)
8014                                    break
8015                            }
8016                            return o
8017                        }
8018                        function o(t, e, n, i) {
8019                            var o = s[n], a = o.size, r = Math.ceil((e - t) / a), l = 1, c = e - t;
8020                            if (o.steps)
8021                                for (var u = o.steps.length, d = 0; d < u && r > i; d++)
8022                                    l = o.steps[d], r = Math.ceil(c / (a * l));
8023                            else
8024                                for (; r > i && i > 0; )
8025                                    ++l, r = Math.ceil(c / (a * l));
8026                            return l
8027                        }
8028                        function a(t, e, n) {
8029                            var o = [];
8030                            if (t.maxTicks) {
8031                                var a = t.stepSize;
8032                                o.push(void 0 !== t.min ? t.min : n.min);
8033                                for (var r = i(n.min); r.add(a, t.unit).valueOf() < n.max; )
8034                                    o.push(r.valueOf());
8035                                var s = t.max || n.max;
8036                                o[o.length - 1] !== s && o.push(s)
8037                            }
8038                            return o
8039                        }
8040                        var r = t.helpers, s = {millisecond: {size: 1, steps: [1, 2, 5, 10, 20, 50, 100, 250, 500]}, second: {size: 1e3, steps: [1, 2, 5, 10, 30]}, minute: {size: 6e4, steps: [1, 2, 5, 10, 30]}, hour: {size: 36e5, steps: [1, 2, 3, 6, 12]}, day: {size: 864e5, steps: [1, 2, 5]}, week: {size: 6048e5, maxStep: 4}, month: {size: 2628e6, maxStep: 3}, quarter: {size: 7884e6, maxStep: 4}, year: {size: 3154e7, maxStep: !1}}, l = {position: "bottom", time: {parser: !1, format: !1, unit: !1, roun
8040d: !1, displayFormat: !1, isoWeekday: !1, minUnit: "millisecond", displayFormats: {millisecond: "h:mm:ss.SSS a", second: "h:mm:ss a", minute: "h:mm:ss a", hour: "MMM D, hA", day: "ll", week: "ll", month: "MMM YYYY", quarter: "[Q]Q - YYYY", year: "YYYY"}}, ticks: {autoSkip: !1}};
8041                        t.Ticks.generators.time = function (t, e) {
8042                            var n, o, r = t.isoWeekday;
8043                            return"week" === t.unit && !1 !== r ? (n = i(e.min).startOf("isoWeek").isoWeekday(r).valueOf(), o = i(e.max).startOf("isoWeek").isoWeekday(r), e.max - o > 0 && o.add(1, "week"), o = o.valueOf()) : (n = i(e.min).startOf(t.unit).valueOf(), o = i(e.max).startOf(t.unit), e.max - o > 0 && o.add(1, t.unit), o = o.valueOf()), a(t, e, {min: n, max: o})
8044                        };
8045                        var c = t.Scale.extend({initialize: function () {
8046                                if (!i)
8047                                    throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");
8048                                t.Scale.prototype.initialize.call(this)
8049                            }, determineDataLimits: function () {
8050                                var t, n = this, i = n.options.time, o = Number.MAX_SAFE_INTEGER, a = Number.MIN_SAFE_INTEGER, s = n.chart.data, l = {labels: [], datasets: []};
8051                                r.each(s.labels, function (r, s) {
8052                                    var c = e(n, r);
8053                                    c.isValid() && (i.round && c.startOf(i.round), t = c.valueOf(), o = Math.min(t, o), a = Math.max(t, a), l.labels[s] = t)
8054                                }), r.each(s.datasets, function (s, c) {
8055                                    var u = [];
8056                                    "object" == typeof s.data[0] && null !== s.data[0] && n.chart.isDatasetVisible(c) ? r.each(s.data, function (r, s) {
8057                                        var l = e(n, n.getRightValue(r));
8058                                        l.isValid() && (i.round && l.startOf(i.round), t = l.valueOf(), o = Math.min(t, o), a = Math.max(t, a), u[s] = t)
8059                                    }) : u = l.labels.slice(), l.datasets[c] = u
8060                                }), n.dataMin = o, n.dataMax = a, n._parsedData = l
8061                            }, buildTicks: function () {
8062                                var i, a, s = this, l = s.options.time, c = s.dataMin, u = s.dataMax;
8063                                if (l.min) {
8064                                    var d = e(s, l.min);
8065                                    l.round && d.round(l.round), i = d.valueOf()
8066                                }
8067                                l.max && (a = e(s, l.max).valueOf());
8068                                var h = s.getLabelCapacity(i || c), p = l.unit || n(l.minUnit, i || c, a || u, h);
8069                                s.displayFormat = l.displayFormats[p];
8070                                var f = l.stepSize || o(i || c, a || u, p, h);
8071                                s.ticks = t.Ticks.generators.time({maxTicks: h, min: i, max: a, stepSize: f, unit: p, isoWeekday: l.isoWeekday}, {min: c, max: u}), s.max = r.max(s.ticks), s.min = r.min(s.ticks)
8072                            }, getLabelForIndex: function (t, n) {
8073                                var i = this, o = i.chart.data.labels && t < i.chart.data.labels.length ? i.chart.data.labels[t] : "", a = i.chart.data.datasets[n].data[t];
8074                                return null !== a && "object" == typeof a && (o = i.getRightValue(a)), i.options.time.tooltipFormat && (o = e(i, o).format(i.options.time.tooltipFormat)), o
8075                            }, tickFormatFunction: function (t, e, n) {
8076                                var i = t.format(this.displayFormat), o = this.options.ticks, a = r.getValueOrDefault(o.callback, o.userCallback);
8077                                return a ? a(i, e, n) : i
8078                            }, convertTicksToLabels: function () {
8079                                var t = this;
8080                                t.ticksAsTimestamps = t.ticks, t.ticks = t.ticks.map(function (t) {
8081                                    return i(t)
8082                                }).map(t.tickFormatFunction, t)
8083                            }, getPixelForOffset: function (t) {
8084                                var e = this, n = e.max - e.min, i = n ? (t - e.min) / n : 0;
8085                                if (e.isHorizontal()) {
8086                                    var o = e.width * i;
8087                                    return e.left + Math.round(o)
8088                                }
8089                                var a = e.height * i;
8090                                return e.top + Math.round(a)
8091                            }, getPixelForValue: function (t, n, i) {
8092                                var o = this, a = null;
8093                                if (void 0 !== n && void 0 !== i && (a = o._parsedData.datasets[i][n]), null === a && (t && t.isValid || (t = e(o, o.getRightValue(t))), t && t.isValid && t.isValid() && (a = t.valueOf())), null !== a)
8094                                    return o.getPixelForOffset(a)
8095                            }, getPixelForTick: function (t) {
8096                                return this.getPixelForOffset(this.ticksAsTimestamps[t])
8097                            }, getValueForPixel: function (t) {
8098                                var e = this, n = e.isHorizontal() ? e.width : e.height, o = (t - (e.isHorizontal() ? e.left : e.top)) / n;
8099                                return i(e.min + o * (e.max - e.min))
8100                            }, getLabelWidth: function (e) {
8101                                var n = this, i = n.options.ticks, o = n.ctx.measureText(e).width, a = Math.cos(r.toRadians(i.maxRotation)), s = Math.sin(r.toRadians(i.maxRotation));
8102                                return o * a + r.getValueOrDefault(i.fontSize, t.defaults.global.defaultFontSize) * s
8103                            }, getLabelCapacity: function (t) {
8104                                var e = this;
8105                                e.displayFormat = e.options.time.displayFormats.millisecond;
8106                                var n = e.tickFormatFunction(i(t), 0, []), o = e.getLabelWidth(n);
8107                                return(e.isHorizontal() ? e.width : e.height) / o
8108                            }});
8109                        t.scaleService.registerScaleType("time", c, l)
8110                    }
8111                }, {1: 1}]}, {}, [7])(7)
8112    }), function (t) {
8113        t(["jquery"], function (t) {
8114            return function () {
8115                function e(e, n) {
8116                    return e || (e = l()), (u = t("#" + e.containerId)).length ? u : (n && (u = o(e)), u)
8117                }
8118                function n(e) {
8119                    for (var n = u.children(), o = n.length - 1; o >= 0; o--)
8120                        i(t(n[o]), e)
8121                }
8122                function i(e, n, i) {
8123                    var o = !(!i || !i.force) && i.force;
8124                    return!(!e || !o && 0 !== t(":focus", e).length) && (e[n.hideMethod]({duration: n.hideDuration, easing: n.hideEasing, complete: function () {
8125                            c(e)
8126                        }}), !0)
8127                }
8128                function o(e) {
8129                    return(u = t("<div/>").attr("id", e.containerId).addClass(e.positionClass).attr("aria-live", "polite").attr("role", "alert")).appendTo(t(e.target)), u
8130                }
8131                function a() {
8132                    return{tapToDismiss: !0, toastClass: "toast", containerId: "toast-container", debug: !1, showMethod: "fadeIn", showDuration: 300, showEasing: "swing", onShown: void 0, hideMethod: "fadeOut", hideDuration: 1e3, hideEasing: "swing", onHidden: void 0, extendedTimeOut: 1e3, iconClasses: {error: "toast-error", info: "toast-info", success: "toast-success", warning: "toast-warning"}, iconClass: "toast-info", positionClass: "toast-top-right", timeOut: 5e3, titleClass: "toast-title", messageClass: "toast-message", target: "body", closeHtml: '<button type="button">&times;</button>', newestOnTop: !0, preventDuplicates: !1, progressBar: !1}
8133                }
8134                function r(t) {
8135                    d && d(t)
8136                }
8137                function s(n) {
8138                    function i() {
8139                        n.iconClass && k.addClass(b.toastClass).addClass(x)
8140                    }
8141                    function o() {
8142                        b.newestOnTop ? u.prepend(k) : u.append(k)
8143                    }
8144                    function a() {
8145                        n.title && (C.append(n.title).addClass(b.titleClass), k.append(C))
8146                    }
8147                    function s() {
8148                        n.message && (S.append(n.message).addClass(b.messageClass), k.append(S))
8149                    }
8150                    function d() {
8151                        b.closeButton && (M.addClass("toast-close-button").attr("role", "button"), k.prepend(M))
8152                    }
8153                    function f() {
8154                        b.progressBar && (T.addClass("toast-progress"), k.prepend(T))
8155                    }
8156                    function m(e) {
8157                        if (!t(":focus", k).length || e)
8158                            return clearTimeout(I.intervalId), k[b.hideMethod]({duration: b.hideDuration, easing: b.hideEasing, complete: function () {
8159                                    c(k), b.onHidden && "hidden" !== A.state && b.onHidden(), A.state = "hidden", A.endTime = new Date, r(A)
8160                                }})
8161                    }
8162                    function g() {
8163                        (b.timeOut > 0 || b.extendedTimeOut > 0) && (w = setTimeout(m, b.extendedTimeOut), I.maxHideTime = parseFloat(b.extendedTimeOut), I.hideEta = (new Date).getTime() + I.maxHideTime)
8164                    }
8165                    function v() {
8166                        clearTimeout(w), I.hideEta = 0, k.stop(!0, !0)[b.showMethod]({duration: b.showDuration, easing: b.showEasing})
8167                    }
8168                    function y() {
8169                        var t = (I.hideEta - (new Date).getTime()) / I.maxHideTime * 100;
8170                        T.width(t + "%")
8171                    }
8172                    var b = l(), x = n.iconClass || b.iconClass;
8173                    if (void 0 !== n.optionsOverride && (b = t.extend(b, n.optionsOverride), x = n.optionsOverride.iconClass || x), !function (t, e) {
8174                        if (t.preventDuplicates) {
8175                            if (e.message === h)
8176                                return!0;
8177                            h = e.message
8178                        }
8179                        return!1
8180                    }(b, n)) {
8181                        p++, u = e(b, !0);
8182                        var w = null, k = t("<div/>"), C = t("<div/>"), S = t("<div/>"), T = t("<div/>"), M = t(b.closeHtml), I = {intervalId: null, hideEta: null, maxHideTime: null}, A = {toastId: p, state: "visible", startTime: new Date, options: b, map: n};
8183                        return i(), a(), s(), d(), f(), o(), k.hide(), k[b.showMethod]({duration: b.showDuration, easing: b.showEasing, complete: b.onShown}), b.timeOut > 0 && (w = setTimeout(m, b.timeOut), I.maxHideTime = parseFloat(b.timeOut), I.hideEta = (new Date).getTime() + I.maxHideTime, b.progressBar && (I.intervalId = setInterval(y, 10))), k.hover(v, g), !b.onclick && b.tapToDismiss && k.click(m), b.closeButton && M && M.click(function (t) {
8184                            t.stopPropagation ? t.stopPropagation() : void 0 !== t.cancelBubble && !0 !== t.cancelBubble && (t.cancelBubble = !0), m(!0)
8185                        }), b.onclick && k.click(function () {
8186                            b.onclick(), m()
8187                        }), r(A), b.debug && console && console.log(A), k
8188                    }
8189                }
8190                function l() {
8191                    return t.extend({}, a(), m.options)
8192                }
8193                function c(t) {
8194                    u || (u = e()), t.is(":visible") || (t.remove(), t = null, 0 === u.children().length && (u.remove(), h = void 0))
8195                }
8196                var u, d, h, p = 0, f = {error: "error", info: "info", success: "success", warning: "warning"}, m = {clear: function (t, o) {
8197                        var a = l();
8198                        u || e(a), i(t, a, o) || n(a)
8199                    }, remove: function (n) {
8200                        var i = l();
8201                        u || e(i), n && 0 === t(":focus", n).length ? c(n) : u.children().length && u.remove()
8202                    }, error: function (t, e, n) {
8203                        return s({type: f.error, iconClass: l().iconClasses.error, message: t, optionsOverride: n, title: e})
8204                    }, getContainer: e, info: function (t, e, n) {
8205                        return s({type: f.info, iconClass: l().iconClasses.info, message: t, optionsOverride: n, title: e})
8206                    }, options: {}, subscribe: function (t) {
8207                        d = t
8208                    }, success: function (t, e, n) {
8209                        return s({type: f.success, iconClass: l().iconClasses.success, message: t, optionsOverride: n, title: e})
8210                    }, version: "2.1.1", warning: function (t, e, n) {
8211                        return s({type: f.warning, iconClass: l().iconClasses.warning, message: t, optionsOverride: n, title: e})
8212                    }};
8213                return m
8214            }()
8215        })
8216    }("function" == typeof define && define.amd ? define : function (t, e) {
8217        "undefined" != typeof module && module.exports ? module.exports = e(require("jquery")) : window.toastr = e(window.jQuery)
8218    }), function (t) {
8219        var e = !1, n = {data: [], placeholder: "", secondaryPlaceholder: ""};
8220        t(document).ready(function () {
8221            t(document).on("click", ".chip .close", function (e) {
8222                var n = t(this);
8223                n.closest(".chips").data("initialized") || n.closest(".chip").remove()
8224            })
8225        }), t.fn.material_chip = function (i) {
8226            var o = this;
8227            return this.$el = t(this), this.$document = t(document), this.SELS = {CHIPS: ".chips", CHIP: ".chip", INPUT: "input", DELETE: ".fa", SELECTED_CHIP: ".selected"}, "data" === i ? this.$el.data("chips") : "options" === i ? this.$el.data("options") : (this.$el.data("options", t.extend({}, n, i)), this.init = function () {
8228                var e = 0;
8229                o.$el.each(function () {
8230                    var n = t(this);
8231                    if (!n.data("initialized")) {
8232                        var i = n.data("options");
8233                        (!i.data || !i.data instanceof Array) && (i.data = []), n.data("chips", i.data), n.data("index", e), n.data("initialized", !0), n.hasClass(o.SELS.CHIPS) || n.addClass("chips"), o.chips(n), e++
8234                    }
8235                })
8236            }, this.handleEvents = function () {
8237                var e = o.SELS;
8238                o.$document.on("click", e.CHIPS, function (n) {
8239                    t(n.target).find(e.INPUT).focus()
8240                }), o.$document.on("click", e.CHIP, function (n) {
8241                    t(e.CHIP).removeClass("selected"), t(this).toggleClass("selected")
8242                }
8242), o.$document.on("keydown", function (n) {
8243                    if (!t(n.target).is("input, textarea")) {
8244                        var i, a = o.$document.find(e.CHIP + e.SELECTED_CHIP), r = a.closest(e.CHIPS), s = a.siblings(e.CHIP).length;
8245                        if (a.length) {
8246                            var l = 8 === n.which || 46 === n.which, c = 37 === n.which, u = 39 === n.which;
8247                            if (l) {
8248                                n.preventDefault();
8249                                var d = r.data("index");
8250                                i = a.index(), o.deleteChip(d, i, r);
8251                                var h = null;
8252                                i + 1 < s ? h = i : i !== s && i + 1 !== s || (h = s - 1), h < 0 && (h = null), null !== h && o.selectChip(d, h, r), s || r.find("input").focus()
8253                            } else if (c) {
8254                                if ((i = a.index() - 1) < 0)
8255                                    return;
8256                                t(e.CHIP).removeClass("selected"), o.selectChip(r.data("index"), i, r)
8257                            } else if (u) {
8258                                if (i = a.index() + 1, t(e.CHIP).removeClass("selected"), i > s)
8259                                    return void r.find("input").focus();
8260                                o.selectChip(r.data("index"), i, r)
8261                            }
8262                        }
8263                    }
8264                }), o.$document.on("focusin", e.CHIPS + " " + e.INPUT, function (n) {
8265                    t(n.target).closest(e.CHIPS).addClass("focus"), t(e.CHIP).removeClass("selected")
8266                }), o.$document.on("focusout", e.CHIPS + " " + e.INPUT, function (n) {
8267                    t(n.target).closest(e.CHIPS).removeClass("focus")
8268                }), o.$document.on("keydown", e.CHIPS + " " + e.INPUT, function (n) {
8269                    var i = t(n.target), a = i.closest(e.CHIPS), r = a.data("index"), s = a.children(e.CHIP).length;
8270                    if (13 === n.which)
8271                        return n.preventDefault(), o.addChip(r, {tag: i.val()}, a), void i.val("");
8272                    var l = 8 === n.keyCode || 37 === n.keyCode, c = "" === i.val();
8273                    return l && c && s ? (o.selectChip(r, s - 1, a), void i.blur()) : void 0
8274                }), o.$document.on("click", e.CHIPS + " " + e.DELETE, function (n) {
8275                    var i = t(n.target), a = i.closest(e.CHIPS), r = i.closest(e.CHIP);
8276                    n.stopPropagation(), o.deleteChip(a.data("index"), r.index(), a), a.find("input").focus()
8277                })
8278            }, this.chips = function (t) {
8279                var e = "";
8280                t.data("options");
8281                t.data("chips").forEach(function (t) {
8282                    e += o.renderChip(t)
8283                }), e += '<input class="input" placeholder="">', t.html(e), o.setPlaceholder(t)
8284            }, this.renderChip = function (t) {
8285                if (t.tag) {
8286                    var e = '<div class="chip">' + t.tag;
8287                    return t.image && (e += ' <img src="' + t.image + '"> '), e += '<i class="close fa fa-times"></i>', e += "</div>"
8288                }
8289            }, this.setPlaceholder = function (t) {
8290                var e = t.data("options");
8291                t.data("chips").length && e.placeholder ? t.find("input").prop("placeholder", e.placeholder) : !t.data("chips").length && e.secondaryPlaceholder && t.find("input").prop("placeholder", e.secondaryPlaceholder)
8292            }, this.isValid = function (t, e) {
8293                for (var n = t.data("chips"), i = !1, o = 0; o < n.length; o++)
8294                    if (n[o].tag === e.tag)
8295                        return void(i = !0);
8296                return"" !== e.tag && !i
8297            }, this.addChip = function (e, n, i) {
8298                if (o.isValid(i, n)) {
8299                    i.data("options");
8300                    var a = o.renderChip(n);
8301                    i.data("chips").push(n), t(a).insertBefore(i.find("input")), i.trigger("chip.add", n), o.setPlaceholder(i)
8302                }
8303            }, this.deleteChip = function (t, e, n) {
8304                var i = n.data("chips")[e];
8305                n.find(".chip").eq(e).remove(), n.data("chips").splice(e, 1), n.trigger("chip.delete", i), o.setPlaceholder(n)
8306            }, this.selectChip = function (t, e, n) {
8307                var i = n.find(".chip").eq(e);
8308                i && !1 === i.hasClass("selected") && (i.addClass("selected"), n.trigger("chip.select", n.data("chips")[e]))
8309            }, this.getChipsElement = function (t, e) {
8310                return e.eq(t)
8311            }, this.init(), void(e || (this.handleEvents(), e = !0)))
8312        }
8313    }(jQuery);
8314} catch (err)
8315{
8316    //Error log  
8317}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.