PageSourceSearch

https://musique-journal.fr/wp-content/themes/musique-journal-2/assets/js/scripts.js?vsn=20250526

js musique-journal.fr collected 2026-10-02 08:37:38 UTC 818,296 bytes, 22,612 lines download raw bytes

1/*! jQuery UI - v1.12.1 - 2016-09-14
2 * http://jqueryui.com
3 * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
4 * Copyright jQuery Foundation and other contributors; Licensed MIT */
5
6(function (t) {
7  "function" == typeof define && define.amd ? define(["jquery"], t) : t(jQuery);
8})(function (t) {
9  function e(t) {
10    for (var e = t.css("visibility"); "inherit" === e; )
11      (t = t.parent()), (e = t.css("visibility"));
12    return "hidden" !== e;
13  }
14  function i(t) {
15    for (var e, i; t.length && t[0] !== document; ) {
16      if (
17        ((e = t.css("position")),
18        ("absolute" === e || "relative" === e || "fixed" === e) &&
19          ((i = parseInt(t.css("zIndex"), 10)), !isNaN(i) && 0 !== i))
20      )
21        return i;
22      t = t.parent();
23    }
24    return 0;
25  }
26  function s() {
27    (this._curInst = null),
28      (this._keyEvent = !1),
29      (this._disabledInputs = []),
30      (this._datepickerShowing = !1),
31      (this._inDialog = !1),
32      (this._mainDivId = "ui-datepicker-div"),
33      (this._inlineClass = "ui-datepicker-inline"),
34      (this._appendClass = "ui-datepicker-append"),
35      (this._triggerClass = "ui-datepicker-trigger"),
36      (this._dialogClass = "ui-datepicker-dialog"),
37      (this._disableClass = "ui-datepicker-disabled"),
38      (this._unselectableClass = "ui-datepicker-unselectable"),
39      (this._currentClass = "ui-datepicker-current-day"),
40      (this._dayOverClass = "ui-datepicker-days-cell-over"),
41      (this.regional = []),
42      (this.regional[""] = {
43        closeText: "Done",
44        prevText: "Prev",
45        nextText: "Next",
46        currentText: "Today",
47        monthNames: [
48          "January",
49          "February",
50          "March",
51          "April",
52          "May",
53          "June",
54          "July",
55          "August",
56          "September",
57          "October",
58          "November",
59          "December",
60        ],
61        monthNamesShort: [
62          "Jan",
63          "Feb",
64          "Mar",
65          "Apr",
66          "May",
67          "Jun",
68          "Jul",
69          "Aug",
70          "Sep",
71          "Oct",
72          "Nov",
73          "Dec",
74        ],
75        dayNames: [
76          "Sunday",
77          "Monday",
78          "Tuesday",
79          "Wednesday",
80          "Thursday",
81          "Friday",
82          "Saturday",
83        ],
84        dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
85        dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
86        weekHeader: "Wk",
87        dateFormat: "mm/dd/yy",
88        firstDay: 0,
89        isRTL: !1,
90        showMonthAfterYear: !1,
91        yearSuffix: "",
92      }),
93      (this._defaults = {
94        showOn: "focus",
95        showAnim: "fadeIn",
96        showOptions: {},
97        defaultDate: null,
98        appendText: "",
99        buttonText: "...",
100        buttonImage: "",
101        buttonImageOnly: !1,
102        hideIfNoPrevNext: !1,
103        navigationAsDateFormat: !1,
104        gotoCurrent: !1,
105        changeMonth: !1,
106        changeYear: !1,
107        yearRange: "c-10:c+10",
108        showOtherMonths: !1,
109        selectOtherMonths: !1,
110        showWeek: !1,
111        calculateWeek: this.iso8601Week,
112        shortYearCutoff: "+10",
113        minDate: null,
114        maxDate: null,
115        duration: "fast",
116        beforeShowDay: null,
117        beforeShow: null,
118        onSelect: null,
119        onChangeMonthYear: null,
120        onClose: null,
121        numberOfMonths: 1,
122        showCurrentAtPos: 0,
123        stepMonths: 1,
124        stepBigMonths: 12,
125        altField: "",
126        altFormat: "",
127        constrainInput: !0,
128        showButtonPanel: !1,
129        autoSize: !1,
130        disabled: !1,
131      }),
132      t.extend(this._defaults, this.regional[""]),
133      (this.regional.en = t.extend(!0, {}, this.regional[""])),
134      (this.regional["en-US"] = t.extend(!0, {}, this.regional.en)),
135      (this.dpDiv = n(
136        t(
137          "<div id='" +
138            this._mainDivId +
139            "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>",
140        ),
141      ));
142  }
143  function n(e) {
144    var i =
145      "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
146    return e
147      .on("mouseout", i, function () {
148        t(this).removeClass("ui-state-hover"),
149          -1 !== this.className.indexOf("ui-datepicker-prev") &&
150            t(this).removeClass("ui-datepicker-prev-hover"),
151          -1 !== this.className.indexOf("ui-datepicker-next") &&
152            t(this).removeClass("ui-datepicker-next-hover");
153      })
154      .on("mouseover", i, o);
155  }
156  function o() {
157    t.datepicker._isDisabledDatepicker(
158      m.inline ? m.dpDiv.parent()[0] : m.input[0],
159    ) ||
160      (t(this)
161        .parents(".ui-datepicker-calendar")
162        .find("a")
163        .removeClass("ui-state-hover"),
164      t(this).addClass("ui-state-hover"),
165      -1 !== this.className.indexOf("ui-datepicker-prev") &&
166        t(this).addClass("ui-datepicker-prev-hover"),
167      -1 !== this.className.indexOf("ui-datepicker-next") &&
168        t(this).addClass("ui-datepicker-next-hover"));
169  }
170  function a(e, i) {
171    t.extend(e, i);
172    for (var s in i) null == i[s] && (e[s] = i[s]);
173    return e;
174  }
175  function r(t) {
176    return function () {
177      var e = this.element.val();
178      t.apply(this, arguments),
179        this._refresh(),
180        e !== this.element.val() && this._trigger("change");
181    };
182  }
183  (t.ui = t.ui || {}), (t.ui.version = "1.12.1");
184  var h = 0,
185    l = Array.prototype.slice;
186  (t.cleanData = (function (e) {
187    return function (i) {
188      var s, n, o;
189      for (o = 0; null != (n = i[o]); o++)
190        try {
191          (s = t._data(n, "events")),
192            s && s.remove && t(n).triggerHandler("remove");
193        } catch (a) {}
194      e(i);
195    };
196  })(t.cleanData)),
197    (t.widget = function (e, i, s) {
198      var n,
199        o,
200        a,
201        r = {},
202        h = e.split(".")[0];
203      e = e.split(".")[1];
204      var l = h + "-" + e;
205      return (
206        s || ((s = i), (i = t.Widget)),
207        t.isArray(s) && (s = t.extend.apply(null, [{}].concat(s))),
208        (t.expr[":"][l.toLowerCase()] = function (e) {
209          return !!t.data(e, l);
210        }),
211        (t[h] = t[h] || {}),
212        (n = t[h][e]),
213        (o = t[h][e] =
214          function (t, e) {
215            return this._createWidget
216              ? (arguments.length && this._createWidget(t, e), void 0)
217              : new o(t, e);
218          }),
219        t.extend(o, n, {
220          version: s.version,
221          _proto: t.extend({}, s),
222          _childConstructors: [],
223        }),
224        (a = new i()),
225        (a.options = t.widget.extend({}, a.options)),
226        t.each(s, function (e, s) {
227          return t.isFunction(s)
228            ? ((r[e] = (function () {
229                function t() {
230                  return i.prototype[e].apply(this, arguments);
231                }
232                function n(t) {
233                  return i.prototype[e].apply(this, t);
234                }
235                return function () {
236                  var e,
237                    i = this._super,
238                    o = this._superApply;
239                  return (
240                    (this._super = t),
241                    (this._superApply = n),
242                    (e = s.apply(this, arguments)),
243                    (this._super = i),
244                    (this._superApply = o),
245                    e
246                  );
247                };
248              })()),
249              void 0)
250            : ((r[e] = s), void 0);
251        }),
252        (o.prototype = t.widget.extend(
253          a,
254          { widgetEventPrefix: n ? a.widgetEventPrefix || e : e },
255          r,
256          { constructor: o, namespace: h, widgetName: e, widgetFullName: l },
257        )),
258        n
259          ? (t.each(n._childConstructors, function (e, i) {
260              var s = i.prototype;
261              t.widget(s.namespace + "." + s.widgetName, o, i._proto);
262            }),
263            delete n._childConstructors)
264          : i._childConstructors.push(o),
265        t.widget.bridge(e, o),
266        o
267      );
268    }),
269    (t.widget.extend = function (e) {
270      for (var i, s, n = l.call(arguments, 1), o = 0, a = n.length; a > o; o++)
271        for (i in n[o])
272          (s = n[o][i]),
273            n[o].hasOwnProperty(i) &&
274              void 0 !== s &&
275              (e[i] = t.isPlainObject(s)
276                ? t.isPlainObject(e[i])
277                  ? t.widget.extend({}, e[i], s)
278                  : t.widget.extend({}, s)
279                : s);
280      return e;
281    }),
282    (t.widget.bridge = function (e, i) {
283      var s = i.prototype.widgetFullName || e;
284      t.fn[e] = function (n) {
285        var o = "string" == typeof n,
286          a = l.call(arguments, 1),
287          r = this;
288        return (
289          o
290            ? this.length || "instance" !== n
291              ? this.each(function () {
292                  var i,
293                    o = t.data(this, s);
294                  return "instance" === n
295                    ? ((r = o), !1)
296                    : o
297                      ? t.isFunction(o[n]) && "_" !== n.charAt(0)
298                        ? ((i = o[n].apply(o, a)),
299                          i !== o && void 0 !== i
300                            ? ((r = i && i.jquery ? r.pushStack(i.get()) : i),
301                              !1)
302                            : void 0)
303                        : t.error(
304                            "no such method '" +
305                              n +
306                              "' for " +
307                              e +
308                              " widget instance",
309                          )
310                      : t.error(
311                          "cannot call methods on " +
312                            e +
313                            " prior to initialization; " +
314                            "attempted to call method '" +
315                            n +
316                            "'",
317                        );
318                })
319              : (r = void 0)
320            : (a.length && (n = t.widget.extend.apply(null, [n].concat(a))),
321              this.each(function () {
322                var e = t.data(this, s);
323                e
324                  ? (e.option(n || {}), e._init && e._init())
325                  : t.data(this, s, new i(n, this));
326              })),
327          r
328        );
329      };
330    }),
331    (t.Widget = function () {}),
332    (t.Widget._childConstructors = []),
333    (t.Widget.prototype = {
334      widgetName: "widget",
335      widgetEventPrefix: "",
336      defaultElement: "<div>",
337      options: { classes: {}, disabled: !1, create: null },
338      _createWidget: function (e, i) {
339        (i = t(i || this.defaultElement || this)[0]),
340          (this.element = t(i)),
341          (this.uuid = h++),
342          (this.eventNamespace = "." + this.widgetName + this.uuid),
343          (this.bindings = t()),
344          (this.hoverable = t()),
345          (this.focusable = t()),
346          (this.classesElementLookup = {}),
347          i !== this &&
348            (t.data(i, this.widgetFullName, this),
349            this._on(!0, this.element, {
350              remove: function (t) {
351                t.target === i && this.destroy();
352              },
353            }),
354            (this.document = t(i.style ? i.ownerDocument : i.document || i)),
355            (this.window = t(
356              this.document[0].defaultView || this.document[0].parentWindow,
357            ))),
358          (this.options = t.widget.extend(
359            {},
360            this.options,
361            this._getCreateOptions(),
362            e,
363          )),
364          this._create(),
365          this.options.disabled &&
366            this._setOptionDisabled(this.options.disabled),
367          this._trigger("create", null, this._getCreateEventData()),
368          this._init();
369      },
370      _getCreateOptions: function () {
371        return {};
372      },
373      _getCreateEventData: t.noop,
374      _create: t.noop,
375      _init: t.noop,
376      destroy: function () {
377        var e = this;
378        this._destroy(),
379          t.each(this.classesElementLookup, function (t, i) {
380            e._removeClass(i, t);
381          }),
382          this.element.off(this.eventNamespace).removeData(this.widgetFullName),
383          this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),
384          this.bindings.off(this.eventNamespace);
385      },
386      _destroy: t.noop,
387      widget: function () {
388        return this.element;
389      },
390      option: function (e, i) {
391        var s,
392          n,
393          o,
394          a = e;
395        if (0 === arguments.length) return t.widget.extend({}, this.options);
396        if ("string" == typeof e)
397          if (((a = {}), (s = e.split(".")), (e = s.shift()), s.length)) {
398            for (
399              n = a[e] = t.widget.extend({}, this.options[e]), o = 0;
400              s.length - 1 > o;
401              o++
402            )
403              (n[s[o]] = n[s[o]] || {}), (n = n[s[o]]);
404            if (((e = s.pop()), 1 === arguments.length))
405              return void 0 === n[e] ? null : n[e];
406            n[e] = i;
407          } else {
408            if (1 === arguments.length)
409              return void 0 === this.options[e] ? null : this.options[e];
410            a[e] = i;
411          }
412        return this._setOptions(a), this;
413      },
414      _setOptions: function (t) {
415        var e;
416        for (e in t) this._setOption(e, t[e]);
417        return this;
418      },
419      _setOption: function (t, e) {
420        return (
421          "classes" === t && this._setOptionClasses(e),
422          (this.options[t] = e),
423          "disabled" === t && this._setOptionDisabled(e),
424          this
425        );
426      },
427      _setOptionClasses: function (e) {
428        var i, s, n;
429        for (i in e)
430          (n = this.classesElementLookup[i]),
431            e[i] !== this.options.classes[i] &&
432              n &&
433              n.length &&
434              ((s = t(n.get())),
435              this._removeClass(n, i),
436              s.addClass(
437                this._classes({ element: s, keys: i, classes: e, add: !0 }),
438              ));
439      },
440      _setOptionDisabled: function (t) {
441        this._toggleClass(
442          this.widget(),
443          this.widgetFullName + "-disabled",
444          null,
445          !!t,
446        ),
447          t &&
448            (this._removeClass(this.hoverable, null, "ui-state-hover"),
449            this._removeClass(this.focusable, null, "ui-state-focus"));
450      },
451      enable: function () {
452        return this._setOptions({ disabled: !1 });
453      },
454      disable: function () {
455        return this._setOptions({ disabled: !0 });
456      },
457      _classes: function (e) {
458        function i(i, o) {
459          var a, r;
460          for (r = 0; i.length > r; r++)
461            (a = n.classesElementLookup[i[r]] || t()),
462              (a = e.add
463                ? t(t.unique(a.get().concat(e.element.get())))
464                : t(a.not(e.element).get())),
465              (n.classesElementLookup[i[r]] = a),
466              s.push(i[r]),
467              o && e.classes[i[r]] && s.push(e.classes[i[r]]);
468        }
469        var s = [],
470          n = this;
471        return (
472          (e = t.extend(
473            { element: this.element, classes: this.options.classes || {} },
474            e,
475          )),
476          this._on(e.element, { remove: "_untrackClassesElement" }),
477          e.keys && i(e.keys.match(/\S+/g) || [], !0),
478          e.extra && i(e.extra.match(/\S+/g) || []),
479          s.join(" ")
480        );
481      },
482      _untrackClassesElement: function (e) {
483        var i = this;
484        t.each(i.classesElementLookup, function (s, n) {
485          -1 !== t.inArray(e.target, n) &&
486            (i.classesElementLookup[s] = t(n.not(e.target).get()));
487        });
488      },
489      _removeClass: function (t, e, i) {
490        return this._toggleClass(t, e, i, !1);
491      },
492      _addClass: function (t, e, i) {
493        return this._toggleClass(t, e, i, !0);
494      },
495      _toggleClass: function (t, e, i, s) {
496        s = "boolean" == typeof s ? s : i;
497        var n = "string" == typeof t || null === t,
498          o = {
499            extra: n ? e : i,
500            keys: n ? t : e,
501            element: n ? this.element : t,
502            add: s,
503          };
504        return o.element.toggleClass(this._classes(o), s), this;
505      },
506      _on: function (e, i, s) {
507        var n,
508          o = this;
509        "boolean" != typeof e && ((s = i), (i = e), (e = !1)),
510          s
511            ? ((i = n = t(i)), (this.bindings = this.bindings.add(i)))
512            : ((s = i), (i = this.element), (n = this.widget())),
513          t.each(s, function (s, a) {
514            function r() {
515              return e ||
516                (o.options.disabled !== !0 &&
517                  !t(this).hasClass("ui-state-disabled"))
518                ? ("string" == typeof a ? o[a] : a).apply(o, arguments)
519                : void 0;
520            }
521            "string" != typeof a &&
522              (r.guid = a.guid = a.guid || r.guid || t.guid++);
523            var h = s.match(/^([\w:-]*)\s*(.*)$/),
524              l = h[1] + o.eventNamespace,
525              c = h[2];
526            c ? n.on(l, c, r) : i.on(l, r);
527          });
528      },
529      _off: function (e, i) {
530        (i =
531          (i || "").split(" ").join(this.eventNamespace + " ") +
532          this.eventNamespace),
533          e.off(i).off(i),
534          (this.bindings = t(this.bindings.not(e).get())),
535          (this.focusable = t(this.focusable.not(e).get())),
536          (this.hoverable = t(this.hoverable.not(e).get()));
537      },
538      _delay: function (t, e) {
539        function i() {
540          return ("string" == typeof t ? s[t] : t).apply(s, arguments);
541        }
542        var s = this;
543        return setTimeout(i, e || 0);
544      },
545      _hoverable: function (e) {
546        (this.hoverable = this.hoverable.add(e)),
547          this._on(e, {
548            mouseenter: function (e) {
549              this._addClass(t(e.currentTarget), null, "ui-state-hover");
550            },
551            mouseleave: function (e) {
552              this._removeClass(t(e.currentTarget), null, "ui-state-hover");
553            },
554          });
555      },
556      _focusable: function (e) {
557        (this.focusable = this.focusable.add(e)),
558          this._on(e, {
559            focusin: function (e) {
560              this._addClass(t(e.currentTarget), null, "ui-state-focus");
561            },
562            focusout: function (e) {
563              this._removeClass(t(e.currentTarget), null, "ui-state-focus");
564            },
565          });
566      },
567      _trigger: function (e, i, s) {
568        var n,
569          o,
570          a = this.options[e];
571        if (
572          ((s = s || {}),
573          (i = t.Event(i)),
574          (i.type = (
575            e === this.widgetEventPrefix ? e : this.widgetEventPrefix + e
576          ).toLowerCase()),
577          (i.target = this.element[0]),
578          (o = i.originalEvent))
579        )
580          for (n in o) n in i || (i[n] = o[n]);
581        return (
582          this.element.trigger(i, s),
583          !(
584            (t.isFunction(a) &&
585              a.apply(this.element[0], [i].concat(s)) === !1) ||
586            i.isDefaultPrevented()
587          )
588        );
589      },
590    }),
591    t.each({ show: "fadeIn", hide: "fadeOut" }, function (e, i) {
592      t.Widget.prototype["_" + e] = function (s, n, o) {
593        "string" == typeof n && (n = { effect: n });
594        var a,
595          r = n ? (n === !0 || "number" == typeof n ? i : n.effect || i) : e;
596        (n = n || {}),
597          "number" == typeof n && (n = { duration: n }),
598          (a = !t.isEmptyObject(n)),
599          (n.complete = o),
600          n.delay && s.delay(n.delay),
601          a && t.effects && t.effects.effect[r]
602            ? s[e](n)
603            : r !== e && s[r]
604              ? s[r](n.duration, n.easing, o)
605              : s.queue(function (i) {
606                  t(this)[e](), o && o.call(s[0]), i();
607                });
608      };
609    }),
610    t.widget,
611    (function () {
612      function e(t, e, i) {
613        return [
614          parseFloat(t[0]) * (u.test(t[0]) ? e / 100 : 1),
615          parseFloat(t[1]) * (u.test(t[1]) ? i / 100 : 1),
616        ];
617      }
618      function i(e, i) {
619        return parseInt(t.css(e, i), 10) || 0;
620      }
621      function s(e) {
622        var i = e[0];
623        return 9 === i.nodeType
624          ? {
625              width: e.width(),
626              height: e.height(),
627              offset: { top: 0, left: 0 },
628            }
629          : t.isWindow(i)
630            ? {
631                width: e.width(),
632                height: e.height(),
633                offset: { top: e.scrollTop(), left: e.scrollLeft() },
634              }
635            : i.preventDefault
636              ? { width: 0, height: 0, offset: { top: i.pageY, left: i.pageX } }
637              : {
638                  width: e.outerWidth(),
639                  height: e.outerHeight(),
640                  offset: e.offset(),
641                };
642      }
643      var n,
644        o = Math.max,
645        a = Math.abs,
646        r = /left|center|right/,
647        h = /top|center|bottom/,
648        l = /[\+\-]\d+(\.[\d]+)?%?/,
649        c = /^\w+/,
650        u = /%$/,
651        d = t.fn.position;
652      (t.position = {
653        scrollbarWidth: function () {
654          if (void 0 !== n) return n;
655          var e,
656            i,
657            s = t(
658              "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>",
659            ),
660            o = s.children()[0];
661          return (
662            t("body").append(s),
663            (e = o.offsetWidth),
664            s.css("overflow", "scroll"),
665            (i = o.offsetWidth),
666            e === i && (i = s[0].clientWidth),
667            s.remove(),
668            (n = e - i)
669          );
670        },
671        getScrollInfo: function (e) {
672          var i = e.isWindow || e.isDocument ? "" : e.element.css("overflow-x"),
673            s = e.isWindow || e.isDocument ? "" : e.element.css("overflow-y"),
674            n =
675              "scroll" === i ||
676              ("auto" === i && e.width < e.element[0].scrollWidth),
677            o =
678              "scroll" === s ||
679              ("auto" === s && e.height < e.element[0].scrollHeight);
680          return {
681            width: o ? t.position.scrollbarWidth() : 0,
682            height: n ? t.position.scrollbarWidth() : 0,
683          };
684        },
685        getWithinInfo: function (e) {
686          var i = t(e || window),
687            s = t.isWindow(i[0]),
688            n = !!i[0] && 9 === i[0].nodeType,
689            o = !s && !n;
690          return {
691            element: i,
692            isWindow: s,
693            isDocument: n,
694            offset: o ? t(e).offset() : { left: 0, top: 0 },
695            scrollLeft: i.scrollLeft(),
696            scrollTop: i.scrollTop(),
697            width: i.outerWidth(),
698            height: i.outerHeight(),
699          };
700        },
701      }),
702        (t.fn.position = function (n) {
703          if (!n || !n.of) return d.apply(this, arguments);
704          n = t.extend({}, n);
705          var u,
706            p,
707            f,
708            g,
709            m,
710            _,
711            v = t(n.of),
712            b = t.position.getWithinInfo(n.within),
713            y = t.position.getScrollInfo(b),
714            w = (n.collision || "flip").split(" "),
715            k = {};
716          return (
717            (_ = s(v)),
718            v[0].preventDefault && (n.at = "left top"),
719            (p = _.width),
720            (f = _.height),
721            (g = _.offset),
722            (m = t.extend({}, g)),
723            t.each(["my", "at"], function () {
724              var t,
725                e,
726                i = (n[this] || "").split(" ");
727              1 === i.length &&
728                (i = r.test(i[0])
729                  ? i.concat(["center"])
730                  : h.test(i[0])
731                    ? ["center"].concat(i)
732                    : ["center", "center"]),
733                (i[0] = r.test(i[0]) ? i[0] : "center"),
734                (i[1] = h.test(i[1]) ? i[1] : "center"),
735                (t = l.exec(i[0])),
736                (e = l.exec(i[1])),
737                (k[this] = [t ? t[0] : 0, e ? e[0] : 0]),
738                (n[this] = [c.exec(i[0])[0], c.exec(i[1])[0]]);
739            }),
740            1 === w.length && (w[1] = w[0]),
741            "right" === n.at[0]
742              ? (m.left += p)
743              : "center" === n.at[0] && (m.left += p / 2),
744            "bottom" === n.at[1]
745              ? (m.top += f)
746              : "center" === n.at[1] && (m.top += f / 2),
747            (u = e(k.at, p, f)),
748            (m.left += u[0]),
749            (m.top += u[1]),
750            this.each(function () {
751              var s,
752                r,
753                h = t(this),
754                l = h.outerWidth(),
755                c = h.outerHeight(),
756                d = i(this, "marginLeft"),
757                _ = i(this, "marginTop"),
758                x = l + d + i(this, "marginRight") + y.width,
759                C = c + _ + i(this, "marginBottom") + y.height,
760                D = t.extend({}, m),
761                I = e(k.my, h.outerWidth(), h.outerHeight());
762              "right" === n.my[0]
763                ? (D.left -= l)
764                : "center" === n.my[0] && (D.left -= l / 2),
765                "bottom" === n.my[1]
766                  ? (D.top -= c)
767                  : "center" === n.my[1] && (D.top -= c / 2),
768                (D.left += I[0]),
769                (D.top += I[1]),
770                (s = { marginLeft: d, marginTop: _ }),
771                t.each(["left", "top"], function (e, i) {
772                  t.ui.position[w[e]] &&
773                    t.ui.position[w[e]][i](D, {
774                      targetWidth: p,
775                      targetHeight: f,
776                      elemWidth: l,
777                      elemHeight: c,
778                      collisionPosition: s,
779                      collisionWidth: x,
780                      collisionHeight: C,
781                      offset: [u[0] + I[0], u[1] + I[1]],
782                      my: n.my,
783                      at: n.at,
784                      within: b,
785                      elem: h,
786                    });
787                }),
788                n.using &&
789                  (r = function (t) {
790                    var e = g.left - D.left,
791                      i = e + p - l,
792                      s = g.top - D.top,
793                      r = s + f - c,
794                      u = {
795                        target: {
796                          element: v,
797                          left: g.left,
798                          top: g.top,
799                          width: p,
800                          height: f,
801                        },
802                        element: {
803                          element: h,
804                          left: D.left,
805                          top: D.top,
806                          width: l,
807                          height: c,
808                        },
809                        horizontal: 0 > i ? "left" : e > 0 ? "right" : "center",
810                        vertical: 0 > r ? "top" : s > 0 ? "bottom" : "middle",
811                      };
812                    l > p && p > a(e + i) && (u.horizontal = "center"),
813                      c > f && f > a(s + r) && (u.vertical = "middle"),
814                      (u.important =
815                        o(a(e), a(i)) > o(a(s), a(r))
816                          ? "horizontal"
817                          : "vertical"),
818                      n.using.call(this, t, u);
819                  }),
820                h.offset(t.extend(D, { using: r }));
821            })
822          );
823        }),
824        (t.ui.position = {
825          fit: {
826            left: function (t, e) {
827              var i,
828                s = e.within,
829                n = s.isWindow ? s.scrollLeft : s.offset.left,
830                a = s.width,
831                r = t.left - e.collisionPosition.marginLeft,
832                h = n - r,
833                l = r + e.collisionWidth - a - n;
834              e.collisionWidth > a
835                ? h > 0 && 0 >= l
836                  ? ((i = t.left + h + e.collisionWidth - a - n),
837                    (t.left += h - i))
838                  : (t.left =
839                      l > 0 && 0 >= h
840                        ? n
841                        : h > l
842                          ? n + a - e.collisionWidth
843                          : n)
844                : h > 0
845                  ? (t.left += h)
846                  : l > 0
847                    ? (t.left -= l)
848                    : (t.left = o(t.left - r, t.left));
849            },
850            top: function (t, e) {
851              var i,
852                s = e.within,
853                n = s.isWindow ? s.scrollTop : s.offset.top,
854                a = e.within.height,
855                r = t.top - e.collisionPosition.marginTop,
856                h = n - r,
857                l = r + e.collisionHeight - a - n;
858              e.collisionHeight > a
859                ? h > 0 && 0 >= l
860                  ? ((i = t.top + h + e.collisionHeight - a - n),
861                    (t.top += h - i))
862                  : (t.top =
863                      l > 0 && 0 >= h
864                        ? n
865                        : h > l
866                          ? n + a - e.collisionHeight
867                          : n)
868                : h > 0
869                  ? (t.top += h)
870                  : l > 0
871                    ? (t.top -= l)
872                    : (t.top = o(t.top - r, t.top));
873            },
874          },
875          flip: {
876            left: function (t, e) {
877              var i,
878                s,
879                n = e.within,
880                o = n.offset.left + n.scrollLeft,
881                r = n.width,
882                h = n.isWindow ? n.scrollLeft : n.offset.left,
883                l = t.left - e.collisionPosition.marginLeft,
884                c = l - h,
885                u = l + e.collisionWidth - r - h,
886                d =
887                  "left" === e.my[0]
888                    ? -e.elemWidth
889                    : "right" === e.my[0]
890                      ? e.elemWidth
891                      : 0,
892                p =
893                  "left" === e.at[0]
894                    ? e.targetWidth
895                    : "right" === e.at[0]
896                      ? -e.targetWidth
897                      : 0,
898                f = -2 * e.offset[0];
899              0 > c
900                ? ((i = t.left + d + p + f + e.collisionWidth - r - o),
901                  (0 > i || a(c) > i) && (t.left += d + p + f))
902                : u > 0 &&
903                  ((s =
904                    t.left - e.collisionPosition.marginLeft + d + p + f - h),
905                  (s > 0 || u > a(s)) && (t.left += d + p + f));
906            },
907            top: function (t, e) {
908              var i,
909                s,
910                n = e.within,
911                o = n.offset.top + n.scrollTop,
912                r = n.height,
913                h = n.isWindow ? n.scrollTop : n.offset.top,
914                l = t.top - e.collisionPosition.marginTop,
915                c = l - h,
916                u = l + e.collisionHeight - r - h,
917                d = "top" === e.my[1],
918                p = d ? -e.elemHeight : "bottom" === e.my[1] ? e.elemHeight : 0,
919                f =
920                  "top" === e.at[1]
921                    ? e.targetHeight
922                    : "bottom" === e.at[1]
923                      ? -e.targetHeight
924                      : 0,
925                g = -2 * e.offset[1];
926              0 > c
927                ? ((s = t.top + p + f + g + e.collisionHeight - r - o),
928                  (0 > s || a(c) > s) && (t.top += p + f + g))
929                : u > 0 &&
930                  ((i = t.top - e.collisionPosition.marginTop + p + f + g - h),
931                  (i > 0 || u > a(i)) && (t.top += p + f + g));
932            },
933          },
934          flipfit: {
935            left: function () {
936              t.ui.position.flip.left.apply(this, arguments),
937                t.ui.position.fit.left.apply(this, arguments);
938            },
939            top: function () {
940              t.ui.position.flip.top.apply(this, arguments),
941                t.ui.position.fit.top.apply(this, arguments);
942            },
943          },
944        });
945    })(),
946    t.ui.position,
947    t.extend(t.expr[":"], {
948      data: t.expr.createPseudo
949        ? t.expr.createPseudo(function (e) {
950            return function (i) {
951              return !!t.data(i, e);
952            };
953          })
954        : function (e, i, s) {
955            return !!t.data(e, s[3]);
956          },
957    }),
958    t.fn.extend({
959      disableSelection: (function () {
960        var t =
961          "onselectstart" in document.createElement("div")
962            ? "selectstart"
963            : "mousedown";
964        return function () {
965          return this.on(t + ".ui-disableSelection", function (t) {
966            t.preventDefault();
967          });
968        };
969      })(),
970      enableSelection: function () {
971        return this.off(".ui-disableSelection");
972      },
973    });
974  var c = "ui-effects-",
975    u = "ui-effects-style",
976    d = "ui-effects-animated",
977    p = t;
978  (t.effects = { effect: {} }),
979    (function (t, e) {
980      function i(t, e, i) {
981        var s = u[e.type] || {};
982        return null == t
983          ? i || !e.def
984            ? null
985            : e.def
986          : ((t = s.floor ? ~~t : parseFloat(t)),
987            isNaN(t)
988              ? e.def
989              : s.mod
990                ? (t + s.mod) % s.mod
991                : 0 > t
992                  ? 0
993                  : t > s.max
994                    ? s.max
995                    : t);
996      }
997      function s(i) {
998        var s = l(),
999          n = (s._rgba = []);
1000        return (
1001          (i = i.toLowerCase()),
1002          f(h, function (t, o) {
1003            var a,
1004              r = o.re.exec(i),
1005              h = r && o.parse(r),
1006              l = o.space || "rgba";
1007            return h
1008              ? ((a = s[l](h)),
1009                (s[c[l].cache] = a[c[l].cache]),
1010                (n = s._rgba = a._rgba),
1011                !1)
1012              : e;
1013          }),
1014          n.length
1015            ? ("0,0,0,0" === n.join() && t.extend(n, o.transparent), s)
1016            : o[i]
1017        );
1018      }
1019      function n(t, e, i) {
1020        return (
1021          (i = (i + 1) % 1),
1022          1 > 6 * i
1023            ? t + 6 * (e - t) * i
1024            : 1 > 2 * i
1025              ? e
1026              : 2 > 3 * i
1027                ? t + 6 * (e - t) * (2 / 3 - i)
1028                : t
1029        );
1030      }
1031      var o,
1032        a =
1033          "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
1034        r = /^([\-+])=\s*(\d+\.?\d*)/,
1035        h = [
1036          {
1037            re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1038            parse: function (t) {
1039              return [t[1], t[2], t[3], t[4]];
1040            },
1041          },
1042          {
1043            re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1044            parse: function (t) {
1045              return [2.55 * t[1], 2.55 * t[2], 2.55 * t[3], t[4]];
1046            },
1047          },
1048          {
1049            re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
1050            parse: function (t) {
1051              return [
1052                parseInt(t[1], 16),
1053                parseInt(t[2], 16),
1054                parseInt(t[3], 16),
1055              ];
1056            },
1057          },
1058          {
1059            re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
1060            parse: function (t) {
1061              return [
1062                parseInt(t[1] + t[1], 16),
1063                parseInt(t[2] + t[2], 16),
1064                parseInt(t[3] + t[3], 16),
1065              ];
1066            },
1067          },
1068          {
1069            re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
1070            space: "hsla",
1071            parse: function (t) {
1072              return [t[1], t[2] / 100, t[3] / 100, t[4]];
1073            },
1074          },
1075        ],
1076        l = (t.Color = function (e, i, s, n) {
1077          return new t.Color.fn.parse(e, i, s, n);
1078        }),
1079        c = {
1080          rgba: {
1081            props: {
1082              red: { idx: 0, type: "byte" },
1083              green: { idx: 1, type: "byte" },
1084              blue: { idx: 2, type: "byte" },
1085            },
1086          },
1087          hsla: {
1088            props: {
1089              hue: { idx: 0, type: "degrees" },
1090              saturation: { idx: 1, type: "percent" },
1091              lightness: { idx: 2, type: "percent" },
1092            },
1093          },
1094        },
1095        u = {
1096          byte: { floor: !0, max: 255 },
1097          percent: { max: 1 },
1098          degrees: { mod: 360, floor: !0 },
1099        },
1100        d = (l.support = {}),
1101        p = t("<p>")[0],
1102        f = t.each;
1103      (p.style.cssText = "background-color:rgba(1,1,1,.5)"),
1104        (d.rgba = p.style.backgroundColor.indexOf("rgba") > -1),
1105        f(c, function (t, e) {
1106          (e.cache = "_" + t),
1107            (e.props.alpha = { idx: 3, type: "percent", def: 1 });
1108        }),
1109        (l.fn = t.extend(l.prototype, {
1110          parse: function (n, a, r, h) {
1111            if (n === e) return (this._rgba = [null, null, null, null]), this;
1112            (n.jquery || n.nodeType) && ((n = t(n).css(a)), (a = e));
1113            var u = this,
1114              d = t.type(n),
1115              p = (this._rgba = []);
1116            return (
1117              a !== e && ((n = [n, a, r, h]), (d = "array")),
1118              "string" === d
1119                ? this.parse(s(n) || o._default)
1120                : "array" === d
1121                  ? (f(c.rgba.props, function (t, e) {
1122                      p[e.idx] = i(n[e.idx], e);
1123                    }),
1124                    this)
1125                  : "object" === d
1126                    ? (n instanceof l
1127                        ? f(c, function (t, e) {
1128                            n[e.cache] && (u[e.cache] = n[e.cache].slice());
1129                          })
1130                        : f(c, function (e, s) {
1131                            var o = s.cache;
1132                            f(s.props, function (t, e) {
1133                              if (!u[o] && s.to) {
1134                                if ("alpha" === t || null == n[t]) return;
1135                                u[o] = s.to(u._rgba);
1136                              }
1137                              u[o][e.idx] = i(n[t], e, !0);
1138                            }),
1139                              u[o] &&
1140                                0 > t.inArray(null, u[o].slice(0, 3)) &&
1141                                ((u[o][3] = 1),
1142                                s.from && (u._rgba = s.from(u[o])));
1143                          }),
1144                      this)
1145                    : e
1146            );
1147          },
1148          is: function (t) {
1149            var i = l(t),
1150              s = !0,
1151              n = this;
1152            return (
1153              f(c, function (t, o) {
1154                var a,
1155                  r = i[o.cache];
1156                return (
1157                  r &&
1158                    ((a = n[o.cache] || (o.to && o.to(n._rgba)) || []),
1159                    f(o.props, function (t, i) {
1160                      return null != r[i.idx] ? (s = r[i.idx] === a[i.idx]) : e;
1161                    })),
1162                  s
1163                );
1164              }),
1165              s
1166            );
1167          },
1168          _space: function () {
1169            var t = [],
1170              e = this;
1171            return (
1172              f(c, function (i, s) {
1173                e[s.cache] && t.push(i);
1174              }),
1175              t.pop()
1176            );
1177          },
1178          transition: function (t, e) {
1179            var s = l(t),
1180              n = s._space(),
1181              o = c[n],
1182              a = 0 === this.alpha() ? l("transparent") : this,
1183              r = a[o.cache] || o.to(a._rgba),
1184              h = r.slice();
1185            return (
1186              (s = s[o.cache]),
1187              f(o.props, function (t, n) {
1188                var o = n.idx,
1189                  a = r[o],
1190                  l = s[o],
1191                  c = u[n.type] || {};
1192                null !== l &&
1193                  (null === a
1194                    ? (h[o] = l)
1195                    : (c.mod &&
1196                        (l - a > c.mod / 2
1197                          ? (a += c.mod)
1198                          : a - l > c.mod / 2 && (a -= c.mod)),
1199                      (h[o] = i((l - a) * e + a, n))));
1200              }),
1201              this[n](h)
1202            );
1203          },
1204          blend: function (e) {
1205            if (1 === this._rgba[3]) return this;
1206            var i = this._rgba.slice(),
1207              s = i.pop(),
1208              n = l(e)._rgba;
1209            return l(
1210              t.map(i, function (t, e) {
1211                return (1 - s) * n[e] + s * t;
1212              }),
1213            );
1214          },
1215          toRgbaString: function () {
1216            var e = "rgba(",
1217              i = t.map(this._rgba, function (t, e) {
1218                return null == t ? (e > 2 ? 1 : 0) : t;
1219              });
1220            return 1 === i[3] && (i.pop(), (e = "rgb(")), e + i.join() + ")";
1221          },
1222          toHslaString: function () {
1223            var e = "hsla(",
1224              i = t.map(this.hsla(), function (t, e) {
1225                return (
1226                  null == t && (t = e > 2 ? 1 : 0),
1227                  e && 3 > e && (t = Math.round(100 * t) + "%"),
1228                  t
1229                );
1230              });
1231            return 1 === i[3] && (i.pop(), (e = "hsl(")), e + i.join() + ")";
1232          },
1233          toHexString: function (e) {
1234            var i = this._rgba.slice(),
1235              s = i.pop();
1236            return (
1237              e && i.push(~~(255 * s)),
1238              "#" +
1239                t
1240                  .map(i, function (t) {
1241                    return (
1242                      (t = (t || 0).toString(16)), 1 === t.length ? "0" + t : t
1243                    );
1244                  })
1245                  .join("")
1246            );
1247          },
1248          toString: function () {
1249            return 0 === this._rgba[3] ? "transparent" : this.toRgbaString();
1250          },
1251        })),
1252        (l.fn.parse.prototype = l.fn),
1253        (c.hsla.to = function (t) {
1254          if (null == t[0] || null == t[1] || null == t[2])
1255            return [null, null, null, t[3]];
1256          var e,
1257            i,
1258            s = t[0] / 255,
1259            n = t[1] / 255,
1260            o = t[2] / 255,
1261            a = t[3],
1262            r = Math.max(s, n, o),
1263            h = Math.min(s, n, o),
1264            l = r - h,
1265            c = r + h,
1266            u = 0.5 * c;
1267          return (
1268            (e =
1269              h === r
1270                ? 0
1271                : s === r
1272                  ? (60 * (n - o)) / l + 360
1273                  : n === r
1274                    ? (60 * (o - s)) / l + 120
1275                    : (60 * (s - n)) / l + 240),
1276            (i = 0 === l ? 0 : 0.5 >= u ? l / c : l / (2 - c)),
1277            [Math.round(e) % 360, i, u, null == a ? 1 : a]
1278          );
1279        }),
1280        (c.hsla.from = function (t) {
1281          if (null == t[0] || null == t[1] || null == t[2])
1282            return [null, null, null, t[3]];
1283          var e = t[0] / 360,
1284            i = t[1],
1285            s = t[2],
1286            o = t[3],
1287            a = 0.5 >= s ? s * (1 + i) : s + i - s * i,
1288            r = 2 * s - a;
1289          return [
1290            Math.round(255 * n(r, a, e + 1 / 3)),
1291            Math.round(255 * n(r, a, e)),
1292            Math.round(255 * n(r, a, e - 1 / 3)),
1293            o,
1294          ];
1295        }),
1296        f(c, function (s, n) {
1297          var o = n.props,
1298            a = n.cache,
1299            h = n.to,
1300            c = n.from;
1301          (l.fn[s] = function (s) {
1302            if ((h && !this[a] && (this[a] = h(this._rgba)), s === e))
1303              return this[a].slice();
1304            var n,
1305              r = t.type(s),
1306              u = "array" === r || "object" === r ? s : arguments,
1307              d = this[a].slice();
1308            return (
1309              f(o, function (t, e) {
1310                var s = u["object" === r ? t : e.idx];
1311                null == s && (s = d[e.idx]), (d[e.idx] = i(s, e));
1312              }),
1313              c ? ((n = l(c(d))), (n[a] = d), n) : l(d)
1314            );
1315          }),
1316            f(o, function (e, i) {
1317              l.fn[e] ||
1318                (l.fn[e] = function (n) {
1319                  var o,
1320                    a = t.type(n),
1321                    h = "alpha" === e ? (this._hsla ? "hsla" : "rgba") : s,
1322                    l = this[h](),
1323                    c = l[i.idx];
1324                  return "undefined" === a
1325                    ? c
1326                    : ("function" === a &&
1327                        ((n = n.call(this, c)), (a = t.type(n))),
1328                      null == n && i.empty
1329                        ? this
1330                        : ("string" === a &&
1331                            ((o = r.exec(n)),
1332                            o &&
1333                              (n =
1334                                c +
1335                                parseFloat(o[2]) * ("+" === o[1] ? 1 : -1))),
1336                          (l[i.idx] = n),
1337                          this[h](l)));
1338                });
1339            });
1340        }),
1341        (l.hook = function (e) {
1342          var i = e.split(" ");
1343          f(i, function (e, i) {
1344            (t.cssHooks[i] = {
1345              set: function (e, n) {
1346                var o,
1347                  a,
1348                  r = "";
1349                if (
1350                  "transparent" !== n &&
1351                  ("string" !== t.type(n) || (o = s(n)))
1352                ) {
1353                  if (((n = l(o || n)), !d.rgba && 1 !== n._rgba[3])) {
1354                    for (
1355                      a = "backgroundColor" === i ? e.parentNode : e;
1356                      ("" === r || "transparent" === r) && a && a.style;
1357
1358                    )
1359                      try {
1360                        (r = t.css(a, "backgroundColor")), (a = a.parentNode);
1361                      } catch (h) {}
1362                    n = n.blend(r && "transparent" !== r ? r : "_default");
1363                  }
1364                  n = n.toRgbaString();
1365                }
1366                try {
1367                  e.style[i] = n;
1368                } catch (h) {}
1369              },
1370            }),
1371              (t.fx.step[i] = function (e) {
1372                e.colorInit ||
1373                  ((e.start = l(e.elem, i)),
1374                  (e.end = l(e.end)),
1375                  (e.colorInit = !0)),
1376                  t.cssHooks[i].set(e.elem, e.start.transition(e.end, e.pos));
1377              });
1378          });
1379        }),
1380        l.hook(a),
1381        (t.cssHooks.borderColor = {
1382          expand: function (t) {
1383            var e = {};
1384            return (
1385              f(["Top", "Right", "Bottom", "Left"], function (i, s) {
1386                e["border" + s + "Color"] = t;
1387              }),
1388              e
1389            );
1390          },
1391        }),
1392        (o = t.Color.names =
1393          {
1394            aqua: "#00ffff",
1395            black: "#000000",
1396            blue: "#0000ff",
1397            fuchsia: "#ff00ff",
1398            gray: "#808080",
1399            green: "#008000",
1400            lime: "#00ff00",
1401            maroon: "#800000",
1402            navy: "#000080",
1403            olive: "#808000",
1404            purple: "#800080",
1405            red: "#ff0000",
1406            silver: "#c0c0c0",
1407            teal: "#008080",
1408            white: "#ffffff",
1409            yellow: "#ffff00",
1410            transparent: [null, null, null, 0],
1411            _default: "#ffffff",
1412          });
1413    })(p),
1414    (function () {
1415      function e(e) {
1416        var i,
1417          s,
1418          n = e.ownerDocument.defaultView
1419            ? e.ownerDocument.defaultView.getComputedStyle(e, null)
1420            : e.currentStyle,
1421          o = {};
1422        if (n && n.length && n[0] && n[n[0]])
1423          for (s = n.length; s--; )
1424            (i = n[s]), "string" == typeof n[i] && (o[t.camelCase(i)] = n[i]);
1425        else for (i in n) "string" == typeof n[i] && (o[i] = n[i]);
1426        return o;
1427      }
1428      function i(e, i) {
1429        var s,
1430          o,
1431          a = {};
1432        for (s in i)
1433          (o = i[s]),
1434            e[s] !== o &&
1435              (n[s] || ((t.fx.step[s] || !isNaN(parseFloat(o))) && (a[s] = o)));
1436        return a;
1437      }
1438      var s = ["add", "remove", "toggle"],
1439        n = {
1440          border: 1,
1441          borderBottom: 1,
1442          borderColor: 1,
1443          borderLeft: 1,
1444          borderRight: 1,
1445          borderTop: 1,
1446          borderWidth: 1,
1447          margin: 1,
1448          padding: 1,
1449        };
1450      t.each(
1451        [
1452          "borderLeftStyle",
1453          "borderRightStyle",
1454          "borderBottomStyle",
1455          "borderTopStyle",
1456        ],
1457        function (e, i) {
1458          t.fx.step[i] = function (t) {
1459            (("none" !== t.end && !t.setAttr) || (1 === t.pos && !t.setAttr)) &&
1460              (p.style(t.elem, i, t.end), (t.setAttr = !0));
1461          };
1462        },
1463      ),
1464        t.fn.addBack ||
1465          (t.fn.addBack = function (t) {
1466            return this.add(
1467              null == t ? this.prevObject : this.prevObject.filter(t),
1468            );
1469          }),
1470        (t.effects.animateClass = function (n, o, a, r) {
1471          var h = t.speed(o, a, r);
1472          return this.queue(function () {
1473            var o,
1474              a = t(this),
1475              r = a.attr("class") || "",
1476              l = h.children ? a.find("*").addBack() : a;
1477            (l = l.map(function () {
1478              var i = t(this);
1479              return { el: i, start: e(this) };
1480            })),
1481              (o = function () {
1482                t.each(s, function (t, e) {
1483                  n[e] && a[e + "Class"](n[e]);
1484                });
1485              }),
1486              o(),
1487              (l = l.map(function () {
1488                return (
1489                  (this.end = e(this.el[0])),
1490                  (this.diff = i(this.start, this.end)),
1491                  this
1492                );
1493              })),
1494              a.attr("class", r),
1495              (l = l.map(function () {
1496                var e = this,
1497                  i = t.Deferred(),
1498                  s = t.extend({}, h, {
1499                    queue: !1,
1500                    complete: function () {
1501                      i.resolve(e);
1502                    },
1503                  });
1504                return this.el.animate(this.diff, s), i.promise();
1505              })),
1506              t.when.apply(t, l.get()).done(function () {
1507                o(),
1508                  t.each(arguments, function () {
1509                    var e = this.el;
1510                    t.each(this.diff, function (t) {
1511                      e.css(t, "");
1512                    });
1513                  }),
1514                  h.complete.call(a[0]);
1515              });
1516          });
1517        }),
1518        t.fn.extend({
1519          addClass: (function (e) {
1520            return function (i, s, n, o) {
1521              return s
1522                ? t.effects.animateClass.call(this, { add: i }, s, n, o)
1523                : e.apply(this, arguments);
1524            };
1525          })(t.fn.addClass),
1526          removeClass: (function (e) {
1527            return function (i, s, n, o) {
1528              return arguments.length > 1
1529                ? t.effects.animateClass.call(this, { remove: i }, s, n, o)
1530                : e.apply(this, arguments);
1531            };
1532          })(t.fn.removeClass),
1533          toggleClass: (function (e) {
1534            return function (i, s, n, o, a) {
1535              return "boolean" == typeof s || void 0 === s
1536                ? n
1537                  ? t.effects.animateClass.call(
1538                      this,
1539                      s ? { add: i } : { remove: i },
1540                      n,
1541                      o,
1542                      a,
1543                    )
1544                  : e.apply(this, arguments)
1545                : t.effects.animateClass.call(this, { toggle: i }, s, n, o);
1546            };
1547          })(t.fn.toggleClass),
1548          switchClass: function (e, i, s, n, o) {
1549            return t.effects.animateClass.call(
1550              this,
1551              { add: i, remove: e },
1552              s,
1553              n,
1554              o,
1555            );
1556          },
1557        });
1558    })(),
1559    (function () {
1560      function e(e, i, s, n) {
1561        return (
1562          t.isPlainObject(e) && ((i = e), (e = e.effect)),
1563          (e = { effect: e }),
1564          null == i && (i = {}),
1565          t.isFunction(i) && ((n = i), (s = null), (i = {})),
1566          ("number" == typeof i || t.fx.speeds[i]) &&
1567            ((n = s), (s = i), (i = {})),
1568          t.isFunction(s) && ((n = s), (s = null)),
1569          i && t.extend(e, i),
1570          (s = s || i.duration),
1571          (e.duration = t.fx.off
1572            ? 0
1573            : "number" == typeof s
1574              ? s
1575              : s in t.fx.speeds
1576                ? t.fx.speeds[s]
1577                : t.fx.speeds._default),
1578          (e.complete = n || i.complete),
1579          e
1580        );
1581      }
1582      function i(e) {
1583        return !e || "number" == typeof e || t.fx.speeds[e]
1584          ? !0
1585          : "string" != typeof e || t.effects.effect[e]
1586            ? t.isFunction(e)
1587              ? !0
1588              : "object" != typeof e || e.effect
1589                ? !1
1590                : !0
1591            : !0;
1592      }
1593      function s(t, e) {
1594        var i = e.outerWidth(),
1595          s = e.outerHeight(),
1596          n =
1597            /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
1598          o = n.exec(t) || ["", 0, i, s, 0];
1599        return {
1600          top: parseFloat(o[1]) || 0,
1601          right: "auto" === o[2] ? i : parseFloat(o[2]),
1602          bottom: "auto" === o[3] ? s : parseFloat(o[3]),
1603          left: parseFloat(o[4]) || 0,
1604        };
1605      }
1606      t.expr &&
1607        t.expr.filters &&
1608        t.expr.filters.animated &&
1609        (t.expr.filters.animated = (function (e) {
1610          return function (i) {
1611            return !!t(i).data(d) || e(i);
1612          };
1613        })(t.expr.filters.animated)),
1614        t.uiBackCompat !== !1 &&
1615          t.extend(t.effects, {
1616            save: function (t, e) {
1617              for (var i = 0, s = e.length; s > i; i++)
1618                null !== e[i] && t.data(c + e[i], t[0].style[e[i]]);
1619            },
1620            restore: function (t, e) {
1621              for (var i, s = 0, n = e.length; n > s; s++)
1622                null !== e[s] && ((i = t.data(c + e[s])), t.css(e[s], i));
1623            },
1624            setMode: function (t, e) {
1625              return (
1626                "toggle" === e && (e = t.is(":hidden") ? "show" : "hide"), e
1627              );
1628            },
1629            createWrapper: function (e) {
1630              if (e.parent().is(".ui-effects-wrapper")) return e.parent();
1631              var i = {
1632                  width: e.outerWidth(!0),
1633                  height: e.outerHeight(!0),
1634                  float: e.css("float"),
1635                },
1636                s = t("<div></div>").addClass("ui-effects-wrapper").css({
1637                  fontSize: "100%",
1638                  background: "transparent",
1639                  border: "none",
1640                  margin: 0,
1641                  padding: 0,
1642                }),
1643                n = { width: e.width(), height: e.height() },
1644                o = document.activeElement;
1645              try {
1646                o.id;
1647              } catch (a) {
1648                o = document.body;
1649              }
1650              return (
1651                e.wrap(s),
1652                (e[0] === o || t.contains(e[0], o)) && t(o).trigger("focus"),
1653                (s = e.parent()),
1654                "static" === e.css("position")
1655                  ? (s.css({ position: "relative" }),
1656                    e.css({ position: "relative" }))
1657                  : (t.extend(i, {
1658                      position: e.css("position"),
1659                      zIndex: e.css("z-index"),
1660                    }),
1661                    t.each(["top", "left", "bottom", "right"], function (t, s) {
1662                      (i[s] = e.css(s)),
1663                        isNaN(parseInt(i[s], 10)) && (i[s] = "auto");
1664                    }),
1665                    e.css({
1666                      position: "relative",
1667                      top: 0,
1668                      left: 0,
1669                      right: "auto",
1670                      bottom: "auto",
1671                    })),
1672                e.css(n),
1673                s.css(i).show()
1674              );
1675            },
1676            removeWrapper: function (e) {
1677              var i = document.activeElement;
1678              return (
1679                e.parent().is(".ui-effects-wrapper") &&
1680                  (e.parent().replaceWith(e),
1681                  (e[0] === i || t.contains(e[0], i)) && t(i).trigger("focus")),
1682                e
1683              );
1684            },
1685          }),
1686        t.extend(t.effects, {
1687          version: "1.12.1",
1688          define: function (e, i, s) {
1689            return (
1690              s || ((s = i), (i = "effect")),
1691              (t.effects.effect[e] = s),
1692              (t.effects.effect[e].mode = i),
1693              s
1694            );
1695          },
1696          scaledDimensions: function (t, e, i) {
1697            if (0 === e)
1698              return { height: 0, width: 0, outerHeight: 0, outerWidth: 0 };
1699            var s = "horizontal" !== i ? (e || 100) / 100 : 1,
1700              n = "vertical" !== i ? (e || 100) / 100 : 1;
1701            return {
1702              height: t.height() * n,
1703              width: t.width() * s,
1704              outerHeight: t.outerHeight() * n,
1705              outerWidth: t.outerWidth() * s,
1706            };
1707          },
1708          clipToBox: function (t) {
1709            return {
1710              width: t.clip.right - t.clip.left,
1711              height: t.clip.bottom - t.clip.top,
1712              left: t.clip.left,
1713              top: t.clip.top,
1714            };
1715          },
1716          unshift: function (t, e, i) {
1717            var s = t.queue();
1718            e > 1 && s.splice.apply(s, [1, 0].concat(s.splice(e, i))),
1719              t.dequeue();
1720          },
1721          saveStyle: function (t) {
1722            t.data(u, t[0].style.cssText);
1723          },
1724          restoreStyle: function (t) {
1725            (t[0].style.cssText = t.data(u) || ""), t.removeData(u);
1726          },
1727          mode: function (t, e) {
1728            var i = t.is(":hidden");
1729            return (
1730              "toggle" === e && (e = i ? "show" : "hide"),
1731              (i ? "hide" === e : "show" === e) && (e = "none"),
1732              e
1733            );
1734          },
1735          getBaseline: function (t, e) {
1736            var i, s;
1737            switch (t[0]) {
1738              case "top":
1739                i = 0;
1740                break;
1741              case "middle":
1742                i = 0.5;
1743                break;
1744              case "bottom":
1745                i = 1;
1746                break;
1747              default:
1748                i = t[0] / e.height;
1749            }
1750            switch (t[1]) {
1751              case "left":
1752                s = 0;
1753                break;
1754              case "center":
1755                s = 0.5;
1756                break;
1757              case "right":
1758                s = 1;
1759                break;
1760              default:
1761                s = t[1] / e.width;
1762            }
1763            return { x: s, y: i };
1764          },
1765          createPlaceholder: function (e) {
1766            var i,
1767              s = e.css("position"),
1768              n = e.position();
1769            return (
1770              e
1771                .css({
1772                  marginTop: e.css("marginTop"),
1773                  marginBottom: e.css("marginBottom"),
1774                  marginLeft: e.css("marginLeft"),
1775                  marginRight: e.css("marginRight"),
1776                })
1777                .outerWidth(e.outerWidth())
1778                .outerHeight(e.outerHeight()),
1779              /^(static|relative)/.test(s) &&
1780                ((s = "absolute"),
1781                (i = t("<" + e[0].nodeName + ">")
1782                  .insertAfter(e)
1783                  .css({
1784                    display: /^(inline|ruby)/.test(e.css("display"))
1785                      ? "inline-block"
1786                      : "block",
1787                    visibility: "hidden",
1788                    marginTop: e.css("marginTop"),
1789                    marginBottom: e.css("marginBottom"),
1790                    marginLeft: e.css("marginLeft"),
1791                    marginRight: e.css("marginRight"),
1792                    float: e.css("float"),
1793                  })
1794                  .outerWidth(e.outerWidth())
1795                  .outerHeight(e.outerHeight())
1796                  .addClass("ui-effects-placeholder")),
1797                e.data(c + "placeholder", i)),
1798              e.css({ position: s, left: n.left, top: n.top }),
1799              i
1800            );
1801          },
1802          removePlaceholder: function (t) {
1803            var e = c + "placeholder",
1804              i = t.data(e);
1805            i && (i.remove(), t.removeData(e));
1806          },
1807          cleanUp: function (e) {
1808            t.effects.restoreStyle(e), t.effects.removePlaceholder(e);
1809          },
1810          setTransition: function (e, i, s, n) {
1811            return (
1812              (n = n || {}),
1813              t.each(i, function (t, i) {
1814                var o = e.cssUnit(i);
1815                o[0] > 0 && (n[i] = o[0] * s + o[1]);
1816              }),
1817              n
1818            );
1819          },
1820        }),
1821        t.fn.extend({
1822          effect: function () {
1823            function i(e) {
1824              function i() {
1825                r.removeData(d),
1826                  t.effects.cleanUp(r),
1827                  "hide" === s.mode && r.hide(),
1828                  a();
1829              }
1830              function a() {
1831                t.isFunction(h) && h.call(r[0]), t.isFunction(e) && e();
1832              }
1833              var r = t(this);
1834              (s.mode = c.shift()),
1835                t.uiBackCompat === !1 || o
1836                  ? "none" === s.mode
1837                    ? (r[l](), a())
1838                    : n.call(r[0], s, i)
1839                  : (r.is(":hidden") ? "hide" === l : "show" === l)
1840                    ? (r[l](), a())
1841                    : n.call(r[0], s, a);
1842            }
1843            var s = e.apply(this, arguments),
1844              n = t.effects.effect[s.effect],
1845              o = n.mode,
1846              a = s.queue,
1847              r = a || "fx",
1848              h = s.complete,
1849              l = s.mode,
1850              c = [],
1851              u = function (e) {
1852                var i = t(this),
1853                  s = t.effects.mode(i, l) || o;
1854                i.data(d, !0),
1855                  c.push(s),
1856                  o && ("show" === s || (s === o && "hide" === s)) && i.show(),
1857                  (o && "none" === s) || t.effects.saveStyle(i),
1858                  t.isFunction(e) && e();
1859              };
1860            return t.fx.off || !n
1861              ? l
1862                ? this[l](s.duration, h)
1863                : this.each(function () {
1864                    h && h.call(this);
1865                  })
1866              : a === !1
1867                ? this.each(u).each(i)
1868                : this.queue(r, u).queue(r, i);
1869          },
1870          show: (function (t) {
1871            return function (s) {
1872              if (i(s)) return t.apply(this, arguments);
1873              var n = e.apply(this, arguments);
1874              return (n.mode = "show"), this.effect.call(this, n);
1875            };
1876          })(t.fn.show),
1877          hide: (function (t) {
1878            return function (s) {
1879              if (i(s)) return t.apply(this, arguments);
1880              var n = e.apply(this, arguments);
1881              return (n.mode = "hide"), this.effect.call(this, n);
1882            };
1883          })(t.fn.hide),
1884          toggle: (function (t) {
1885            return function (s) {
1886              if (i(s) || "boolean" == typeof s)
1887                return t.apply(this, arguments);
1888              var n = e.apply(this, arguments);
1889              return (n.mode = "toggle"), this.effect.call(this, n);
1890            };
1891          })(t.fn.toggle),
1892          cssUnit: function (e) {
1893            var i = this.css(e),
1894              s = [];
1895            return (
1896              t.each(["em", "px", "%", "pt"], function (t, e) {
1897                i.indexOf(e) > 0 && (s = [parseFloat(i), e]);
1898              }),
1899              s
1900            );
1901          },
1902          cssClip: function (t) {
1903            return t
1904              ? this.css(
1905                  "clip",
1906                  "rect(" +
1907                    t.top +
1908                    "px " +
1909                    t.right +
1910                    "px " +
1911                    t.bottom +
1912                    "px " +
1913                    t.left +
1914                    "px)",
1915                )
1916              : s(this.css("clip"), this);
1917          },
1918          transfer: function (e, i) {
1919            var s = t(this),
1920              n = t(e.to),
1921              o = "fixed" === n.css("position"),
1922              a = t("body"),
1923              r = o ? a.scrollTop() : 0,
1924              h = o ? a.scrollLeft() : 0,
1925              l = n.offset(),
1926              c = {
1927                top: l.top - r,
1928                left: l.left - h,
1929                height: n.innerHeight(),
1930                width: n.innerWidth(),
1931              },
1932              u = s.offset(),
1933              d = t("<div class='ui-effects-transfer'></div>")
1934                .appendTo("body")
1935                .addClass(e.className)
1936                .css({
1937                  top: u.top - r,
1938                  left: u.left - h,
1939                  height: s.innerHeight(),
1940                  width: s.innerWidth(),
1941                  position: o ? "fixed" : "absolute",
1942                })
1943                .animate(c, e.duration, e.easing, function () {
1944                  d.remove(), t.isFunction(i) && i();
1945                });
1946          },
1947        }),
1948        (t.fx.step.clip = function (e) {
1949          e.clipInit ||
1950            ((e.start = t(e.elem).cssClip()),
1951            "string" == typeof e.end && (e.end = s(e.end, e.elem)),
1952            (e.clipInit = !0)),
1953            t(e.elem).cssClip({
1954              top: e.pos * (e.end.top - e.start.top) + e.start.top,
1955              right: e.pos * (e.end.right - e.start.right) + e.start.right,
1956              bottom: e.pos * (e.end.bottom - e.start.bottom) + e.start.bottom,
1957              left: e.pos * (e.end.left - e.start.left) + e.start.left,
1958            });
1959        });
1960    })(),
1961    (function () {
1962      var e = {};
1963      t.each(["Quad", "Cubic", "Quart", "Quint", "Expo"], function (t, i) {
1964        e[i] = function (e) {
1965          return Math.pow(e, t + 2);
1966        };
1967      }),
1968        t.extend(e, {
1969          Sine: function (t) {
1970            return 1 - Math.cos((t * Math.PI) / 2);
1971          },
1972          Circ: function (t) {
1973            return 1 - Math.sqrt(1 - t * t);
1974          },
1975          Elastic: function (t) {
1976            return 0 === t || 1 === t
1977              ? t
1978              : -Math.pow(2, 8 * (t - 1)) *
1979                  Math.sin(((80 * (t - 1) - 7.5) * Math.PI) / 15);
1980          },
1981          Back: function (t) {
1982            return t * t * (3 * t - 2);
1983          },
1984          Bounce: function (t) {
1985            for (var e, i = 4; ((e = Math.pow(2, --i)) - 1) / 11 > t; );
1986            return (
1987              1 / Math.pow(4, 3 - i) -
1988              7.5625 * Math.pow((3 * e - 2) / 22 - t, 2)
1989            );
1990          },
1991        }),
1992        t.each(e, function (e, i) {
1993          (t.easing["easeIn" + e] = i),
1994            (t.easing["easeOut" + e] = function (t) {
1995              return 1 - i(1 - t);
1996            }),
1997            (t.easing["easeInOut" + e] = function (t) {
1998              return 0.5 > t ? i(2 * t) / 2 : 1 - i(-2 * t + 2) / 2;
1999            });
2000        });
2001    })();
2002  var f = t.effects;
2003  t.effects.define("blind", "hide", function (e, i) {
2004    var s = {
2005        up: ["bottom", "top"],
2006        vertical: ["bottom", "top"],
2007        down: ["top", "bottom"],
2008        left: ["right", "left"],
2009        horizontal: ["right", "left"],
2010        right: ["left", "right"],
2011      },
2012      n = t(this),
2013      o = e.direction || "up",
2014      a = n.cssClip(),
2015      r = { clip: t.extend({}, a) },
2016      h = t.effects.createPlaceholder(n);
2017    (r.clip[s[o][0]] = r.clip[s[o][1]]),
2018      "show" === e.mode &&
2019        (n.cssClip(r.clip), h && h.css(t.effects.clipToBox(r)), (r.clip = a)),
2020      h && h.animate(t.effects.clipToBox(r), e.duration, e.easing),
2021      n.animate(r, {
2022        queue: !1,
2023        duration: e.duration,
2024        easing: e.easing,
2025        complete: i,
2026      });
2027  }),
2028    t.effects.define("bounce", function (e, i) {
2029      var s,
2030        n,
2031        o,
2032        a = t(this),
2033        r = e.mode,
2034        h = "hide" === r,
2035        l = "show" === r,
2036        c = e.direction || "up",
2037        u = e.distance,
2038        d = e.times || 5,
2039        p = 2 * d + (l || h ? 1 : 0),
2040        f = e.duration / p,
2041        g = e.easing,
2042        m = "up" === c || "down" === c ? "top" : "left",
2043        _ = "up" === c || "left" === c,
2044        v = 0,
2045        b = a.queue().length;
2046      for (
2047        t.effects.createPlaceholder(a),
2048          o = a.css(m),
2049          u || (u = a["top" === m ? "outerHeight" : "outerWidth"]() / 3),
2050          l &&
2051            ((n = { opacity: 1 }),
2052            (n[m] = o),
2053            a
2054              .css("opacity", 0)
2055              .css(m, _ ? 2 * -u : 2 * u)
2056              .animate(n, f, g)),
2057          h && (u /= Math.pow(2, d - 1)),
2058          n = {},
2059          n[m] = o;
2060        d > v;
2061        v++
2062      )
2063        (s = {}),
2064          (s[m] = (_ ? "-=" : "+=") + u),
2065          a.animate(s, f, g).animate(n, f, g),
2066          (u = h ? 2 * u : u / 2);
2067      h &&
2068        ((s = { opacity: 0 }),
2069        (s[m] = (_ ? "-=" : "+=") + u),
2070        a.animate(s, f, g)),
2071        a.queue(i),
2072        t.effects.unshift(a, b, p + 1);
2073    }),
2074    t.effects.define("clip", "hide", function (e, i) {
2075      var s,
2076        n = {},
2077        o = t(this),
2078        a = e.direction || "vertical",
2079        r = "both" === a,
2080        h = r || "horizontal" === a,
2081        l = r || "vertical" === a;
2082      (s = o.cssClip()),
2083        (n.clip = {
2084          top: l ? (s.bottom - s.top) / 2 : s.top,
2085          right: h ? (s.right - s.left) / 2 : s.right,
2086          bottom: l ? (s.bottom - s.top) / 2 : s.bottom,
2087          left: h ? (s.right - s.left) / 2 : s.left,
2088        }),
2089        t.effects.createPlaceholder(o),
2090        "show" === e.mode && (o.cssClip(n.clip), (n.clip = s)),
2091        o.animate(n, {
2092          queue: !1,
2093          duration: e.duration,
2094          easing: e.easing,
2095          complete: i,
2096        });
2097    }),
2098    t.effects.define("drop", "hide", function (e, i) {
2099      var s,
2100        n = t(this),
2101        o = e.mode,
2102        a = "show" === o,
2103        r = e.direction || "left",
2104        h = "up" === r || "down" === r ? "top" : "left",
2105        l = "up" === r || "left" === r ? "-=" : "+=",
2106        c = "+=" === l ? "-=" : "+=",
2107        u = { opacity: 0 };
2108      t.effects.createPlaceholder(n),
2109        (s =
2110          e.distance || n["top" === h ? "outerHeight" : "outerWidth"](!0) / 2),
2111        (u[h] = l + s),
2112        a && (n.css(u), (u[h] = c + s), (u.opacity = 1)),
2113        n.animate(u, {
2114          queue: !1,
2115          duration: e.duration,
2116          easing: e.easing,
2117          complete: i,
2118        });
2119    }),
2120    t.effects.define("explode", "hide", function (e, i) {
2121      function s() {
2122        b.push(this), b.length === u * d && n();
2123      }
2124      function n() {
2125        p.css({ visibility: "visible" }), t(b).remove(), i();
2126      }
2127      var o,
2128        a,
2129        r,
2130        h,
2131        l,
2132        c,
2133        u = e.pieces ? Math.round(Math.sqrt(e.pieces)) : 3,
2134        d = u,
2135        p = t(this),
2136        f = e.mode,
2137        g = "show" === f,
2138        m = p.show().css("visibility", "hidden").offset(),
2139        _ = Math.ceil(p.outerWidth() / d),
2140        v = Math.ceil(p.outerHeight() / u),
2141        b = [];
2142      for (o = 0; u > o; o++)
2143        for (h = m.top + o * v, c = o - (u - 1) / 2, a = 0; d > a; a++)
2144          (r = m.left + a * _),
2145            (l = a - (d - 1) / 2),
2146            p
2147              .clone()
2148              .appendTo("body")
2149              .wrap("<div></div>")
2150              .css({
2151                position: "absolute",
2152                visibility: "visible",
2153                left: -a * _,
2154                top: -o * v,
2155              })
2156              .parent()
2157              .addClass("ui-effects-explode")
2158              .css({
2159                position: "absolute",
2160                overflow: "hidden",
2161                width: _,
2162                height: v,
2163                left: r + (g ? l * _ : 0),
2164                top: h + (g ? c * v : 0),
2165                opacity: g ? 0 : 1,
2166              })
2167              .animate(
2168                {
2169                  left: r + (g ? 0 : l * _),
2170                  top: h + (g ? 0 : c * v),
2171                  opacity: g ? 1 : 0,
2172                },
2173                e.duration || 500,
2174                e.easing,
2175                s,
2176              );
2177    }),
2178    t.effects.define("fade", "toggle", function (e, i) {
2179      var s = "show" === e.mode;
2180      t(this)
2181        .css("opacity", s ? 0 : 1)
2182        .animate(
2183          { opacity: s ? 1 : 0 },
2184          { queue: !1, duration: e.duration, easing: e.easing, complete: i },
2185        );
2186    }),
2187    t.effects.define("fold", "hide", function (e, i) {
2188      var s = t(this),
2189        n = e.mode,
2190        o = "show" === n,
2191        a = "hide" === n,
2192        r = e.size || 15,
2193        h = /([0-9]+)%/.exec(r),
2194        l = !!e.horizFirst,
2195        c = l ? ["right", "bottom"] : ["bottom", "right"],
2196        u = e.duration / 2,
2197        d = t.effects.createPlaceholder(s),
2198        p = s.cssClip(),
2199        f = { clip: t.extend({}, p) },
2200        g = { clip: t.extend({}, p) },
2201        m = [p[c[0]], p[c[1]]],
2202        _ = s.queue().length;
2203      h && (r = (parseInt(h[1], 10) / 100) * m[a ? 0 : 1]),
2204        (f.clip[c[0]] = r),
2205        (g.clip[c[0]] = r),
2206        (g.clip[c[1]] = 0),
2207        o &&
2208          (s.cssClip(g.clip), d && d.css(t.effects.clipToBox(g)), (g.clip = p)),
2209        s
2210          .queue(function (i) {
2211            d &&
2212              d
2213                .animate(t.effects.clipToBox(f), u, e.easing)
2214                .animate(t.effects.clipToBox(g), u, e.easing),
2215              i();
2216          })
2217          .animate(f, u, e.easing)
2218          .animate(g, u, e.easing)
2219          .queue(i),
2220        t.effects.unshift(s, _, 4);
2221    }),
2222    t.effects.define("highlight", "show", function (e, i) {
2223      var s = t(this),
2224        n = { backgroundColor: s.css("backgroundColor") };
2225      "hide" === e.mode && (n.opacity = 0),
2226        t.effects.saveStyle(s),
2227        s
2228          .css({
2229            backgroundImage: "none",
2230            backgroundColor: e.color || "#ffff99",
2231          })
2232          .animate(n, {
2233            queue: !1,
2234            duration: e.duration,
2235            easing: e.easing,
2236            complete: i,
2237          });
2238    }),
2239    t.effects.define("size", function (e, i) {
2240      var s,
2241        n,
2242        o,
2243        a = t(this),
2244        r = ["fontSize"],
2245        h = [
2246          "borderTopWidth",
2247          "borderBottomWidth",
2248          "paddingTop",
2249          "paddingBottom",
2250        ],
2251        l = [
2252          "borderLeftWidth",
2253          "borderRightWidth",
2254          "paddingLeft",
2255          "paddingRight",
2256        ],
2257        c = e.mode,
2258        u = "effect" !== c,
2259        d = e.scale || "both",
2260        p = e.origin || ["middle", "center"],
2261        f = a.css("position"),
2262        g = a.position(),
2263        m = t.effects.scaledDimensions(a),
2264        _ = e.from || m,
2265        v = e.to || t.effects.scaledDimensions(a, 0);
2266      t.effects.createPlaceholder(a),
2267        "show" === c && ((o = _), (_ = v), (v = o)),
2268        (n = {
2269          from: { y: _.height / m.height, x: _.width / m.width },
2270          to: { y: v.height / m.height, x: v.width / m.width },
2271        }),
2272        ("box" === d || "both" === d) &&
2273          (n.from.y !== n.to.y &&
2274            ((_ = t.effects.setTransition(a, h, n.from.y, _)),
2275            (v = t.effects.setTransition(a, h, n.to.y, v))),
2276          n.from.x !== n.to.x &&
2277            ((_ = t.effects.setTransition(a, l, n.from.x, _)),
2278            (v = t.effects.setTransition(a, l, n.to.x, v)))),
2279        ("content" === d || "both" === d) &&
2280          n.from.y !== n.to.y &&
2281          ((_ = t.effects.setTransition(a, r, n.from.y, _)),
2282          (v = t.effects.setTransition(a, r, n.to.y, v))),
2283        p &&
2284          ((s = t.effects.getBaseline(p, m)),
2285          (_.top = (m.outerHeight - _.outerHeight) * s.y + g.top),
2286          (_.left = (m.outerWidth - _.outerWidth) * s.x + g.left),
2287          (v.top = (m.outerHeight - v.outerHeight) * s.y + g.top),
2288          (v.left = (m.outerWidth - v.outerWidth) * s.x + g.left)),
2289        a.css(_),
2290        ("content" === d || "both" === d) &&
2291          ((h = h.concat(["marginTop", "marginBottom"]).concat(r)),
2292          (l = l.concat(["marginLeft", "marginRight"])),
2293          a.find("*[width]").each(function () {
2294            var i = t(this),
2295              s = t.effects.scaledDimensions(i),
2296              o = {
2297                height: s.height * n.from.y,
2298                width: s.width * n.from.x,
2299                outerHeight: s.outerHeight * n.from.y,
2300                outerWidth: s.outerWidth * n.from.x,
2301              },
2302              a = {
2303                height: s.height * n.to.y,
2304                width: s.width * n.to.x,
2305                outerHeight: s.height * n.to.y,
2306                outerWidth: s.width * n.to.x,
2307              };
2308            n.from.y !== n.to.y &&
2309              ((o = t.effects.setTransition(i, h, n.from.y, o)),
2310              (a = t.effects.setTransition(i, h, n.to.y, a))),
2311              n.from.x !== n.to.x &&
2312                ((o = t.effects.setTransition(i, l, n.from.x, o)),
2313                (a = t.effects.setTransition(i, l, n.to.x, a))),
2314              u && t.effects.saveStyle(i),
2315              i.css(o),
2316              i.animate(a, e.duration, e.easing, function () {
2317                u && t.effects.restoreStyle(i);
2318              });
2319          })),
2320        a.animate(v, {
2321          queue: !1,
2322          duration: e.duration,
2323          easing: e.easing,
2324          complete: function () {
2325            var e = a.offset();
2326            0 === v.opacity && a.css("opacity", _.opacity),
2327              u ||
2328                (a.css("position", "static" === f ? "relative" : f).offset(e),
2329                t.effects.saveStyle(a)),
2330              i();
2331          },
2332        });
2333    }),
2334    t.effects.define("scale", function (e, i) {
2335      var s = t(this),
2336        n = e.mode,
2337        o =
2338          parseInt(e.percent, 10) ||
2339          (0 === parseInt(e.percent, 10) ? 0 : "effect" !== n ? 0 : 100),
2340        a = t.extend(
2341          !0,
2342          {
2343            from: t.effects.scaledDimensions(s),
2344            to: t.effects.scaledDimensions(s, o, e.direction || "both"),
2345            origin: e.origin || ["middle", "center"],
2346          },
2347          e,
2348        );
2349      e.fade && ((a.from.opacity = 1), (a.to.opacity = 0)),
2350        t.effects.effect.size.call(this, a, i);
2351    }),
2352    t.effects.define("puff", "hide", function (e, i) {
2353      var s = t.extend(!0, {}, e, {
2354        fade: !0,
2355        percent: parseInt(e.percent, 10) || 150,
2356      });
2357      t.effects.effect.scale.call(this, s, i);
2358    }),
2359    t.effects.define("pulsate", "show", function (e, i) {
2360      var s = t(this),
2361        n = e.mode,
2362        o = "show" === n,
2363        a = "hide" === n,
2364        r = o || a,
2365        h = 2 * (e.times || 5) + (r ? 1 : 0),
2366        l = e.duration / h,
2367        c = 0,
2368        u = 1,
2369        d = s.queue().length;
2370      for (
2371        (o || !s.is(":visible")) && (s.css("opacity", 0).show(), (c = 1));
2372        h > u;
2373        u++
2374      )
2375        s.animate({ opacity: c }, l, e.easing), (c = 1 - c);
2376      s.animate({ opacity: c }, l, e.easing),
2377        s.queue(i),
2378        t.effects.unshift(s, d, h + 1);
2379    }),
2380    t.effects.define("shake", function (e, i) {
2381      var s = 1,
2382        n = t(this),
2383        o = e.direction || "left",
2384        a = e.distance || 20,
2385        r = e.times || 3,
2386        h = 2 * r + 1,
2387        l = Math.round(e.duration / h),
2388        c = "up" === o || "down" === o ? "top" : "left",
2389        u = "up" === o || "left" === o,
2390        d = {},
2391        p = {},
2392        f = {},
2393        g = n.queue().length;
2394      for (
2395        t.effects.createPlaceholder(n),
2396          d[c] = (u ? "-=" : "+=") + a,
2397          p[c] = (u ? "+=" : "-=") + 2 * a,
2398          f[c] = (u ? "-=" : "+=") + 2 * a,
2399          n.animate(d, l, e.easing);
2400        r > s;
2401        s++
2402      )
2403        n.animate(p, l, e.easing).animate(f, l, e.easing);
2404      n
2405        .animate(p, l, e.easing)
2406        .animate(d, l / 2, e.easing)
2407        .queue(i),
2408        t.effects.unshift(n, g, h + 1);
2409    }),
2410    t.effects.define("slide", "show", function (e, i) {
2411      var s,
2412        n,
2413        o = t(this),
2414        a = {
2415          up: ["bottom", "top"],
2416          down: ["top", "bottom"],
2417          left: ["right", "left"],
2418          right: ["left", "right"],
2419        },
2420        r = e.mode,
2421        h = e.direction || "left",
2422        l = "up" === h || "down" === h ? "top" : "left",
2423        c = "up" === h || "left" === h,
2424        u = e.distance || o["top" === l ? "outerHeight" : "outerWidth"](!0),
2425        d = {};
2426      t.effects.createPlaceholder(o),
2427        (s = o.cssClip()),
2428        (n = o.position()[l]),
2429        (d[l] = (c ? -1 : 1) * u + n),
2430        (d.clip = o.cssClip()),
2431        (d.clip[a[h][1]] = d.clip[a[h][0]]),
2432        "show" === r &&
2433          (o.cssClip(d.clip), o.css(l, d[l]), (d.clip = s), (d[l] = n)),
2434        o.animate(d, {
2435          queue: !1,
2436          duration: e.duration,
2437          easing: e.easing,
2438          complete: i,
2439        });
2440    });
2441  var f;
2442  t.uiBackCompat !== !1 &&
2443    (f = t.effects.define("transfer", function (e, i) {
2444      t(this).transfer(e, i);
2445    })),
2446    (t.ui.focusable = function (i, s) {
2447      var n,
2448        o,
2449        a,
2450        r,
2451        h,
2452        l = i.nodeName.toLowerCase();
2453      return "area" === l
2454        ? ((n = i.parentNode),
2455          (o = n.name),
2456          i.href && o && "map" === n.nodeName.toLowerCase()
2457            ? ((a = t("img[usemap='#" + o + "']")),
2458              a.length > 0 && a.is(":visible"))
2459            : !1)
2460        : (/^(input|select|textarea|button|object)$/.test(l)
2461            ? ((r = !i.disabled),
2462              r && ((h = t(i).closest("fieldset")[0]), h && (r = !h.disabled)))
2463            : (r = "a" === l ? i.href || s : s),
2464          r && t(i).is(":visible") && e(t(i)));
2465    }),
2466    t.extend(t.expr[":"], {
2467      focusable: function (e) {
2468        return t.ui.focusable(e, null != t.attr(e, "tabindex"));
2469      },
2470    }),
2471    t.ui.focusable,
2472    (t.fn.form = function () {
2473      return "string" == typeof this[0].form
2474        ? this.closest("form")
2475        : t(this[0].form);
2476    }),
2477    (t.ui.formResetMixin = {
2478      _formResetHandler: function () {
2479        var e = t(this);
2480        setTimeout(function () {
2481          var i = e.data("ui-form-reset-instances");
2482          t.each(i, function () {
2483            this.refresh();
2484          });
2485        });
2486      },
2487      _bindFormResetHandler: function () {
2488        if (((this.form = this.element.form()), this.form.length)) {
2489          var t = this.form.data("ui-form-reset-instances") || [];
2490          t.length ||
2491            this.form.on("reset.ui-form-reset", this._formResetHandler),
2492            t.push(this),
2493            this.form.data("ui-form-reset-instances", t);
2494        }
2495      },
2496      _unbindFormResetHandler: function () {
2497        if (this.form.length) {
2498          var e = this.form.data("ui-form-reset-instances");
2499          e.splice(t.inArray(this, e), 1),
2500            e.length
2501              ? this.form.data("ui-form-reset-instances", e)
2502              : this.form
2503                  .removeData("ui-form-reset-instances")
2504                  .off("reset.ui-form-reset");
2505        }
2506      },
2507    }),
2508    "1.7" === t.fn.jquery.substring(0, 3) &&
2509      (t.each(["Width", "Height"], function (e, i) {
2510        function s(e, i, s, o) {
2511          return (
2512            t.each(n, function () {
2513              (i -= parseFloat(t.css(e, "padding" + this)) || 0),
2514                s &&
2515                  (i -= parseFloat(t.css(e, "border" + this + "Width")) || 0),
2516                o && (i -= parseFloat(t.css(e, "margin" + this)) || 0);
2517            }),
2518            i
2519          );
2520        }
2521        var n = "Width" === i ? ["Left", "Right"] : ["Top", "Bottom"],
2522          o = i.toLowerCase(),
2523          a = {
2524            innerWidth: t.fn.innerWidth,
2525            innerHeight: t.fn.innerHeight,
2526            outerWidth: t.fn.outerWidth,
2527            outerHeight: t.fn.outerHeight,
2528          };
2529        (t.fn["inner" + i] = function (e) {
2530          return void 0 === e
2531            ? a["inner" + i].call(this)
2532            : this.each(function () {
2533                t(this).css(o, s(this, e) + "px");
2534              });
2535        }),
2536          (t.fn["outer" + i] = function (e, n) {
2537            return "number" != typeof e
2538              ? a["outer" + i].call(this, e)
2539              : this.each(function () {
2540                  t(this).css(o, s(this, e, !0, n) + "px");
2541                });
2542          });
2543      }),
2544      (t.fn.addBack = function (t) {
2545        return this.add(
2546          null == t ? this.prevObject : this.prevObject.filter(t),
2547        );
2548      })),
2549    (t.ui.keyCode = {
2550      BACKSPACE: 8,
2551      COMMA: 188,
2552      DELETE: 46,
2553      DOWN: 40,
2554      END: 35,
2555      ENTER: 13,
2556      ESCAPE: 27,
2557      HOME: 36,
2558      LEFT: 37,
2559      PAGE_DOWN: 34,
2560      PAGE_UP: 33,
2561      PERIOD: 190,
2562      RIGHT: 39,
2563      SPACE: 32,
2564      TAB: 9,
2565      UP: 38,
2566    }),
2567    (t.ui.escapeSelector = (function () {
2568      var t = /([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;
2569      return function (e) {
2570        return e.replace(t, "\\$1");
2571      };
2572    })()),
2573    (t.fn.labels = function () {
2574      var e, i, s, n, o;
2575      return this[0].labels && this[0].labels.length
2576        ? this.pushStack(this[0].labels)
2577        : ((n = this.eq(0).parents("label")),
2578          (s = this.attr("id")),
2579          s &&
2580            ((e = this.eq(0).parents().last()),
2581            (o = e.add(e.length ? e.siblings() : this.siblings())),
2582            (i = "label[for='" + t.ui.escapeSelector(s) + "']"),
2583            (n = n.add(o.find(i).addBack(i)))),
2584          this.pushStack(n));
2585    }),
2586    (t.fn.scrollParent = function (e) {
2587      var i = this.css("position"),
2588        s = "absolute" === i,
2589        n = e ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
2590        o = this.parents()
2591          .filter(function () {
2592            var e = t(this);
2593            return s && "static" === e.css("position")
2594              ? !1
2595              : n.test(
2596                  e.css("overflow") + e.css("overflow-y") + e.css("overflow-x"),
2597                );
2598          })
2599          .eq(0);
2600      return "fixed" !== i && o.length
2601        ? o
2602        : t(this[0].ownerDocument || document);
2603    }),
2604    t.extend(t.expr[":"], {
2605      tabbable: function (e) {
2606        var i = t.attr(e, "tabindex"),
2607          s = null != i;
2608        return (!s || i >= 0) && t.ui.focusable(e, s);
2609      },
2610    }),
2611    t.fn.extend({
2612      uniqueId: (function () {
2613        var t = 0;
2614        return function () {
2615          return this.each(function () {
2616            this.id || (this.id = "ui-id-" + ++t);
2617          });
2618        };
2619      })(),
2620      removeUniqueId: function () {
2621        return this.each(function () {
2622          /^ui-id-\d+$/.test(this.id) && t(this).removeAttr("id");
2623        });
2624      },
2625    }),
2626    t.widget("ui.accordion", {
2627      version: "1.12.1",
2628      options: {
2629        active: 0,
2630        animate: {},
2631        classes: {
2632          "ui-accordion-header": "ui-corner-top",
2633          "ui-accordion-header-collapsed": "ui-corner-all",
2634          "ui-accordion-content": "ui-corner-bottom",
2635        },
2636        collapsible: !1,
2637        event: "click",
2638        header: "> li > :first-child, > :not(li):even",
2639        heightStyle: "auto",
2640        icons: {
2641          activeHeader: "ui-icon-triangle-1-s",
2642          header: "ui-icon-triangle-1-e",
2643        },
2644        activate: null,
2645        beforeActivate: null,
2646      },
2647      hideProps: {
2648        borderTopWidth: "hide",
2649        borderBottomWidth: "hide",
2650        paddingTop: "hide",
2651        paddingBottom: "hide",
2652        height: "hide",
2653      },
2654      showProps: {
2655        borderTopWidth: "show",
2656        borderBottomWidth: "show",
2657        paddingTop: "show",
2658        paddingBottom: "show",
2659        height: "show",
2660      },
2661      _create: function () {
2662        var e = this.options;
2663        (this.prevShow = this.prevHide = t()),
2664          this._addClass("ui-accordion", "ui-widget ui-helper-reset"),
2665          this.element.attr("role", "tablist"),
2666          e.collapsible ||
2667            (e.active !== !1 && null != e.active) ||
2668            (e.active = 0),
2669          this._processPanels(),
2670          0 > e.active && (e.active += this.headers.length),
2671          this._refresh();
2672      },
2673      _getCreateEventData: function () {
2674        return {
2675          header: this.active,
2676          panel: this.active.length ? this.active.next() : t(),
2677        };
2678      },
2679      _createIcons: function () {
2680        var e,
2681          i,
2682          s = this.options.icons;
2683        s &&
2684          ((e = t("<span>")),
2685          this._addClass(e, "ui-accordion-header-icon", "ui-icon " + s.header),
2686          e.prependTo(this.headers),
2687          (i = this.active.children(".ui-accordion-header-icon")),
2688          this._removeClass(i, s.header)
2689            ._addClass(i, null, s.activeHeader)
2690            ._addClass(this.headers, "ui-accordion-icons"));
2691      },
2692      _destroyIcons: function () {
2693        this._removeClass(this.headers, "ui-accordion-icons"),
2694          this.headers.children(".ui-accordion-header-icon").remove();
2695      },
2696      _destroy: function () {
2697        var t;
2698        this.element.removeAttr("role"),
2699          this.headers
2700            .removeAttr(
2701              "role aria-expanded aria-selected aria-controls tabIndex",
2702            )
2703            .removeUniqueId(),
2704          this._destroyIcons(),
2705          (t = this.headers
2706            .next()
2707            .css("display", "")
2708            .removeAttr("role aria-hidden aria-labelledby")
2709            .removeUniqueId()),
2710          "content" !== this.options.heightStyle && t.css("height", "");
2711      },
2712      _setOption: function (t, e) {
2713        return "active" === t
2714          ? (this._activate(e), void 0)
2715          : ("event" === t &&
2716              (this.options.event &&
2717                this._off(this.headers, this.options.event),
2718              this._setupEvents(e)),
2719            this._super(t, e),
2720            "collapsible" !== t ||
2721              e ||
2722              this.options.active !== !1 ||
2723              this._activate(0),
2724            "icons" === t && (this._destroyIcons(), e && this._createIcons()),
2725            void 0);
2726      },
2727      _setOptionDisabled: function (t) {
2728        this._super(t),
2729          this.element.attr("aria-disabled", t),
2730          this._toggleClass(null, "ui-state-disabled", !!t),
2731          this._toggleClass(
2732            this.headers.add(this.headers.next()),
2733            null,
2734            "ui-state-disabled",
2735            !!t,
2736          );
2737      },
2738      _keydown: function (e) {
2739        if (!e.altKey && !e.ctrlKey) {
2740          var i = t.ui.keyCode,
2741            s = this.headers.length,
2742            n = this.headers.index(e.target),
2743            o = !1;
2744          switch (e.keyCode) {
2745            case i.RIGHT:
2746            case i.DOWN:
2747              o = this.headers[(n + 1) % s];
2748              break;
2749            case i.LEFT:
2750            case i.UP:
2751              o = this.headers[(n - 1 + s) % s];
2752              break;
2753            case i.SPACE:
2754            case i.ENTER:
2755              this._eventHandler(e);
2756              break;
2757            case i.HOME:
2758              o = this.headers[0];
2759              break;
2760            case i.END:
2761              o = this.headers[s - 1];
2762          }
2763          o &&
2764            (t(e.target).attr("tabIndex", -1),
2765            t(o).attr("tabIndex", 0),
2766            t(o).trigger("focus"),
2767            e.preventDefault());
2768        }
2769      },
2770      _panelKeyDown: function (e) {
2771        e.keyCode === t.ui.keyCode.UP &&
2772          e.ctrlKey &&
2773          t(e.currentTarget).prev().trigger("focus");
2774      },
2775      refresh: function () {
2776        var e = this.options;
2777        this._processPanels(),
2778          (e.active === !1 && e.collapsible === !0) || !this.headers.length
2779            ? ((e.active = !1), (this.active = t()))
2780            : e.active === !1
2781              ? this._activate(0)
2782              : this.active.length &&
2783                  !t.contains(this.element[0], this.active[0])
2784                ? this.headers.length ===
2785                  this.headers.find(".ui-state-disabled").length
2786                  ? ((e.active = !1), (this.active = t()))
2787                  : this._activate(Math.max(0, e.active - 1))
2788                : (e.active = this.headers.index(this.active)),
2789          this._destroyIcons(),
2790          this._refresh();
2791      },
2792      _processPanels: function () {
2793        var t = this.headers,
2794          e = this.panels;
2795        (this.headers = this.element.find(this.options.header)),
2796          this._addClass(
2797            this.headers,
2798            "ui-accordion-header ui-accordion-header-collapsed",
2799            "ui-state-default",
2800          ),
2801          (this.panels = this.headers
2802            .next()
2803            .filter(":not(.ui-accordion-content-active)")
2804            .hide()),
2805          this._addClass(
2806            this.panels,
2807            "ui-accordion-content",
2808            "ui-helper-reset ui-widget-content",
2809          ),
2810          e && (this._off(t.not(this.headers)), this._off(e.not(this.panels)));
2811      },
2812      _refresh: function () {
2813        var e,
2814          i = this.options,
2815          s = i.heightStyle,
2816          n = this.element.parent();
2817        (this.active = this._findActive(i.active)),
2818          this._addClass(
2819            this.active,
2820            "ui-accordion-header-active",
2821            "ui-state-active",
2822          )._removeClass(this.active, "ui-accordion-header-collapsed"),
2823          this._addClass(this.active.next(), "ui-accordion-content-active"),
2824          this.active.next().show(),
2825          this.headers
2826            .attr("role", "tab")
2827            .each(function () {
2828              var e = t(this),
2829                i = e.uniqueId().attr("id"),
2830                s = e.next(),
2831                n = s.uniqueId().attr("id");
2832              e.attr("aria-controls", n), s.attr("aria-labelledby", i);
2833            })
2834            .next()
2835            .attr("role", "tabpanel"),
2836          this.headers
2837            .not(this.active)
2838            .attr({
2839              "aria-selected": "false",
2840              "aria-expanded": "false",
2841              tabIndex: -1,
2842            })
2843            .next()
2844            .attr({ "aria-hidden": "true" })
2845            .hide(),
2846          this.active.length
2847            ? this.active
2848                .attr({
2849                  "aria-selected": "true",
2850                  "aria-expanded": "true",
2851                  tabIndex: 0,
2852                })
2853                .next()
2854                .attr({ "aria-hidden": "false" })
2855            : this.headers.eq(0).attr("tabIndex", 0),
2856          this._createIcons(),
2857          this._setupEvents(i.event),
2858          "fill" === s
2859            ? ((e = n.height()),
2860              this.element.siblings(":visible").each(function () {
2861                var i = t(this),
2862                  s = i.css("position");
2863                "absolute" !== s && "fixed" !== s && (e -= i.outerHeight(!0));
2864              }),
2865              this.headers.each(function () {
2866                e -= t(this).outerHeight(!0);
2867              }),
2868              this.headers
2869                .next()
2870                .each(function () {
2871                  t(this).height(
2872                    Math.max(0, e - t(this).innerHeight() + t(this).height()),
2873                  );
2874                })
2875                .css("overflow", "auto"))
2876            : "auto" === s &&
2877              ((e = 0),
2878              this.headers
2879                .next()
2880                .each(function () {
2881                  var i = t(this).is(":visible");
2882                  i || t(this).show(),
2883                    (e = Math.max(e, t(this).css("height", "").height())),
2884                    i || t(this).hide();
2885                })
2886                .height(e));
2887      },
2888      _activate: function (e) {
2889        var i = this._findActive(e)[0];
2890        i !== this.active[0] &&
2891          ((i = i || this.active[0]),
2892          this._eventHandler({
2893            target: i,
2894            currentTarget: i,
2895            preventDefault: t.noop,
2896          }));
2897      },
2898      _findActive: function (e) {
2899        return "number" == typeof e ? this.headers.eq(e) : t();
2900      },
2901      _setupEvents: function (e) {
2902        var i = { keydown: "_keydown" };
2903        e &&
2904          t.each(e.split(" "), function (t, e) {
2905            i[e] = "_eventHandler";
2906          }),
2907          this._off(this.headers.add(this.headers.next())),
2908          this._on(this.headers, i),
2909          this._on(this.headers.next(), { keydown: "_panelKeyDown" }),
2910          this._hoverable(this.headers),
2911          this._focusable(this.headers);
2912      },
2913      _eventHandler: function (e) {
2914        var i,
2915          s,
2916          n = this.options,
2917          o = this.active,
2918          a = t(e.currentTarget),
2919          r = a[0] === o[0],
2920          h = r && n.collapsible,
2921          l = h ? t() : a.next(),
2922          c = o.next(),
2923          u = {
2924            oldHeader: o,
2925            oldPanel: c,
2926            newHeader: h ? t() : a,
2927            newPanel: l,
2928          };
2929        e.preventDefault(),
2930          (r && !n.collapsible) ||
2931            this._trigger("beforeActivate", e, u) === !1 ||
2932            ((n.active = h ? !1 : this.headers.index(a)),
2933            (this.active = r ? t() : a),
2934            this._toggle(u),
2935            this._removeClass(
2936              o,
2937              "ui-accordion-header-active",
2938              "ui-state-active",
2939            ),
2940            n.icons &&
2941              ((i = o.children(".ui-accordion-header-icon")),
2942              this._removeClass(i, null, n.icons.activeHeader)._addClass(
2943                i,
2944                null,
2945                n.icons.header,
2946              )),
2947            r ||
2948              (this._removeClass(a, "ui-accordion-header-collapsed")._addClass(
2949                a,
2950                "ui-accordion-header-active",
2951                "ui-state-active",
2952              ),
2953              n.icons &&
2954                ((s = a.children(".ui-accordion-header-icon")),
2955                this._removeClass(s, null, n.icons.header)._addClass(
2956                  s,
2957                  null,
2958                  n.icons.activeHeader,
2959                )),
2960              this._addClass(a.next(), "ui-accordion-content-active")));
2961      },
2962      _toggle: function (e) {
2963        var i = e.newPanel,
2964          s = this.prevShow.length ? this.prevShow : e.oldPanel;
2965        this.prevShow.add(this.prevHide).stop(!0, !0),
2966          (this.prevShow = i),
2967          (this.prevHide = s),
2968          this.options.animate
2969            ? this._animate(i, s, e)
2970            : (s.hide(), i.show(), this._toggleComplete(e)),
2971          s.attr({ "aria-hidden": "true" }),
2972          s.prev().attr({ "aria-selected": "false", "aria-expanded": "false" }),
2973          i.length && s.length
2974            ? s.prev().attr({ tabIndex: -1, "aria-expanded": "false" })
2975            : i.length &&
2976              this.headers
2977                .filter(function () {
2978                  return 0 === parseInt(t(this).attr("tabIndex"), 10);
2979                })
2980                .attr("tabIndex", -1),
2981          i.attr("aria-hidden", "false").prev().attr({
2982            "aria-selected": "true",
2983            "aria-expanded": "true",
2984            tabIndex: 0,
2985          });
2986      },
2987      _animate: function (t, e, i) {
2988        var s,
2989          n,
2990          o,
2991          a = this,
2992          r = 0,
2993          h = t.css("box-sizing"),
2994          l = t.length && (!e.length || t.index() < e.index()),
2995          c = this.options.animate || {},
2996          u = (l && c.down) || c,
2997          d = function () {
2998            a._toggleComplete(i);
2999          };
3000        return (
3001          "number" == typeof u && (o = u),
3002          "string" == typeof u && (n = u),
3003          (n = n || u.easing || c.easing),
3004          (o = o || u.duration || c.duration),
3005          e.length
3006            ? t.length
3007              ? ((s = t.show().outerHeight()),
3008                e.animate(this.hideProps, {
3009                  duration: o,
3010                  easing: n,
3011                  step: function (t, e) {
3012                    e.now = Math.round(t);
3013                  },
3014                }),
3015                t.hide().animate(this.showProps, {
3016                  duration: o,
3017                  easing: n,
3018                  complete: d,
3019                  step: function (t, i) {
3020                    (i.now = Math.round(t)),
3021                      "height" !== i.prop
3022                        ? "content-box" === h && (r += i.now)
3023                        : "content" !== a.options.heightStyle &&
3024                          ((i.now = Math.round(s - e.outerHeight() - r)),
3025                          (r = 0));
3026                  },
3027                }),
3028                void 0)
3029              : e.animate(this.hideProps, o, n, d)
3030            : t.animate(this.showProps, o, n, d)
3031        );
3032      },
3033      _toggleComplete: function (t) {
3034        var e = t.oldPanel,
3035          i = e.prev();
3036        this._removeClass(e, "ui-accordion-content-active"),
3037          this._removeClass(i, "ui-accordion-header-active")._addClass(
3038            i,
3039            "ui-accordion-header-collapsed",
3040          ),
3041          e.length && (e.parent()[0].className = e.parent()[0].className),
3042          this._trigger("activate", null, t);
3043      },
3044    }),
3045    (t.ui.safeActiveElement = function (t) {
3046      var e;
3047      try {
3048        e = t.activeElement;
3049      } catch (i) {
3050        e = t.body;
3051      }
3052      return e || (e = t.body), e.nodeName || (e = t.body), e;
3053    }),
3054    t.widget("ui.menu", {
3055      version: "1.12.1",
3056      defaultElement: "<ul>",
3057      delay: 300,
3058      options: {
3059        icons: { submenu: "ui-icon-caret-1-e" },
3060        items: "> *",
3061        menus: "ul",
3062        position: { my: "left top", at: "right top" },
3063        role: "menu",
3064        blur: null,
3065        focus: null,
3066        select: null,
3067      },
3068      _create: function () {
3069        (this.activeMenu = this.element),
3070          (this.mouseHandled = !1),
3071          this.element
3072            .uniqueId()
3073            .attr({ role: this.options.role, tabIndex: 0 }),
3074          this._addClass("ui-menu", "ui-widget ui-widget-content"),
3075          this._on({
3076            "mousedown .ui-menu-item": function (t) {
3077              t.preventDefault();
3078            },
3079            "click .ui-menu-item": function (e) {
3080              var i = t(e.target),
3081                s = t(t.ui.safeActiveElement(this.document[0]));
3082              !this.mouseHandled &&
3083                i.not(".ui-state-disabled").length &&
3084                (this.select(e),
3085                e.isPropagationStopped() || (this.mouseHandled = !0),
3086                i.has(".ui-menu").length
3087                  ? this.expand(e)
3088                  : !this.element.is(":focus") &&
3089                    s.closest(".ui-menu").length &&
3090                    (this.element.trigger("focus", [!0]),
3091                    this.active &&
3092                      1 === this.active.parents(".ui-menu").length &&
3093                      clearTimeout(this.timer)));
3094            },
3095            "mouseenter .ui-menu-item": function (e) {
3096              if (!this.previousFilter) {
3097                var i = t(e.target).closest(".ui-menu-item"),
3098                  s = t(e.currentTarget);
3099                i[0] === s[0] &&
3100                  (this._removeClass(
3101                    s.siblings().children(".ui-state-active"),
3102                    null,
3103                    "ui-state-active",
3104                  ),
3105                  this.focus(e, s));
3106              }
3107            },
3108            mouseleave: "collapseAll",
3109            "mouseleave .ui-menu": "collapseAll",
3110            focus: function (t, e) {
3111              var i =
3112                this.active || this.element.find(this.options.items).eq(0);
3113              e || this.focus(t, i);
3114            },
3115            blur: function (e) {
3116              this._delay(function () {
3117                var i = !t.contains(
3118                  this.element[0],
3119                  t.ui.safeActiveElement(this.document[0]),
3120                );
3121                i && this.collapseAll(e);
3122              });
3123            },
3124            keydown: "_keydown",
3125          }),
3126          this.refresh(),
3127          this._on(this.document, {
3128            click: function (t) {
3129              this._closeOnDocumentClick(t) && this.collapseAll(t),
3130                (this.mouseHandled = !1);
3131            },
3132          });
3133      },
3134      _destroy: function () {
3135        var e = this.element
3136            .find(".ui-menu-item")
3137            .removeAttr("role aria-disabled"),
3138          i = e
3139            .children(".ui-menu-item-wrapper")
3140            .removeUniqueId()
3141            .removeAttr("tabIndex role aria-haspopup");
3142        this.element
3143          .removeAttr("aria-activedescendant")
3144          .find(".ui-menu")
3145          .addBack()
3146          .removeAttr(
3147            "role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex",
3148          )
3149          .removeUniqueId()
3150          .show(),
3151          i.children().each(function () {
3152            var e = t(this);
3153            e.data("ui-menu-submenu-caret") && e.remove();
3154          });
3155      },
3156      _keydown: function (e) {
3157        var i,
3158          s,
3159          n,
3160          o,
3161          a = !0;
3162        switch (e.keyCode) {
3163          case t.ui.keyCode.PAGE_UP:
3164            this.previousPage(e);
3165            break;
3166          case t.ui.keyCode.PAGE_DOWN:
3167            this.nextPage(e);
3168            break;
3169          case t.ui.keyCode.HOME:
3170            this._move("first", "first", e);
3171            break;
3172          case t.ui.keyCode.END:
3173            this._move("last", "last", e);
3174            break;
3175          case t.ui.keyCode.UP:
3176            this.previous(e);
3177            break;
3178          case t.ui.keyCode.DOWN:
3179            this.next(e);
3180            break;
3181          case t.ui.keyCode.LEFT:
3182            this.collapse(e);
3183            break;
3184          case t.ui.keyCode.RIGHT:
3185            this.active &&
3186              !this.active.is(".ui-state-disabled") &&
3187              this.expand(e);
3188            break;
3189          case t.ui.keyCode.ENTER:
3190          case t.ui.keyCode.SPACE:
3191            this._activate(e);
3192            break;
3193          case t.ui.keyCode.ESCAPE:
3194            this.collapse(e);
3195            break;
3196          default:
3197            (a = !1),
3198              (s = this.previousFilter || ""),
3199              (o = !1),
3200              (n =
3201                e.keyCode >= 96 && 105 >= e.keyCode
3202                  ? "" + (e.keyCode - 96)
3203                  : String.fromCharCode(e.keyCode)),
3204              clearTimeout(this.filterTimer),
3205              n === s ? (o = !0) : (n = s + n),
3206              (i = this._filterMenuItems(n)),
3207              (i =
3208                o && -1 !== i.index(this.active.next())
3209                  ? this.active.nextAll(".ui-menu-item")
3210                  : i),
3211              i.length ||
3212                ((n = String.fromCharCode(e.keyCode)),
3213                (i = this._filterMenuItems(n))),
3214              i.length
3215                ? (this.focus(e, i),
3216                  (this.previousFilter = n),
3217                  (this.filterTimer = this._delay(function () {
3218                    delete this.previousFilter;
3219                  }, 1e3)))
3220                : delete this.previousFilter;
3221        }
3222        a && e.preventDefault();
3223      },
3224      _activate: function (t) {
3225        this.active &&
3226          !this.active.is(".ui-state-disabled") &&
3227          (this.active.children("[aria-haspopup='true']").length
3228            ? this.expand(t)
3229            : this.select(t));
3230      },
3231      refresh: function () {
3232        var e,
3233          i,
3234          s,
3235          n,
3236          o,
3237          a = this,
3238          r = this.options.icons.submenu,
3239          h = this.element.find(this.options.menus);
3240        this._toggleClass(
3241          "ui-menu-icons",
3242          null,
3243          !!this.element.find(".ui-icon").length,
3244        ),
3245          (s = h
3246            .filter(":not(.ui-menu)")
3247            .hide()
3248            .attr({
3249              role: this.options.role,
3250              "aria-hidden": "true",
3251              "aria-expanded": "false",
3252            })
3253            .each(function () {
3254              var e = t(this),
3255                i = e.prev(),
3256                s = t("<span>").data("ui-menu-submenu-caret", !0);
3257              a._addClass(s, "ui-menu-icon", "ui-icon " + r),
3258                i.attr("aria-haspopup", "true").prepend(s),
3259                e.attr("aria-labelledby", i.attr("id"));
3260            })),
3261          this._addClass(s, "ui-menu", "ui-widget ui-widget-content ui-front"),
3262          (e = h.add(this.element)),
3263          (i = e.find(this.options.items)),
3264          i.not(".ui-menu-item").each(function () {
3265            var e = t(this);
3266            a._isDivider(e) &&
3267              a._addClass(e, "ui-menu-divider", "ui-widget-content");
3268          }),
3269          (n = i.not(".ui-menu-item, .ui-menu-divider")),
3270          (o = n
3271            .children()
3272            .not(".ui-menu")
3273            .uniqueId()
3274            .attr({ tabIndex: -1, role: this._itemRole() })),
3275          this._addClass(n, "ui-menu-item")._addClass(
3276            o,
3277            "ui-menu-item-wrapper",
3278          ),
3279          i.filter(".ui-state-disabled").attr("aria-disabled", "true"),
3280          this.active &&
3281            !t.contains(this.element[0], this.active[0]) &&
3282            this.blur();
3283      },
3284      _itemRole: function () {
3285        return { menu: "menuitem", listbox: "option" }[this.options.role];
3286      },
3287      _setOption: function (t, e) {
3288        if ("icons" === t) {
3289          var i = this.element.find(".ui-menu-icon");
3290          this._removeClass(i, null, this.options.icons.submenu)._addClass(
3291            i,
3292            null,
3293            e.submenu,
3294          );
3295        }
3296        this._super(t, e);
3297      },
3298      _setOptionDisabled: function (t) {
3299        this._super(t),
3300          this.element.attr("aria-disabled", t + ""),
3301          this._toggleClass(null, "ui-state-disabled", !!t);
3302      },
3303      focus: function (t, e) {
3304        var i, s, n;
3305        this.blur(t, t && "focus" === t.type),
3306          this._scrollIntoView(e),
3307          (this.active = e.first()),
3308          (s = this.active.children(".ui-menu-item-wrapper")),
3309          this._addClass(s, null, "ui-state-active"),
3310          this.options.role &&
3311            this.element.attr("aria-activedescendant", s.attr("id")),
3312          (n = this.active
3313            .parent()
3314            .closest(".ui-menu-item")
3315            .children(".ui-menu-item-wrapper")),
3316          this._addClass(n, null, "ui-state-active"),
3317          t && "keydown" === t.type
3318            ? this._close()
3319            : (this.timer = this._delay(function () {
3320                this._close();
3321              }, this.delay)),
3322          (i = e.children(".ui-menu")),
3323          i.length && t && /^mouse/.test(t.type) && this._startOpening(i),
3324          (this.activeMenu = e.parent()),
3325          this._trigger("focus", t, { item: e });
3326      },
3327      _scrollIntoView: function (e) {
3328        var i, s, n, o, a, r;
3329        this._hasScroll() &&
3330          ((i = parseFloat(t.css(this.activeMenu[0], "borderTopWidth")) || 0),
3331          (s = parseFloat(t.css(this.activeMenu[0], "paddingTop")) || 0),
3332          (n = e.offset().top - this.activeMenu.offset().top - i - s),
3333          (o = this.activeMenu.scrollTop()),
3334          (a = this.activeMenu.height()),
3335          (r = e.outerHeight()),
3336          0 > n
3337            ? this.activeMenu.scrollTop(o + n)
3338            : n + r > a && this.activeMenu.scrollTop(o + n - a + r));
3339      },
3340      blur: function (t, e) {
3341        e || clearTimeout(this.timer),
3342          this.active &&
3343            (this._removeClass(
3344              this.active.children(".ui-menu-item-wrapper"),
3345              null,
3346              "ui-state-active",
3347            ),
3348            this._trigger("blur", t, { item: this.active }),
3349            (this.active = null));
3350      },
3351      _startOpening: function (t) {
3352        clearTimeout(this.timer),
3353          "true" === t.attr("aria-hidden") &&
3354            (this.timer = this._delay(function () {
3355              this._close(), this._open(t);
3356            }, this.delay));
3357      },
3358      _open: function (e) {
3359        var i = t.extend({ of: this.active }, this.options.position);
3360        clearTimeout(this.timer),
3361          this.element
3362            .find(".ui-menu")
3363            .not(e.parents(".ui-menu"))
3364            .hide()
3365            .attr("aria-hidden", "true"),
3366          e
3367            .show()
3368            .removeAttr("aria-hidden")
3369            .attr("aria-expanded", "true")
3370            .position(i);
3371      },
3372      collapseAll: function (e, i) {
3373        clearTimeout(this.timer),
3374          (this.timer = this._delay(function () {
3375            var s = i
3376              ? this.element
3377              : t(e && e.target).closest(this.element.find(".ui-menu"));
3378            s.length || (s = this.element),
3379              this._close(s),
3380              this.blur(e),
3381              this._removeClass(
3382                s.find(".ui-state-active"),
3383                null,
3384                "ui-state-active",
3385              ),
3386              (this.activeMenu = s);
3387          }, this.delay));
3388      },
3389      _close: function (t) {
3390        t || (t = this.active ? this.active.parent() : this.element),
3391          t
3392            .find(".ui-menu")
3393            .hide()
3394            .attr("aria-hidden", "true")
3395            .attr("aria-expanded", "false");
3396      },
3397      _closeOnDocumentClick: function (e) {
3398        return !t(e.target).closest(".ui-menu").length;
3399      },
3400      _isDivider: function (t) {
3401        return !/[^\-\u2014\u2013\s]/.test(t.text());
3402      },
3403      collapse: function (t) {
3404        var e =
3405          this.active &&
3406          this.active.parent().closest(".ui-menu-item", this.element);
3407        e && e.length && (this._close(), this.focus(t, e));
3408      },
3409      expand: function (t) {
3410        var e =
3411          this.active &&
3412          this.active.children(".ui-menu ").find(this.options.items).first();
3413        e &&
3414          e.length &&
3415          (this._open(e.parent()),
3416          this._delay(function () {
3417            this.focus(t, e);
3418          }));
3419      },
3420      next: function (t) {
3421        this._move("next", "first", t);
3422      },
3423      previous: function (t) {
3424        this._move("prev", "last", t);
3425      },
3426      isFirstItem: function () {
3427        return this.active && !this.active.prevAll(".ui-menu-item").length;
3428      },
3429      isLastItem: function () {
3430        return this.active && !this.active.nextAll(".ui-menu-item").length;
3431      },
3432      _move: function (t, e, i) {
3433        var s;
3434        this.active &&
3435          (s =
3436            "first" === t || "last" === t
3437              ? this.active["first" === t ? "prevAll" : "nextAll"](
3438                  ".ui-menu-item",
3439                ).eq(-1)
3440              : this.active[t + "All"](".ui-menu-item").eq(0)),
3441          (s && s.length && this.active) ||
3442            (s = this.activeMenu.find(this.options.items)[e]()),
3443          this.focus(i, s);
3444      },
3445      nextPage: function (e) {
3446        var i, s, n;
3447        return this.active
3448          ? (this.isLastItem() ||
3449              (this._hasScroll()
3450                ? ((s = this.active.offset().top),
3451                  (n = this.element.height()),
3452                  this.active.nextAll(".ui-menu-item").each(function () {
3453                    return (i = t(this)), 0 > i.offset().top - s - n;
3454                  }),
3455                  this.focus(e, i))
3456                : this.focus(
3457                    e,
3458                    this.activeMenu
3459                      .find(this.options.items)
3460                      [this.active ? "last" : "first"](),
3461                  )),
3462            void 0)
3463          : (this.next(e), void 0);
3464      },
3465      previousPage: function (e) {
3466        var i, s, n;
3467        return this.active
3468          ? (this.isFirstItem() ||
3469              (this._hasScroll()
3470                ? ((s = this.active.offset().top),
3471                  (n = this.element.height()),
3472                  this.active.prevAll(".ui-menu-item").each(function () {
3473                    return (i = t(this)), i.offset().top - s + n > 0;
3474                  }),
3475                  this.focus(e, i))
3476                : this.focus(
3477                    e,
3478                    this.activeMenu.find(this.options.items).first(),
3479                  )),
3480            void 0)
3481          : (this.next(e), void 0);
3482      },
3483      _hasScroll: function () {
3484        return this.element.outerHeight() < this.element.prop("scrollHeight");
3485      },
3486      select: function (e) {
3487        this.active = this.active || t(e.target).closest(".ui-menu-item");
3488        var i = { item: this.active };
3489        this.active.has(".ui-menu").length || this.collapseAll(e, !0),
3490          this._trigger("select", e, i);
3491      },
3492      _filterMenuItems: function (e) {
3493        var i = e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"),
3494          s = RegExp("^" + i, "i");
3495        return this.activeMenu
3496          .find(this.options.items)
3497          .filter(".ui-menu-item")
3498          .filter(function () {
3499            return s.test(
3500              t.trim(t(this).children(".ui-menu-item-wrapper").text()),
3501            );
3502          });
3503      },
3504    }),
3505    t.widget("ui.autocomplete", {
3506      version: "1.12.1",
3507      defaultElement: "<input>",
3508      options: {
3509        appendTo: null,
3510        autoFocus: !1,
3511        delay: 300,
3512        minLength: 1,
3513        position: { my: "left top", at: "left bottom", collision: "none" },
3514        source: null,
3515        change: null,
3516        close: null,
3517        focus: null,
3518        open: null,
3519        response: null,
3520        search: null,
3521        select: null,
3522      },
3523      requestIndex: 0,
3524      pending: 0,
3525      _create: function () {
3526        var e,
3527          i,
3528          s,
3529          n = this.element[0].no
3529deName.toLowerCase(),
3530          o = "textarea" === n,
3531          a = "input" === n;
3532        (this.isMultiLine = o || (!a && this._isContentEditable(this.element))),
3533          (this.valueMethod = this.element[o || a ? "val" : "text"]),
3534          (this.isNewMenu = !0),
3535          this._addClass("ui-autocomplete-input"),
3536          this.element.attr("autocomplete", "off"),
3537          this._on(this.element, {
3538            keydown: function (n) {
3539              if (this.element.prop("readOnly"))
3540                return (e = !0), (s = !0), (i = !0), void 0;
3541              (e = !1), (s = !1), (i = !1);
3542              var o = t.ui.keyCode;
3543              switch (n.keyCode) {
3544                case o.PAGE_UP:
3545                  (e = !0), this._move("previousPage", n);
3546                  break;
3547                case o.PAGE_DOWN:
3548                  (e = !0), this._move("nextPage", n);
3549                  break;
3550                case o.UP:
3551                  (e = !0), this._keyEvent("previous", n);
3552                  break;
3553                case o.DOWN:
3554                  (e = !0), this._keyEvent("next", n);
3555                  break;
3556                case o.ENTER:
3557                  this.menu.active &&
3558                    ((e = !0), n.preventDefault(), this.menu.select(n));
3559                  break;
3560                case o.TAB:
3561                  this.menu.active && this.menu.select(n);
3562                  break;
3563                case o.ESCAPE:
3564                  this.menu.element.is(":visible") &&
3565                    (this.isMultiLine || this._value(this.term),
3566                    this.close(n),
3567                    n.preventDefault());
3568                  break;
3569                default:
3570                  (i = !0), this._searchTimeout(n);
3571              }
3572            },
3573            keypress: function (s) {
3574              if (e)
3575                return (
3576                  (e = !1),
3577                  (!this.isMultiLine || this.menu.element.is(":visible")) &&
3578                    s.preventDefault(),
3579                  void 0
3580                );
3581              if (!i) {
3582                var n = t.ui.keyCode;
3583                switch (s.keyCode) {
3584                  case n.PAGE_UP:
3585                    this._move("previousPage", s);
3586                    break;
3587                  case n.PAGE_DOWN:
3588                    this._move("nextPage", s);
3589                    break;
3590                  case n.UP:
3591                    this._keyEvent("previous", s);
3592                    break;
3593                  case n.DOWN:
3594                    this._keyEvent("next", s);
3595                }
3596              }
3597            },
3598            input: function (t) {
3599              return s
3600                ? ((s = !1), t.preventDefault(), void 0)
3601                : (this._searchTimeout(t), void 0);
3602            },
3603            focus: function () {
3604              (this.selectedItem = null), (this.previous = this._value());
3605            },
3606            blur: function (t) {
3607              return this.cancelBlur
3608                ? (delete this.cancelBlur, void 0)
3609                : (clearTimeout(this.searching),
3610                  this.close(t),
3611                  this._change(t),
3612                  void 0);
3613            },
3614          }),
3615          this._initSource(),
3616          (this.menu = t("<ul>")
3617            .appendTo(this._appendTo())
3618            .menu({ role: null })
3619            .hide()
3620            .menu("instance")),
3621          this._addClass(this.menu.element, "ui-autocomplete", "ui-front"),
3622          this._on(this.menu.element, {
3623            mousedown: function (e) {
3624              e.preventDefault(),
3625                (this.cancelBlur = !0),
3626                this._delay(function () {
3627                  delete this.cancelBlur,
3628                    this.element[0] !==
3629                      t.ui.safeActiveElement(this.document[0]) &&
3630                      this.element.trigger("focus");
3631                });
3632            },
3633            menufocus: function (e, i) {
3634              var s, n;
3635              return this.isNewMenu &&
3636                ((this.isNewMenu = !1),
3637                e.originalEvent && /^mouse/.test(e.originalEvent.type))
3638                ? (this.menu.blur(),
3639                  this.document.one("mousemove", function () {
3640                    t(e.target).trigger(e.originalEvent);
3641                  }),
3642                  void 0)
3643                : ((n = i.item.data("ui-autocomplete-item")),
3644                  !1 !== this._trigger("focus", e, { item: n }) &&
3645                    e.originalEvent &&
3646                    /^key/.test(e.originalEvent.type) &&
3647                    this._value(n.value),
3648                  (s = i.item.attr("aria-label") || n.value),
3649                  s &&
3650                    t.trim(s).length &&
3651                    (this.liveRegion.children().hide(),
3652                    t("<div>").text(s).appendTo(this.liveRegion)),
3653                  void 0);
3654            },
3655            menuselect: function (e, i) {
3656              var s = i.item.data("ui-autocomplete-item"),
3657                n = this.previous;
3658              this.element[0] !== t.ui.safeActiveElement(this.document[0]) &&
3659                (this.element.trigger("focus"),
3660                (this.previous = n),
3661                this._delay(function () {
3662                  (this.previous = n), (this.selectedItem = s);
3663                })),
3664                !1 !== this._trigger("select", e, { item: s }) &&
3665                  this._value(s.value),
3666                (this.term = this._value()),
3667                this.close(e),
3668                (this.selectedItem = s);
3669            },
3670          }),
3671          (this.liveRegion = t("<div>", {
3672            role: "status",
3673            "aria-live": "assertive",
3674            "aria-relevant": "additions",
3675          }).appendTo(this.document[0].body)),
3676          this._addClass(this.liveRegion, null, "ui-helper-hidden-accessible"),
3677          this._on(this.window, {
3678            beforeunload: function () {
3679              this.element.removeAttr("autocomplete");
3680            },
3681          });
3682      },
3683      _destroy: function () {
3684        clearTimeout(this.searching),
3685          this.element.removeAttr("autocomplete"),
3686          this.menu.element.remove(),
3687          this.liveRegion.remove();
3688      },
3689      _setOption: function (t, e) {
3690        this._super(t, e),
3691          "source" === t && this._initSource(),
3692          "appendTo" === t && this.menu.element.appendTo(this._appendTo()),
3693          "disabled" === t && e && this.xhr && this.xhr.abort();
3694      },
3695      _isEventTargetInWidget: function (e) {
3696        var i = this.menu.element[0];
3697        return (
3698          e.target === this.element[0] ||
3699          e.target === i ||
3700          t.contains(i, e.target)
3701        );
3702      },
3703      _closeOnClickOutside: function (t) {
3704        this._isEventTargetInWidget(t) || this.close();
3705      },
3706      _appendTo: function () {
3707        var e = this.options.appendTo;
3708        return (
3709          e &&
3710            (e = e.jquery || e.nodeType ? t(e) : this.document.find(e).eq(0)),
3711          (e && e[0]) || (e = this.element.closest(".ui-front, dialog")),
3712          e.length || (e = this.document[0].body),
3713          e
3714        );
3715      },
3716      _initSource: function () {
3717        var e,
3718          i,
3719          s = this;
3720        t.isArray(this.options.source)
3721          ? ((e = this.options.source),
3722            (this.source = function (i, s) {
3723              s(t.ui.autocomplete.filter(e, i.term));
3724            }))
3725          : "string" == typeof this.options.source
3726            ? ((i = this.options.source),
3727              (this.source = function (e, n) {
3728                s.xhr && s.xhr.abort(),
3729                  (s.xhr = t.ajax({
3730                    url: i,
3731                    data: e,
3732                    dataType: "json",
3733                    success: function (t) {
3734                      n(t);
3735                    },
3736                    error: function () {
3737                      n([]);
3738                    },
3739                  }));
3740              }))
3741            : (this.source = this.options.source);
3742      },
3743      _searchTimeout: function (t) {
3744        clearTimeout(this.searching),
3745          (this.searching = this._delay(function () {
3746            var e = this.term === this._value(),
3747              i = this.menu.element.is(":visible"),
3748              s = t.altKey || t.ctrlKey || t.metaKey || t.shiftKey;
3749            (!e || (e && !i && !s)) &&
3750              ((this.selectedItem = null), this.search(null, t));
3751          }, this.options.delay));
3752      },
3753      search: function (t, e) {
3754        return (
3755          (t = null != t ? t : this._value()),
3756          (this.term = this._value()),
3757          t.length < this.options.minLength
3758            ? this.close(e)
3759            : this._trigger("search", e) !== !1
3760              ? this._search(t)
3761              : void 0
3762        );
3763      },
3764      _search: function (t) {
3765        this.pending++,
3766          this._addClass("ui-autocomplete-loading"),
3767          (this.cancelSearch = !1),
3768          this.source({ term: t }, this._response());
3769      },
3770      _response: function () {
3771        var e = ++this.requestIndex;
3772        return t.proxy(function (t) {
3773          e === this.requestIndex && this.__response(t),
3774            this.pending--,
3775            this.pending || this._removeClass("ui-autocomplete-loading");
3776        }, this);
3777      },
3778      __response: function (t) {
3779        t && (t = this._normalize(t)),
3780          this._trigger("response", null, { content: t }),
3781          !this.options.disabled && t && t.length && !this.cancelSearch
3782            ? (this._suggest(t), this._trigger("open"))
3783            : this._close();
3784      },
3785      close: function (t) {
3786        (this.cancelSearch = !0), this._close(t);
3787      },
3788      _close: function (t) {
3789        this._off(this.document, "mousedown"),
3790          this.menu.element.is(":visible") &&
3791            (this.menu.element.hide(),
3792            this.menu.blur(),
3793            (this.isNewMenu = !0),
3794            this._trigger("close", t));
3795      },
3796      _change: function (t) {
3797        this.previous !== this._value() &&
3798          this._trigger("change", t, { item: this.selectedItem });
3799      },
3800      _normalize: function (e) {
3801        return e.length && e[0].label && e[0].value
3802          ? e
3803          : t.map(e, function (e) {
3804              return "string" == typeof e
3805                ? { label: e, value: e }
3806                : t.extend({}, e, {
3807                    label: e.label || e.value,
3808                    value: e.value || e.label,
3809                  });
3810            });
3811      },
3812      _suggest: function (e) {
3813        var i = this.menu.element.empty();
3814        this._renderMenu(i, e),
3815          (this.isNewMenu = !0),
3816          this.menu.refresh(),
3817          i.show(),
3818          this._resizeMenu(),
3819          i.position(t.extend({ of: this.element }, this.options.position)),
3820          this.options.autoFocus && this.menu.next(),
3821          this._on(this.document, { mousedown: "_closeOnClickOutside" });
3822      },
3823      _resizeMenu: function () {
3824        var t = this.menu.element;
3825        t.outerWidth(
3826          Math.max(t.width("").outerWidth() + 1, this.element.outerWidth()),
3827        );
3828      },
3829      _renderMenu: function (e, i) {
3830        var s = this;
3831        t.each(i, function (t, i) {
3832          s._renderItemData(e, i);
3833        });
3834      },
3835      _renderItemData: function (t, e) {
3836        return this._renderItem(t, e).data("ui-autocomplete-item", e);
3837      },
3838      _renderItem: function (e, i) {
3839        return t("<li>").append(t("<div>").text(i.label)).appendTo(e);
3840      },
3841      _move: function (t, e) {
3842        return this.menu.element.is(":visible")
3843          ? (this.menu.isFirstItem() && /^previous/.test(t)) ||
3844            (this.menu.isLastItem() && /^next/.test(t))
3845            ? (this.isMultiLine || this._value(this.term),
3846              this.menu.blur(),
3847              void 0)
3848            : (this.menu[t](e), void 0)
3849          : (this.search(null, e), void 0);
3850      },
3851      widget: function () {
3852        return this.menu.element;
3853      },
3854      _value: function () {
3855        return this.valueMethod.apply(this.element, arguments);
3856      },
3857      _keyEvent: function (t, e) {
3858        (!this.isMultiLine || this.menu.element.is(":visible")) &&
3859          (this._move(t, e), e.preventDefault());
3860      },
3861      _isContentEditable: function (t) {
3862        if (!t.length) return !1;
3863        var e = t.prop("contentEditable");
3864        return "inherit" === e
3865          ? this._isContentEditable(t.parent())
3866          : "true" === e;
3867      },
3868    }),
3869    t.extend(t.ui.autocomplete, {
3870      escapeRegex: function (t) {
3871        return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
3872      },
3873      filter: function (e, i) {
3874        var s = RegExp(t.ui.autocomplete.escapeRegex(i), "i");
3875        return t.grep(e, function (t) {
3876          return s.test(t.label || t.value || t);
3877        });
3878      },
3879    }),
3880    t.widget("ui.autocomplete", t.ui.autocomplete, {
3881      options: {
3882        messages: {
3883          noResults: "No search results.",
3884          results: function (t) {
3885            return (
3886              t +
3887              (t > 1 ? " results are" : " result is") +
3888              " available, use up and down arrow keys to navigate."
3889            );
3890          },
3891        },
3892      },
3893      __response: function (e) {
3894        var i;
3895        this._superApply(arguments),
3896          this.options.disabled ||
3897            this.cancelSearch ||
3898            ((i =
3899              e && e.length
3900                ? this.options.messages.results(e.length)
3901                : this.options.messages.noResults),
3902            this.liveRegion.children().hide(),
3903            t("<div>").text(i).appendTo(this.liveRegion));
3904      },
3905    }),
3906    t.ui.autocomplete;
3907  var g = /ui-corner-([a-z]){2,6}/g;
3908  t.widget("ui.controlgroup", {
3909    version: "1.12.1",
3910    defaultElement: "<div>",
3911    options: {
3912      direction: "horizontal",
3913      disabled: null,
3914      onlyVisible: !0,
3915      items: {
3916        button:
3917          "input[type=button], input[type=submit], input[type=reset], button, a",
3918        controlgroupLabel: ".ui-controlgroup-label",
3919        checkboxradio: "input[type='checkbox'], input[type='radio']",
3920        selectmenu: "select",
3921        spinner: ".ui-spinner-input",
3922      },
3923    },
3924    _create: function () {
3925      this._enhance();
3926    },
3927    _enhance: function () {
3928      this.element.attr("role", "toolbar"), this.refresh();
3929    },
3930    _destroy: function () {
3931      this._callChildMethod("destroy"),
3932        this.childWidgets.removeData("ui-controlgroup-data"),
3933        this.element.removeAttr("role"),
3934        this.options.items.controlgroupLabel &&
3935          this.element
3936            .find(this.options.items.controlgroupLabel)
3937            .find(".ui-controlgroup-label-contents")
3938            .contents()
3939            .unwrap();
3940    },
3941    _initWidgets: function () {
3942      var e = this,
3943        i = [];
3944      t.each(this.options.items, function (s, n) {
3945        var o,
3946          a = {};
3947        return n
3948          ? "controlgroupLabel" === s
3949            ? ((o = e.element.find(n)),
3950              o.each(function () {
3951                var e = t(this);
3952                e.children(".ui-controlgroup-label-contents").length ||
3953                  e
3954                    .contents()
3955                    .wrapAll(
3956                      "<span class='ui-controlgroup-label-contents'></span>",
3957                    );
3958              }),
3959              e._addClass(
3960                o,
3961                null,
3962                "ui-widget ui-widget-content ui-state-default",
3963              ),
3964              (i = i.concat(o.get())),
3965              void 0)
3966            : (t.fn[s] &&
3967                ((a = e["_" + s + "Options"]
3968                  ? e["_" + s + "Options"]("middle")
3969                  : { classes: {} }),
3970                e.element.find(n).each(function () {
3971                  var n = t(this),
3972                    o = n[s]("instance"),
3973                    r = t.widget.extend({}, a);
3974                  if ("button" !== s || !n.parent(".ui-spinner").length) {
3975                    o || (o = n[s]()[s]("instance")),
3976                      o && (r.classes = e._resolveClassesValues(r.classes, o)),
3977                      n[s](r);
3978                    var h = n[s]("widget");
3979                    t.data(
3980                      h[0],
3981                      "ui-controlgroup-data",
3982                      o ? o : n[s]("instance"),
3983                    ),
3984                      i.push(h[0]);
3985                  }
3986                })),
3987              void 0)
3988          : void 0;
3989      }),
3990        (this.childWidgets = t(t.unique(i))),
3991        this._addClass(this.childWidgets, "ui-controlgroup-item");
3992    },
3993    _callChildMethod: function (e) {
3994      this.childWidgets.each(function () {
3995        var i = t(this),
3996          s = i.data("ui-controlgroup-data");
3997        s && s[e] && s[e]();
3998      });
3999    },
4000    _updateCornerClass: function (t, e) {
4001      var i =
4002          "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",
4003        s = this._buildSimpleOptions(e, "label").classes.label;
4004      this._removeClass(t, null, i), this._addClass(t, null, s);
4005    },
4006    _buildSimpleOptions: function (t, e) {
4007      var i = "vertical" === this.options.direction,
4008        s = { classes: {} };
4009      return (
4010        (s.classes[e] = {
4011          middle: "",
4012          first: "ui-corner-" + (i ? "top" : "left"),
4013          last: "ui-corner-" + (i ? "bottom" : "right"),
4014          only: "ui-corner-all",
4015        }[t]),
4016        s
4017      );
4018    },
4019    _spinnerOptions: function (t) {
4020      var e = this._buildSimpleOptions(t, "ui-spinner");
4021      return (
4022        (e.classes["ui-spinner-up"] = ""),
4023        (e.classes["ui-spinner-down"] = ""),
4024        e
4025      );
4026    },
4027    _buttonOptions: function (t) {
4028      return this._buildSimpleOptions(t, "ui-button");
4029    },
4030    _checkboxradioOptions: function (t) {
4031      return this._buildSimpleOptions(t, "ui-checkboxradio-label");
4032    },
4033    _selectmenuOptions: function (t) {
4034      var e = "vertical" === this.options.direction;
4035      return {
4036        width: e ? "auto" : !1,
4037        classes: {
4038          middle: {
4039            "ui-selectmenu-button-open": "",
4040            "ui-selectmenu-button-closed": "",
4041          },
4042          first: {
4043            "ui-selectmenu-button-open": "ui-corner-" + (e ? "top" : "tl"),
4044            "ui-selectmenu-button-closed": "ui-corner-" + (e ? "top" : "left"),
4045          },
4046          last: {
4047            "ui-selectmenu-button-open": e ? "" : "ui-corner-tr",
4048            "ui-selectmenu-button-closed":
4049              "ui-corner-" + (e ? "bottom" : "right"),
4050          },
4051          only: {
4052            "ui-selectmenu-button-open": "ui-corner-top",
4053            "ui-selectmenu-button-closed": "ui-corner-all",
4054          },
4055        }[t],
4056      };
4057    },
4058    _resolveClassesValues: function (e, i) {
4059      var s = {};
4060      return (
4061        t.each(e, function (n) {
4062          var o = i.options.classes[n] || "";
4063          (o = t.trim(o.replace(g, ""))),
4064            (s[n] = (o + " " + e[n]).replace(/\s+/g, " "));
4065        }),
4066        s
4067      );
4068    },
4069    _setOption: function (t, e) {
4070      return (
4071        "direction" === t &&
4072          this._removeClass("ui-controlgroup-" + this.options.direction),
4073        this._super(t, e),
4074        "disabled" === t
4075          ? (this._callChildMethod(e ? "disable" : "enable"), void 0)
4076          : (this.refresh(), void 0)
4077      );
4078    },
4079    refresh: function () {
4080      var e,
4081        i = this;
4082      this._addClass(
4083        "ui-controlgroup ui-controlgroup-" + this.options.direction,
4084      ),
4085        "horizontal" === this.options.direction &&
4086          this._addClass(null, "ui-helper-clearfix"),
4087        this._initWidgets(),
4088        (e = this.childWidgets),
4089        this.options.onlyVisible && (e = e.filter(":visible")),
4090        e.length &&
4091          (t.each(["first", "last"], function (t, s) {
4092            var n = e[s]().data("ui-controlgroup-data");
4093            if (n && i["_" + n.widgetName + "Options"]) {
4094              var o = i["_" + n.widgetName + "Options"](
4095                1 === e.length ? "only" : s,
4096              );
4097              (o.classes = i._resolveClassesValues(o.classes, n)),
4098                n.element[n.widgetName](o);
4099            } else i._updateCornerClass(e[s](), s);
4100          }),
4101          this._callChildMethod("refresh"));
4102    },
4103  }),
4104    t.widget("ui.checkboxradio", [
4105      t.ui.formResetMixin,
4106      {
4107        version: "1.12.1",
4108        options: {
4109          disabled: null,
4110          label: null,
4111          icon: !0,
4112          classes: {
4113            "ui-checkboxradio-label": "ui-corner-all",
4114            "ui-checkboxradio-icon": "ui-corner-all",
4115          },
4116        },
4117        _getCreateOptions: function () {
4118          var e,
4119            i,
4120            s = this,
4121            n = this._super() || {};
4122          return (
4123            this._readType(),
4124            (i = this.element.labels()),
4125            (this.label = t(i[i.length - 1])),
4126            this.label.length ||
4127              t.error("No label found for checkboxradio widget"),
4128            (this.originalLabel = ""),
4129            this.label
4130              .contents()
4131              .not(this.element[0])
4132              .each(function () {
4133                s.originalLabel +=
4134                  3 === this.nodeType ? t(this).text() : this.outerHTML;
4135              }),
4136            this.originalLabel && (n.label = this.originalLabel),
4137            (e = this.element[0].disabled),
4138            null != e && (n.disabled = e),
4139            n
4140          );
4141        },
4142        _create: function () {
4143          var t = this.element[0].checked;
4144          this._bindFormResetHandler(),
4145            null == this.options.disabled &&
4146              (this.options.disabled = this.element[0].disabled),
4147            this._setOption("disabled", this.options.disabled),
4148            this._addClass("ui-checkboxradio", "ui-helper-hidden-accessible"),
4149            this._addClass(
4150              this.label,
4151              "ui-checkboxradio-label",
4152              "ui-button ui-widget",
4153            ),
4154            "radio" === this.type &&
4155              this._addClass(this.label, "ui-checkboxradio-radio-label"),
4156            this.options.label && this.options.label !== this.originalLabel
4157              ? this._updateLabel()
4158              : this.originalLabel && (this.options.label = this.originalLabel),
4159            this._enhance(),
4160            t &&
4161              (this._addClass(
4162                this.label,
4163                "ui-checkboxradio-checked",
4164                "ui-state-active",
4165              ),
4166              this.icon && this._addClass(this.icon, null, "ui-state-hover")),
4167            this._on({
4168              change: "_toggleClasses",
4169              focus: function () {
4170                this._addClass(
4171                  this.label,
4172                  null,
4173                  "ui-state-focus ui-visual-focus",
4174                );
4175              },
4176              blur: function () {
4177                this._removeClass(
4178                  this.label,
4179                  null,
4180                  "ui-state-focus ui-visual-focus",
4181                );
4182              },
4183            });
4184        },
4185        _readType: function () {
4186          var e = this.element[0].nodeName.toLowerCase();
4187          (this.type = this.element[0].type),
4188            ("input" === e && /radio|checkbox/.test(this.type)) ||
4189              t.error(
4190                "Can't create checkboxradio on element.nodeName=" +
4191                  e +
4192                  " and element.type=" +
4193                  this.type,
4194              );
4195        },
4196        _enhance: function () {
4197          this._updateIcon(this.element[0].checked);
4198        },
4199        widget: function () {
4200          return this.label;
4201        },
4202        _getRadioGroup: function () {
4203          var e,
4204            i = this.element[0].name,
4205            s = "input[name='" + t.ui.escapeSelector(i) + "']";
4206          return i
4207            ? ((e = this.form.length
4208                ? t(this.form[0].elements).filter(s)
4209                : t(s).filter(function () {
4210                    return 0 === t(this).form().length;
4211                  })),
4212              e.not(this.element))
4213            : t([]);
4214        },
4215        _toggleClasses: function () {
4216          var e = this.element[0].checked;
4217          this._toggleClass(
4218            this.label,
4219            "ui-checkboxradio-checked",
4220            "ui-state-active",
4221            e,
4222          ),
4223            this.options.icon &&
4224              "checkbox" === this.type &&
4225              this._toggleClass(
4226                this.icon,
4227                null,
4228                "ui-icon-check ui-state-checked",
4229                e,
4230              )._toggleClass(this.icon, null, "ui-icon-blank", !e),
4231            "radio" === this.type &&
4232              this._getRadioGroup().each(function () {
4233                var e = t(this).checkboxradio("instance");
4234                e &&
4235                  e._removeClass(
4236                    e.label,
4237                    "ui-checkboxradio-checked",
4238                    "ui-state-active",
4239                  );
4240              });
4241        },
4242        _destroy: function () {
4243          this._unbindFormResetHandler(),
4244            this.icon && (this.icon.remove(), this.iconSpace.remove());
4245        },
4246        _setOption: function (t, e) {
4247          return "label" !== t || e
4248            ? (this._super(t, e),
4249              "disabled" === t
4250                ? (this._toggleClass(this.label, null, "ui-state-disabled", e),
4251                  (this.element[0].disabled = e),
4252                  void 0)
4253                : (this.refresh(), void 0))
4254            : void 0;
4255        },
4256        _updateIcon: function (e) {
4257          var i = "ui-icon ui-icon-background ";
4258          this.options.icon
4259            ? (this.icon ||
4260                ((this.icon = t("<span>")),
4261                (this.iconSpace = t("<span> </span>")),
4262                this._addClass(this.iconSpace, "ui-checkboxradio-icon-space")),
4263              "checkbox" === this.type
4264                ? ((i += e
4265                    ? "ui-icon-check ui-state-checked"
4266                    : "ui-icon-blank"),
4267                  this._removeClass(
4268                    this.icon,
4269                    null,
4270                    e ? "ui-icon-blank" : "ui-icon-check",
4271                  ))
4272                : (i += "ui-icon-blank"),
4273              this._addClass(this.icon, "ui-checkboxradio-icon", i),
4274              e ||
4275                this._removeClass(
4276                  this.icon,
4277                  null,
4278                  "ui-icon-check ui-state-checked",
4279                ),
4280              this.icon.prependTo(this.label).after(this.iconSpace))
4281            : void 0 !== this.icon &&
4282              (this.icon.remove(), this.iconSpace.remove(), delete this.icon);
4283        },
4284        _updateLabel: function () {
4285          var t = this.label.contents().not(this.element[0]);
4286          this.icon && (t = t.not(this.icon[0])),
4287            this.iconSpace && (t = t.not(this.iconSpace[0])),
4288            t.remove(),
4289            this.label.append(this.options.label);
4290        },
4291        refresh: function () {
4292          var t = this.element[0].checked,
4293            e = this.element[0].disabled;
4294          this._updateIcon(t),
4295            this._toggleClass(
4296              this.label,
4297              "ui-checkboxradio-checked",
4298              "ui-state-active",
4299              t,
4300            ),
4301            null !== this.options.label && this._updateLabel(),
4302            e !== this.options.disabled && this._setOptions({ disabled: e });
4303        },
4304      },
4305    ]),
4306    t.ui.checkboxradio,
4307    t.widget("ui.button", {
4308      version: "1.12.1",
4309      defaultElement: "<button>",
4310      options: {
4311        classes: { "ui-button": "ui-corner-all" },
4312        disabled: null,
4313        icon: null,
4314        iconPosition: "beginning",
4315        label: null,
4316        showLabel: !0,
4317      },
4318      _getCreateOptions: function () {
4319        var t,
4320          e = this._super() || {};
4321        return (
4322          (this.isInput = this.element.is("input")),
4323          (t = this.element[0].disabled),
4324          null != t && (e.disabled = t),
4325          (this.originalLabel = this.isInput
4326            ? this.element.val()
4327            : this.element.html()),
4328          this.originalLabel && (e.label = this.originalLabel),
4329          e
4330        );
4331      },
4332      _create: function () {
4333        !this.option.showLabel & !this.options.icon &&
4334          (this.options.showLabel = !0),
4335          null == this.options.disabled &&
4336            (this.options.disabled = this.element[0].disabled || !1),
4337          (this.hasTitle = !!this.element.attr("title")),
4338          this.options.label &&
4339            this.options.label !== this.originalLabel &&
4340            (this.isInput
4341              ? this.element.val(this.options.label)
4342              : this.element.html(this.options.label)),
4343          this._addClass("ui-button", "ui-widget"),
4344          this._setOption("disabled", this.options.disabled),
4345          this._enhance(),
4346          this.element.is("a") &&
4347            this._on({
4348              keyup: function (e) {
4349                e.keyCode === t.ui.keyCode.SPACE &&
4350                  (e.preventDefault(),
4351                  this.element[0].click
4352                    ? this.element[0].click()
4353                    : this.element.trigger("click"));
4354              },
4355            });
4356      },
4357      _enhance: function () {
4358        this.element.is("button") || this.element.attr("role", "button"),
4359          this.options.icon &&
4360            (this._updateIcon("icon", this.options.icon),
4361            this._updateTooltip());
4362      },
4363      _updateTooltip: function () {
4364        (this.title = this.element.attr("title")),
4365          this.options.showLabel ||
4366            this.title ||
4367            this.element.attr("title", this.options.label);
4368      },
4369      _updateIcon: function (e, i) {
4370        var s = "iconPosition" !== e,
4371          n = s ? this.options.iconPosition : i,
4372          o = "top" === n || "bottom" === n;
4373        this.icon
4374          ? s && this._removeClass(this.icon, null, this.options.icon)
4375          : ((this.icon = t("<span>")),
4376            this._addClass(this.icon, "ui-button-icon", "ui-icon"),
4377            this.options.showLabel || this._addClass("ui-button-icon-only")),
4378          s && this._addClass(this.icon, null, i),
4379          this._attachIcon(n),
4380          o
4381            ? (this._addClass(this.icon, null, "ui-widget-icon-block"),
4382              this.iconSpace && this.iconSpace.remove())
4383            : (this.iconSpace ||
4384                ((this.iconSpace = t("<span> </span>")),
4385                this._addClass(this.iconSpace, "ui-button-icon-space")),
4386              this._removeClass(this.icon, null, "ui-wiget-icon-block"),
4387              this._attachIconSpace(n));
4388      },
4389      _destroy: function () {
4390        this.element.removeAttr("role"),
4391          this.icon && this.icon.remove(),
4392          this.iconSpace && this.iconSpace.remove(),
4393          this.hasTitle || this.element.removeAttr("title");
4394      },
4395      _attachIconSpace: function (t) {
4396        this.icon[/^(?:end|bottom)/.test(t) ? "before" : "after"](
4397          this.iconSpace,
4398        );
4399      },
4400      _attachIcon: function (t) {
4401        this.element[/^(?:end|bottom)/.test(t) ? "append" : "prepend"](
4402          this.icon,
4403        );
4404      },
4405      _setOptions: function (t) {
4406        var e = void 0 === t.showLabel ? this.options.showLabel : t.showLabel,
4407          i = void 0 === t.icon ? this.options.icon : t.icon;
4408        e || i || (t.showLabel = !0), this._super(t);
4409      },
4410      _setOption: function (t, e) {
4411        "icon" === t &&
4412          (e
4413            ? this._updateIcon(t, e)
4414            : this.icon &&
4415              (this.icon.remove(), this.iconSpace && this.iconSpace.remove())),
4416          "iconPosition" === t && this._updateIcon(t, e),
4417          "showLabel" === t &&
4418            (this._toggleClass("ui-button-icon-only", null, !e),
4419            this._updateTooltip()),
4420          "label" === t &&
4421            (this.isInput
4422              ? this.element.val(e)
4423              : (this.element.html(e),
4424                this.icon &&
4425                  (this._attachIcon(this.options.iconPosition),
4426                  this._attachIconSpace(this.options.iconPosition)))),
4427          this._super(t, e),
4428          "disabled" === t &&
4429            (this._toggleClass(null, "ui-state-disabled", e),
4430            (this.element[0].disabled = e),
4431            e && this.element.blur());
4432      },
4433      refresh: function () {
4434        var t = this.element.is("input, button")
4435          ? this.element[0].disabled
4436          : this.element.hasClass("ui-button-disabled");
4437        t !== this.options.disabled && this._setOptions({ disabled: t }),
4438          this._updateTooltip();
4439      },
4440    }),
4441    t.uiBackCompat !== !1 &&
4442      (t.widget("ui.button", t.ui.button, {
4443        options: { text: !0, icons: { primary: null, secondary: null } },
4444        _create: function () {
4445          this.options.showLabel &&
4446            !this.options.text &&
4447            (this.options.showLabel = this.options.text),
4448            !this.options.showLabel &&
4449              this.options.text &&
4450              (this.options.text = this.options.showLabel),
4451            this.options.icon ||
4452            (!this.options.icons.primary && !this.options.icons.secondary)
4453              ? this.options.icon &&
4454                (this.options.icons.primary = this.options.icon)
4455              : this.options.icons.primary
4456                ? (this.options.icon = this.options.icons.primary)
4457                : ((this.options.icon = this.options.icons.secondary),
4458                  (this.options.iconPosition = "end")),
4459            this._super();
4460        },
4461        _setOption: function (t, e) {
4462          return "text" === t
4463            ? (this._super("showLabel", e), void 0)
4464            : ("showLabel" === t && (this.options.text = e),
4465              "icon" === t && (this.options.icons.primary = e),
4466              "icons" === t &&
4467                (e.primary
4468                  ? (this._super("icon", e.primary),
4469                    this._super("iconPosition", "beginning"))
4470                  : e.secondary &&
4471                    (this._super("icon", e.secondary),
4472                    this._super("iconPosition", "end"))),
4473              this._superApply(arguments),
4474              void 0);
4475        },
4476      }),
4477      (t.fn.button = (function (e) {
4478        return function () {
4479          return !this.length ||
4480            (this.length && "INPUT" !== this[0].tagName) ||
4481            (this.length &&
4482              "INPUT" === this[0].tagName &&
4483              "checkbox" !== this.attr("type") &&
4484              "radio" !== this.attr("type"))
4485            ? e.apply(this, arguments)
4486            : (t.ui.checkboxradio || t.error("Checkboxradio widget missing"),
4487              0 === arguments.length
4488                ? this.checkboxradio({ icon: !1 })
4489                : this.checkboxradio.apply(this, arguments));
4490        };
4491      })(t.fn.button)),
4492      (t.fn.buttonset = function () {
4493        return (
4494          t.ui.controlgroup || t.error("Controlgroup widget missing"),
4495          "option" === arguments[0] && "items" === arguments[1] && arguments[2]
4496            ? this.controlgroup.apply(this, [
4497                arguments[0],
4498                "items.button",
4499                arguments[2],
4500              ])
4501            : "option" === arguments[0] && "items" === arguments[1]
4502              ? this.controlgroup.apply(this, [arguments[0], "items.button"])
4503              : ("object" == typeof arguments[0] &&
4504                  arguments[0].items &&
4505                  (arguments[0].items = { button: arguments[0].items }),
4506                this.controlgroup.apply(this, arguments))
4507        );
4508      })),
4509    t.ui.button,
4510    t.extend(t.ui, { datepicker: { version: "1.12.1" } });
4511  var m;
4512  t.extend(s.prototype, {
4513    markerClassName: "hasDatepicker",
4514    maxRows: 4,
4515    _widgetDatepicker: function () {
4516      return this.dpDiv;
4517    },
4518    setDefaults: function (t) {
4519      return a(this._defaults, t || {}), this;
4520    },
4521    _attachDatepicker: function (e, i) {
4522      var s, n, o;
4523      (s = e.nodeName.toLowerCase()),
4524        (n = "div" === s || "span" === s),
4525        e.id || ((this.uuid += 1), (e.id = "dp" + this.uuid)),
4526        (o = this._newInst(t(e), n)),
4527        (o.settings = t.extend({}, i || {})),
4528        "input" === s
4529          ? this._connectDatepicker(e, o)
4530          : n && this._inlineDatepicker(e, o);
4531    },
4532    _newInst: function (e, i) {
4533      var s = e[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1");
4534      return {
4535        id: s,
4536        input: e,
4537        selectedDay: 0,
4538        selectedMonth: 0,
4539        selectedYear: 0,
4540        drawMonth: 0,
4541        drawYear: 0,
4542        inline: i,
4543        dpDiv: i
4544          ? n(
4545              t(
4546                "<div class='" +
4547                  this._inlineClass +
4548                  " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>",
4549              ),
4550            )
4551          : this.dpDiv,
4552      };
4553    },
4554    _connectDatepicker: function (e, i) {
4555      var s = t(e);
4556      (i.append = t([])),
4557        (i.trigger = t([])),
4558        s.hasClass(this.markerClassName) ||
4559          (this._attachments(s, i),
4560          s
4561            .addClass(this.markerClassName)
4562            .on("keydown", this._doKeyDown)
4563            .on("keypress", this._doKeyPress)
4564            .on("keyup", this._doKeyUp),
4565          this._autoSize(i),
4566          t.data(e, "datepicker", i),
4567          i.settings.disabled && this._disableDatepicker(e));
4568    },
4569    _attachments: function (e, i) {
4570      var s,
4571        n,
4572        o,
4573        a = this._get(i, "appendText"),
4574        r = this._get(i, "isRTL");
4575      i.append && i.append.remove(),
4576        a &&
4577          ((i.append = t(
4578            "<span class='" + this._appendClass + "'>" + a + "</span>",
4579          )),
4580          e[r ? "before" : "after"](i.append)),
4581        e.off("focus", this._showDatepicker),
4582        i.trigger && i.trigger.remove(),
4583        (s = this._get(i, "showOn")),
4584        ("focus" === s || "both" === s) && e.on("focus", this._showDatepicker),
4585        ("button" === s || "both" === s) &&
4586          ((n = this._get(i, "buttonText")),
4587          (o = this._get(i, "buttonImage")),
4588          (i.trigger = t(
4589            this._get(i, "buttonImageOnly")
4590              ? t("<img/>")
4591                  .addClass(this._triggerClass)
4592                  .attr({ src: o, alt: n, title: n })
4593              : t("<button type='button'></button>")
4594                  .addClass(this._triggerClass)
4595                  .html(o ? t("<img/>").attr({ src: o, alt: n, title: n }) : n),
4596          )),
4597          e[r ? "before" : "after"](i.trigger),
4598          i.trigger.on("click", function () {
4599            return (
4600              t.datepicker._datepickerShowing &&
4601              t.datepicker._lastInput === e[0]
4602                ? t.datepicker._hideDatepicker()
4603                : t.datepicker._datepickerShowing &&
4604                    t.datepicker._lastInput !== e[0]
4605                  ? (t.datepicker._hideDatepicker(),
4606                    t.datepicker._showDatepicker(e[0]))
4607                  : t.datepicker._showDatepicker(e[0]),
4608              !1
4609            );
4610          }));
4611    },
4612    _autoSize: function (t) {
4613      if (this._get(t, "autoSize") && !t.inline) {
4614        var e,
4615          i,
4616          s,
4617          n,
4618          o = new Date(2009, 11, 20),
4619          a = this._get(t, "dateFormat");
4620        a.match(/[DM]/) &&
4621          ((e = function (t) {
4622            for (i = 0, s = 0, n = 0; t.length > n; n++)
4623              t[n].length > i && ((i = t[n].length), (s = n));
4624            return s;
4625          }),
4626          o.setMonth(
4627            e(this._get(t, a.match(/MM/) ? "monthNames" : "monthNamesShort")),
4628          ),
4629          o.setDate(
4630            e(this._get(t, a.match(/DD/) ? "dayNames" : "dayNamesShort")) +
4631              20 -
4632              o.getDay(),
4633          )),
4634          t.input.attr("size", this._formatDate(t, o).length);
4635      }
4636    },
4637    _inlineDatepicker: function (e, i) {
4638      var s = t(e);
4639      s.hasClass(this.markerClassName) ||
4640        (s.addClass(this.markerClassName).append(i.dpDiv),
4641        t.data(e, "datepicker", i),
4642        this._setDate(i, this._getDefaultDate(i), !0),
4643        this._updateDatepicker(i),
4644        this._updateAlternate(i),
4645        i.settings.disabled && this._disableDatepicker(e),
4646        i.dpDiv.css("display", "block"));
4647    },
4648    _dialogDatepicker: function (e, i, s, n, o) {
4649      var r,
4650        h,
4651        l,
4652        c,
4653        u,
4654        d = this._dialogInst;
4655      return (
4656        d ||
4657          ((this.uuid += 1),
4658          (r = "dp" + this.uuid),
4659          (this._dialogInput = t(
4660            "<input type='text' id='" +
4661              r +
4662              "' style='position: absolute; top: -100px; width: 0px;'/>",
4663          )),
4664          this._dialogInput.on("keydown", this._doKeyDown),
4665          t("body").append(this._dialogInput),
4666          (d = this._dialogInst = this._newInst(this._dialogInput, !1)),
4667          (d.settings = {}),
4668          t.data(this._dialogInput[0], "datepicker", d)),
4669        a(d.settings, n || {}),
4670        (i = i && i.constructor === Date ? this._formatDate(d, i) : i),
4671        this._dialogInput.val(i),
4672        (this._pos = o ? (o.length ? o : [o.pageX, o.pageY]) : null),
4673        this._pos ||
4674          ((h = document.documentElement.clientWidth),
4675          (l = document.documentElement.clientHeight),
4676          (c = document.documentElement.scrollLeft || document.body.scrollLeft),
4677          (u = document.documentElement.scrollTop || document.body.scrollTop),
4678          (this._pos = [h / 2 - 100 + c, l / 2 - 150 + u])),
4679        this._dialogInput
4680          .css("left", this._pos[0] + 20 + "px")
4681          .css("top", this._pos[1] + "px"),
4682        (d.settings.onSelect = s),
4683        (this._inDialog = !0),
4684        this.dpDiv.addClass(this._dialogClass),
4685        this._showDatepicker(this._dialogInput[0]),
4686        t.blockUI && t.blockUI(this.dpDiv),
4687        t.data(this._dialogInput[0], "datepicker", d),
4688        this
4689      );
4690    },
4691    _destroyDatepicker: function (e) {
4692      var i,
4693        s = t(e),
4694        n = t.data(e, "datepicker");
4695      s.hasClass(this.markerClassName) &&
4696        ((i = e.nodeName.toLowerCase()),
4697        t.removeData(e, "datepicker"),
4698        "input" === i
4699          ? (n.append.remove(),
4700            n.trigger.remove(),
4701            s
4702              .removeClass(this.markerClassName)
4703              .off("focus", this._showDatepicker)
4704              .off("keydown", this._doKeyDown)
4705              .off("keypress", this._doKeyPress)
4706              .off("keyup", this._doKeyUp))
4707          : ("div" === i || "span" === i) &&
4708            s.removeClass(this.markerClassName).empty(),
4709        m === n && (m = null));
4710    },
4711    _enableDatepicker: function (e) {
4712      var i,
4713        s,
4714        n = t(e),
4715        o = t.data(e, "datepicker");
4716      n.hasClass(this.markerClassName) &&
4717        ((i = e.nodeName.toLowerCase()),
4718        "input" === i
4719          ? ((e.disabled = !1),
4720            o.trigger
4721              .filter("button")
4722              .each(function () {
4723                this.disabled = !1;
4724              })
4725              .end()
4726              .filter("img")
4727              .css({ opacity: "1.0", cursor: "" }))
4728          : ("div" === i || "span" === i) &&
4729            ((s = n.children("." + this._inlineClass)),
4730            s.children().removeClass("ui-state-disabled"),
4731            s
4732              .find("select.ui-datepicker-month, select.ui-datepicker-year")
4733              .prop("disabled", !1)),
4734        (this._disabledInputs = t.map(this._disabledInputs, function (t) {
4735          return t === e ? null : t;
4736        })));
4737    },
4738    _disableDatepicker: function (e) {
4739      var i,
4740        s,
4741        n = t(e),
4742        o = t.data(e, "datepicker");
4743      n.hasClass(this.markerClassName) &&
4744        ((i = e.nodeName.toLowerCase()),
4745        "input" === i
4746          ? ((e.disabled = !0),
4747            o.trigger
4748              .filter("button")
4749              .each(function () {
4750                this.disabled = !0;
4751              })
4752              .end()
4753              .filter("img")
4754              .css({ opacity: "0.5", cursor: "default" }))
4755          : ("div" === i || "span" === i) &&
4756            ((s = n.children("." + this._inlineClass)),
4757            s.children().addClass("ui-state-disabled"),
4758            s
4759              .find("select.ui-datepicker-month, select.ui-datepicker-year")
4760              .prop("disabled", !0)),
4761        (this._disabledInputs = t.map(this._disabledInputs, function (t) {
4762          return t === e ? null : t;
4763        })),
4764        (this._disabledInputs[this._disabledInputs.length] = e));
4765    },
4766    _isDisabledDatepicker: function (t) {
4767      if (!t) return !1;
4768      for (var e = 0; this._disabledInputs.length > e; e++)
4769        if (this._disabledInputs[e] === t) return !0;
4770      return !1;
4771    },
4772    _getInst: function (e) {
4773      try {
4774        return t.data(e, "datepicker");
4775      } catch (i) {
4776        throw "Missing instance data for this datepicker";
4777      }
4778    },
4779    _optionDatepicker: function (e, i, s) {
4780      var n,
4781        o,
4782        r,
4783        h,
4784        l = this._getInst(e);
4785      return 2 === arguments.length && "string" == typeof i
4786        ? "defaults" === i
4787          ? t.extend({}, t.datepicker._defaults)
4788          : l
4789            ? "all" === i
4790              ? t.extend({}, l.settings)
4791              : this._get(l, i)
4792            : null
4793        : ((n = i || {}),
4794          "string" == typeof i && ((n = {}), (n[i] = s)),
4795          l &&
4796            (this._curInst === l && this._hideDatepicker(),
4797            (o = this._getDateDatepicker(e, !0)),
4798            (r = this._getMinMaxDate(l, "min")),
4799            (h = this._getMinMaxDate(l, "max")),
4800            a(l.settings, n),
4801            null !== r &&
4802              void 0 !== n.dateFormat &&
4803              void 0 === n.minDate &&
4804              (l.settings.minDate = this._formatDate(l, r)),
4805            null !== h &&
4806              void 0 !== n.dateFormat &&
4807              void 0 === n.maxDate &&
4808              (l.settings.maxDate = this._formatDate(l, h)),
4809            "disabled" in n &&
4810              (n.disabled
4811                ? this._disableDatepicker(e)
4812                : this._enableDatepicker(e)),
4813            this._attachments(t(e), l),
4814            this._autoSize(l),
4815            this._setDate(l, o),
4816            this._updateAlternate(l),
4817            this._updateDatepicker(l)),
4818          void 0);
4819    },
4820    _changeDatepicker: function (t, e, i) {
4821      this._optionDatepicker(t, e, i);
4822    },
4823    _refreshDatepicker: function (t) {
4824      var e = this._getInst(t);
4825      e && this._updateDatepicker(e);
4826    },
4827    _setDateDatepicker: function (t, e) {
4828      var i = this._getInst(t);
4829      i &&
4830        (this._setDate(i, e),
4831        this._updateDatepicker(i),
4832        this._updateAlternate(i));
4833    },
4834    _getDateDatepicker: function (t, e) {
4835      var i = this._getInst(t);
4836      return (
4837        i && !i.inline && this._setDateFromField(i, e),
4838        i ? this._getDate(i) : null
4839      );
4840    },
4841    _doKeyDown: function (e) {
4842      var i,
4843        s,
4844        n,
4845        o = t.datepicker._getInst(e.target),
4846        a = !0,
4847        r = o.dpDiv.is(".ui-datepicker-rtl");
4848      if (((o._keyEvent = !0), t.datepicker._datepickerShowing))
4849        switch (e.keyCode) {
4850          case 9:
4851            t.datepicker._hideDatepicker(), (a = !1);
4852            break;
4853          case 13:
4854            return (
4855              (n = t(
4856                "td." +
4857                  t.datepicker._dayOverClass +
4858                  ":not(." +
4859                  t.datepicker._currentClass +
4860                  ")",
4861                o.dpDiv,
4862              )),
4863              n[0] &&
4864                t.datepicker._selectDay(
4865                  e.target,
4866                  o.selectedMonth,
4867                  o.selectedYear,
4868                  n[0],
4869                ),
4870              (i = t.datepicker._get(o, "onSelect")),
4871              i
4872                ? ((s = t.datepicker._formatDate(o)),
4873                  i.apply(o.input ? o.input[0] : null, [s, o]))
4874                : t.datepicker._hideDatepicker(),
4875              !1
4876            );
4877          case 27:
4878            t.datepicker._hideDatepicker();
4879            break;
4880          case 33:
4881            t.datepicker._adjustDate(
4882              e.target,
4883              e.ctrlKey
4884                ? -t.datepicker._get(o, "stepBigMonths")
4885                : -t.datepicker._get(o, "stepMonths"),
4886              "M",
4887            );
4888            break;
4889          case 34:
4890            t.datepicker._adjustDate(
4891              e.target,
4892              e.ctrlKey
4893                ? +t.datepicker._get(o, "stepBigMonths")
4894                : +t.datepicker._get(o, "stepMonths"),
4895              "M",
4896            );
4897            break;
4898          case 35:
4899            (e.ctrlKey || e.metaKey) && t.datepicker._clearDate(e.target),
4900              (a = e.ctrlKey || e.metaKey);
4901            break;
4902          case 36:
4903            (e.ctrlKey || e.metaKey) && t.datepicker._gotoToday(e.target),
4904              (a = e.ctrlKey || e.metaKey);
4905            break;
4906          case 37:
4907            (e.ctrlKey || e.metaKey) &&
4908              t.datepicker._adjustDate(e.target, r ? 1 : -1, "D"),
4909              (a = e.ctrlKey || e.metaKey),
4910              e.originalEvent.altKey &&
4911                t.datepicker._adjustDate(
4912                  e.target,
4913                  e.ctrlKey
4914                    ? -t.datepicker._get(o, "stepBigMonths")
4915                    : -t.datepicker._get(o, "stepMonths"),
4916                  "M",
4917                );
4918            break;
4919          case 38:
4920            (e.ctrlKey || e.metaKey) &&
4921              t.datepicker._adjustDate(e.target, -7, "D"),
4922              (a = e.ctrlKey || e.metaKey);
4923            break;
4924          case 39:
4925            (e.ctrlKey || e.metaKey) &&
4926              t.datepicker._adjustDate(e.target, r ? -1 : 1, "D"),
4927              (a = e.ctrlKey || e.metaKey),
4928              e.originalEvent.altKey &&
4929                t.datepicker._adjustDate(
4930                  e.target,
4931                  e.ctrlKey
4932                    ? +t.datepicker._get(o, "stepBigMonths")
4933                    : +t.datepicker._get(o, "stepMonths"),
4934                  "M",
4935                );
4936            break;
4937          case 40:
4938            (e.ctrlKey || e.metaKey) &&
4939              t.datepicker._adjustDate(e.target, 7, "D"),
4940              (a = e.ctrlKey || e.metaKey);
4941            break;
4942          default:
4943            a = !1;
4944        }
4945      else
4946        36 === e.keyCode && e.ctrlKey
4947          ? t.datepicker._showDatepicker(this)
4948          : (a = !1);
4949      a && (e.preventDefault(), e.stopPropagation());
4950    },
4951    _doKeyPress: function (e) {
4952      var i,
4953        s,
4954        n = t.datepicker._getInst(e.target);
4955      return t.datepicker._get(n, "constrainInput")
4956        ? ((i = t.datepicker._possibleChars(
4957            t.datepicker._get(n, "dateFormat"),
4958          )),
4959          (s = String.fromCharCode(
4960            null == e.charCode ? e.keyCode : e.charCode,
4961          )),
4962          e.ctrlKey || e.metaKey || " " > s || !i || i.indexOf(s) > -1)
4963        : void 0;
4964    },
4965    _doKeyUp: function (e) {
4966      var i,
4967        s = t.datepicker._getInst(e.target);
4968      if (s.input.val() !== s.lastVal)
4969        try {
4970          (i = t.datepicker.parseDate(
4971            t.datepicker._get(s, "dateFormat"),
4972            s.input ? s.input.val() : null,
4973            t.datepicker._getFormatConfig(s),
4974          )),
4975            i &&
4976              (t.datepicker._setDateFromField(s),
4977              t.datepicker._updateAlternate(s),
4978              t.datepicker._updateDatepicker(s));
4979        } catch (n) {}
4980      return !0;
4981    },
4982    _showDatepicker: function (e) {
4983      if (
4984        ((e = e.target || e),
4985        "input" !== e.nodeName.toLowerCase() &&
4986          (e = t("input", e.parentNode)[0]),
4987        !t.datepicker._isDisabledDatepicker(e) && t.datepicker._lastInput !== e)
4988      ) {
4989        var s, n, o, r, h, l, c;
4990        (s = t.datepicker._getInst(e)),
4991          t.datepicker._curInst &&
4992            t.datepicker._curInst !== s &&
4993            (t.datepicker._curInst.dpDiv.stop(!0, !0),
4994            s &&
4995              t.datepicker._datepickerShowing &&
4996              t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),
4997          (n = t.datepicker._get(s, "beforeShow")),
4998          (o = n ? n.apply(e, [e, s]) : {}),
4999          o !== !1 &&
5000            (a(s.settings, o),
5001            (s.lastVal = null),
5002            (t.datepicker._lastInput = e),
5003            t.datepicker._setDateFromField(s),
5004            t.datepicker._inDialog && (e.value = ""),
5005            t.datepicker._pos ||
5006              ((t.datepicker._pos = t.datepicker._findPos(e)),
5007              (t.datepicker._pos[1] += e.offsetHeight)),
5008            (r = !1),
5009            t(e)
5010              .parents()
5011              .each(function () {
5012                return (r |= "fixed" === t(this).css("position")), !r;
5013              }),
5014            (h = { left: t.datepicker._pos[0], top: t.datepicker._pos[1] }),
5015            (t.datepicker._pos = null),
5016            s.dpDiv.empty(),
5017            s.dpDiv.css({
5018              position: "absolute",
5019              display: "block",
5020              top: "-1000px",
5021            }),
5022            t.datepicker._updateDatepicker(s),
5023            (h = t.datepicker._checkOffset(s, h, r)),
5024            s.dpDiv.css({
5025              position:
5026                t.datepicker._inDialog && t.blockUI
5027                  ? "static"
5028                  : r
5029                    ? "fixed"
5030                    : "absolute",
5031              display: "none",
5032              left: h.left + "px",
5033              top: h.top + "px",
5034            }),
5035            s.inline ||
5036              ((l = t.datepicker._get(s, "showAnim")),
5037              (c = t.datepicker._get(s, "duration")),
5038              s.dpDiv.css("z-index", i(t(e)) + 1),
5039              (t.datepicker._datepickerShowing = !0),
5040              t.effects && t.effects.effect[l]
5041                ? s.dpDiv.show(l, t.datepicker._get(s, "showOptions"), c)
5042                : s.dpDiv[l || "show"](l ? c : null),
5043              t.datepicker._shouldFocusInput(s) && s.input.trigger("focus"),
5044              (t.datepicker._curInst = s)));
5045      }
5046    },
5047    _updateDatepicker: function (e) {
5048      (this.maxRows = 4),
5049        (m = e),
5050        e.dpDiv.empty().append(this._generateHTML(e)),
5051        this._attachHandlers(e);
5052      var i,
5053        s = this._getNumberOfMonths(e),
5054        n = s[1],
5055        a = 17,
5056        r = e.dpDiv.find("." + this._dayOverClass + " a");
5057      r.length > 0 && o.apply(r.get(0)),
5058        e.dpDiv
5059          .removeClass(
5060            "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4",
5061          )
5062          .width(""),
5063        n > 1 &&
5064          e.dpDiv
5065            .addClass("ui-datepicker-multi-" + n)
5066            .css("width", a * n + "em"),
5067        e.dpDiv[(1 !== s[0] || 1 !== s[1] ? "add" : "remove") + "Class"](
5068          "ui-datepicker-multi",
5069        ),
5070        e.dpDiv[(this._get(e, "isRTL") ? "add" : "remove") + "Class"](
5071          "ui-datepicker-rtl",
5072        ),
5073        e === t.datepicker._curInst &&
5074          t.datepicker._datepickerShowing &&
5075          t.datepicker._shouldFocusInput(e) &&
5076          e.input.trigger("focus"),
5077        e.yearshtml &&
5078          ((i = e.yearshtml),
5079          setTimeout(function () {
5080            i === e.yearshtml &&
5081              e.yearshtml &&
5082              e.dpDiv
5083                .find("select.ui-datepicker-year:first")
5084                .replaceWith(e.yearshtml),
5085              (i = e.yearshtml = null);
5086          }, 0));
5087    },
5088    _shouldFocusInput: function (t) {
5089      return (
5090        t.input &&
5091        t.input.is(":visible") &&
5092        !t.input.is(":disabled") &&
5093        !t.input.is(":focus")
5094      );
5095    },
5096    _checkOffset: function (e, i, s) {
5097      var n = e.dpDiv.outerWidth(),
5098        o = e.dpDiv.outerHeight(),
5099        a = e.input ? e.input.outerWidth() : 0,
5100        r = e.input ? e.input.outerHeight() : 0,
5101        h =
5102          document.documentElement.clientWidth +
5103          (s ? 0 : t(document).scrollLeft()),
5104        l =
5105          document.documentElement.clientHeight +
5106          (s ? 0 : t(document).scrollTop());
5107      return (
5108        (i.left -= this._get(e, "isRTL") ? n - a : 0),
5109        (i.left -=
5110          s && i.left === e.input.offset().left ? t(document).scrollLeft() : 0),
5111        (i.top -=
5112          s && i.top === e.input.offset().top + r
5113            ? t(document).scrollTop()
5114            : 0),
5115        (i.left -= Math.min(
5116          i.left,
5117          i.left + n > h && h > n ? Math.abs(i.left + n - h) : 0,
5118        )),
5119        (i.top -= Math.min(
5120          i.top,
5121          i.top + o > l && l > o ? Math.abs(o + r) : 0,
5122        )),
5123        i
5124      );
5125    },
5126    _findPos: function (e) {
5127      for (
5128        var i, s = this._getInst(e), n = this._get(s, "isRTL");
5129        e &&
5130        ("hidden" === e.type || 1 !== e.nodeType || t.expr.filters.hidden(e));
5131
5132      )
5133        e = e[n ? "previousSibling" : "nextSibling"];
5134      return (i = t(e).offset()), [i.left, i.top];
5135    },
5136    _hideDatepicker: function (e) {
5137      var i,
5138        s,
5139        n,
5140        o,
5141        a = this._curInst;
5142      !a ||
5143        (e && a !== t.data(e, "datepicker")) ||
5144        (this._datepickerShowing &&
5145          ((i = this._get(a, "showAnim")),
5146          (s = this._get(a, "duration")),
5147          (n = function () {
5148            t.datepicker._tidyDialog(a);
5149          }),
5150          t.effects && (t.effects.effect[i] || t.effects[i])
5151            ? a.dpDiv.hide(i, t.datepicker._get(a, "showOptions"), s, n)
5152            : a.dpDiv[
5153                "slideDown" === i
5154                  ? "slideUp"
5155                  : "fadeIn" === i
5156                    ? "fadeOut"
5157                    : "hide"
5158              ](i ? s : null, n),
5159          i || n(),
5160          (this._datepickerShowing = !1),
5161          (o = this._get(a, "onClose")),
5162          o &&
5163            o.apply(a.input ? a.input[0] : null, [
5164              a.input ? a.input.val() : "",
5165              a,
5166            ]),
5167          (this._lastInput = null),
5168          this._inDialog &&
5169            (this._dialogInput.css({
5170              position: "absolute",
5171              left: "0",
5172              top: "-100px",
5173            }),
5174            t.blockUI && (t.unblockUI(), t("body").append(this.dpDiv))),
5175          (this._inDialog = !1)));
5176    },
5177    _tidyDialog: function (t) {
5178      t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar");
5179    },
5180    _checkExternalClick: function (e) {
5181      if (t.datepicker._curInst) {
5182        var i = t(e.target),
5183          s = t.datepicker._getInst(i[0]);
5184        ((i[0].id !== t.datepicker._mainDivId &&
5185          0 === i.parents("#" + t.datepicker._mainDivId).length &&
5186          !i.hasClass(t.datepicker.markerClassName) &&
5187          !i.closest("." + t.datepicker._triggerClass).length &&
5188          t.datepicker._datepickerShowing &&
5189          (!t.datepicker._inDialog || !t.blockUI)) ||
5190          (i.hasClass(t.datepicker.markerClassName) &&
5191            t.datepicker._curInst !== s)) &&
5192          t.datepicker._hideDatepicker();
5193      }
5194    },
5195    _adjustDate: function (e, i, s) {
5196      var n = t(e),
5197        o = this._getInst(n[0]);
5198      this._isDisabledDatepicker(n[0]) ||
5199        (this._adjustInstDate(
5200          o,
5201          i + ("M" === s ? this._get(o, "showCurrentAtPos") : 0),
5202          s,
5203        ),
5204        this._updateDatepicker(o));
5205    },
5206    _gotoToday: function (e) {
5207      var i,
5208        s = t(e),
5209        n = this._getInst(s[0]);
5210      this._get(n, "gotoCurrent") && n.currentDay
5211        ? ((n.selectedDay = n.currentDay),
5212          (n.drawMonth = n.selectedMonth = n.currentMonth),
5213          (n.drawYear = n.selectedYear = n.currentYear))
5214        : ((i = new Date()),
5215          (n.selectedDay = i.getDate()),
5216          (n.drawMonth = n.selectedMonth = i.getMonth()),
5217          (n.drawYear = n.selectedYear = i.getFullYear())),
5218        this._notifyChange(n),
5219        this._adjustDate(s);
5220    },
5221    _selectMonthYear: function (e, i, s) {
5222      var n = t(e),
5223        o = this._getInst(n[0]);
5224      (o["selected" + ("M" === s ? "Month" : "Year")] = o[
5225        "draw" + ("M" === s ? "Month" : "Year")
5226      ] =
5227        parseInt(i.options[i.selectedIndex].value, 10)),
5228        this._notifyChange(o),
5229        this._adjustDate(n);
5230    },
5231    _selectDay: function (e, i, s, n) {
5232      var o,
5233        a = t(e);
5234      t(n).hasClass(this._unselectableClass) ||
5235        this._isDisabledDatepicker(a[0]) ||
5236        ((o = this._getInst(a[0])),
5237        (o.selectedDay = o.currentDay = t("a", n).html()),
5238        (o.selectedMonth = o.currentMonth = i),
5239        (o.selectedYear = o.currentYear = s),
5240        this._selectDate(
5241          e,
5242          this._formatDate(o, o.currentDay, o.currentMonth, o.currentYear),
5243        ));
5244    },
5245    _clearDate: function (e) {
5246      var i = t(e);
5247      this._selectDate(i, "");
5248    },
5249    _selectDate: function (e, i) {
5250      var s,
5251        n = t(e),
5252        o = this._getInst(n[0]);
5253      (i = null != i ? i : this._formatDate(o)),
5254        o.input && o.input.val(i),
5255        this._updateAlternate(o),
5256        (s = this._get(o, "onSelect")),
5257        s
5258          ? s.apply(o.input ? o.input[0] : null, [i, o])
5259          : o.input && o.input.trigger("change"),
5260        o.inline
5261          ? this._updateDatepicker(o)
5262          : (this._hideDatepicker(),
5263            (this._lastInput = o.input[0]),
5264            "object" != typeof o.input[0] && o.input.trigger("focus"),
5265            (this._lastInput = null));
5266    },
5267    _updateAlternate: function (e) {
5268      var i,
5269        s,
5270        n,
5271        o = this._get(e, "altField");
5272      o &&
5273        ((i = this._get(e, "altFormat") || this._get(e, "dateFormat")),
5274        (s = this._getDate(e)),
5275        (n = this.formatDate(i, s, this._getFormatConfig(e))),
5276        t(o).val(n));
5277    },
5278    noWeekends: function (t) {
5279      var e = t.getDay();
5280      return [e > 0 && 6 > e, ""];
5281    },
5282    iso8601Week: function (t) {
5283      var e,
5284        i = new Date(t.getTime());
5285      return (
5286        i.setDate(i.getDate() + 4 - (i.getDay() || 7)),
5287        (e = i.getTime()),
5288        i.setMonth(0),
5289        i.setDate(1),
5290        Math.floor(Math.round((e - i) / 864e5) / 7) + 1
5291      );
5292    },
5293    parseDate: function (e, i, s) {
5294      if (null == e || null == i) throw "Invalid arguments";
5295      if (((i = "object" == typeof i ? "" + i : i + ""), "" === i)) return null;
5296      var n,
5297        o,
5298        a,
5299        r,
5300        h = 0,
5301        l = (s ? s.shortYearCutoff : null) || this._defaults.shortYearCutoff,
5302        c =
5303          "string" != typeof l
5304            ? l
5305            : (new Date().getFullYear() % 100) + parseInt(l, 10),
5306        u = (s ? s.dayNamesShort : null) || this._defaults.dayNamesShort,
5307        d = (s ? s.dayNames : null) || this._defaults.dayNames,
5308        p = (s ? s.monthNamesShort : null) || this._defaults.monthNamesShort,
5309        f = (s ? s.monthNames : null) || this._defaults.monthNames,
5310        g = -1,
5311        m = -1,
5312        _ = -1,
5313        v = -1,
5314        b = !1,
5315        y = function (t) {
5316          var i = e.length > n + 1 && e.charAt(n + 1) === t;
5317          return i && n++, i;
5318        },
5319        w = function (t) {
5320          var e = y(t),
5321            s =
5322              "@" === t
5323                ? 14
5324                : "!" === t
5325                  ? 20
5326                  : "y" === t && e
5327                    ? 4
5328                    : "o" === t
5329                      ? 3
5330                      : 2,
5331            n = "y" === t ? s : 1,
5332            o = RegExp("^\\d{" + n + "," + s + "}"),
5333            a = i.substring(h).match(o);
5334          if (!a) throw "Missing number at position " + h;
5335          return (h += a[0].length), parseInt(a[0], 10);
5336        },
5337        k = function (e, s, n) {
5338          var o = -1,
5339            a = t
5340              .map(y(e) ? n : s, function (t, e) {
5341                return [[e, t]];
5342              })
5343              .sort(function (t, e) {
5344                return -(t[1].length - e[1].length);
5345              });
5346          if (
5347            (t.each(a, function (t, e) {
5348              var s = e[1];
5349              return i.substr(h, s.length).toLowerCase() === s.toLowerCase()
5350                ? ((o = e[0]), (h += s.length), !1)
5351                : void 0;
5352            }),
5353            -1 !== o)
5354          )
5355            return o + 1;
5356          throw "Unknown name at position " + h;
5357        },
5358        x = function () {
5359          if (i.charAt(h) !== e.charAt(n))
5360            throw "Unexpected literal at position " + h;
5361          h++;
5362        };
5363      for (n = 0; e.length > n; n++)
5364        if (b) "'" !== e.charAt(n) || y("'") ? x() : (b = !1);
5365        else
5366          switch (e.charAt(n)) {
5367            case "d":
5368              _ = w("d");
5369              break;
5370            case "D":
5371              k("D", u, d);
5372              break;
5373            case "o":
5374              v = w("o");
5375              break;
5376            case "m":
5377              m = w("m");
5378              break;
5379            case "M":
5380              m = k("M", p, f);
5381              break;
5382            case "y":
5383              g = w("y");
5384              break;
5385            case "@":
5386              (r = new Date(w("@"))),
5387                (g = r.getFullYear()),
5388                (m = r.getMonth() + 1),
5389                (_ = r.getDate());
5390              break;
5391            case "!":
5392              (r = new Date((w("!") - this._ticksTo1970) / 1e4)),
5393                (g = r.getFullYear()),
5394                (m = r.getMonth() + 1),
5395                (_ = r.getDate());
5396              break;
5397            case "'":
5398              y("'") ? x() : (b = !0);
5399              break;
5400            default:
5401              x();
5402          }
5403      if (i.length > h && ((a = i.substr(h)), !/^\s+/.test(a)))
5404        throw "Extra/unparsed characters found in date: " + a;
5405      if (
5406        (-1 === g
5407          ? (g = new Date().getFullYear())
5408          : 100 > g &&
5409            (g +=
5410              new Date().getFullYear() -
5411              (new Date().getFullYear() % 100) +
5412              (c >= g ? 0 : -100)),
5413        v > -1)
5414      )
5415        for (m = 1, _ = v; ; ) {
5416          if (((o = this._getDaysInMonth(g, m - 1)), o >= _)) break;
5417          m++, (_ -= o);
5418        }
5419      if (
5420        ((r = this._daylightSavingAdjust(new Date(g, m - 1, _))),
5421        r.getFullYear() !== g || r.getMonth() + 1 !== m || r.getDate() !== _)
5422      )
5423        throw "Invalid date";
5424      return r;
5425    },
5426    ATOM: "yy-mm-dd",
5427    COOKIE: "D, dd M yy",
5428    ISO_8601: "yy-mm-dd",
5429    RFC_822: "D, d M y",
5430    RFC_850: "DD, dd-M-y",
5431    RFC_1036: "D, d M y",
5432    RFC_1123: "D, d M yy",
5433    RFC_2822: "D, d M yy",
5434    RSS: "D, d M y",
5435    TICKS: "!",
5436    TIMESTAMP: "@",
5437    W3C: "yy-mm-dd",
5438    _ticksTo1970:
5439      1e7 *
5440      60 *
5441      60 *
5442      24 *
5443      (718685 + Math.floor(492.5) - Math.floor(19.7) + Math.floor(4.925)),
5444    formatDate: function (t, e, i) {
5445      if (!e) return "";
5446      var s,
5447        n = (i ? i.dayNamesShort : null) || this._defaults.dayNamesShort,
5448        o = (i ? i.dayNames : null) || this._defaults.dayNames,
5449        a = (i ? i.monthNamesShort : null) || this._defaults.monthNamesShort,
5450        r = (i ? i.monthNames : null) || this._defaults.monthNames,
5451        h = function (e) {
5452          var i = t.length > s + 1 && t.charAt(s + 1) === e;
5453          return i && s++, i;
5454        },
5455        l = function (t, e, i) {
5456          var s = "" + e;
5457          if (h(t)) for (; i > s.length; ) s = "0" + s;
5458          return s;
5459        },
5460        c = function (t, e, i, s) {
5461          return h(t) ? s[e] : i[e];
5462        },
5463        u = "",
5464        d = !1;
5465      if (e)
5466        for (s = 0; t.length > s; s++)
5467          if (d) "'" !== t.charAt(s) || h("'") ? (u += t.charAt(s)) : (d = !1);
5468          else
5469            switch (t.charAt(s)) {
5470              case "d":
5471                u += l("d", e.getDate(), 2);
5472                break;
5473              case "D":
5474                u += c("D", e.getDay(), n, o);
5475                break;
5476              case "o":
5477                u += l(
5478                  "o",
5479                  Math.round(
5480                    (new Date(
5481                      e.getFullYear(),
5482                      e.getMonth(),
5483                      e.getDate(),
5484                    ).getTime() -
5485                      new Date(e.getFullYear(), 0, 0).getTime()) /
5486                      864e5,
5487                  ),
5488                  3,
5489                );
5490                break;
5491              case "m":
5492                u += l("m", e.getMonth() + 1, 2);
5493                break;
5494              case "M":
5495                u += c("M", e.getMonth(), a, r);
5496                break;
5497              case "y":
5498                u += h("y")
5499                  ? e.getFullYear()
5500                  : (10 > e.getFullYear() % 100 ? "0" : "") +
5501                    (e.getFullYear() % 100);
5502                break;
5503              case "@":
5504                u += e.getTime();
5505                break;
5506              case "!":
5507                u += 1e4 * e.getTime() + this._ticksTo1970;
5508                break;
5509              case "'":
5510                h("'") ? (u += "'") : (d = !0);
5511                break;
5512              default:
5513                u += t.charAt(s);
5514            }
5515      return u;
5516    },
5517    _possibleChars: function (t) {
5518      var e,
5519        i = "",
5520        s = !1,
5521        n = function (i) {
5522          var s = t.length > e + 1 && t.charAt(e + 1) === i;
5523          return s && e++, s;
5524        };
5525      for (e = 0; t.length > e; e++)
5526        if (s) "'" !== t.charAt(e) || n("'") ? (i += t.charAt(e)) : (s = !1);
5527        else
5528          switch (t.charAt(e)) {
5529            case "d":
5530            case "m":
5531            case "y":
5532            case "@":
5533              i += "0123456789";
5534              break;
5535            case "D":
5536            case "M":
5537              return null;
5538            case "'":
5539              n("'") ? (i += "'") : (s = !0);
5540              break;
5541            default:
5542              i += t.charAt(e);
5543          }
5544      return i;
5545    },
5546    _get: function (t, e) {
5547      return void 0 !== t.settings[e] ? t.settings[e] : this._defaults[e];
5548    },
5549    _setDateFromField: function (t, e) {
5550      if (t.input.val() !== t.lastVal) {
5551        var i = this._get(t, "dateFormat"),
5552          s = (t.lastVal = t.input ? t.input.val() : null),
5553          n = this._getDefaultDate(t),
5554          o = n,
5555          a = this._getFormatConfig(t);
5556        try {
5557          o = this.parseDate(i, s, a) || n;
5558        } catch (r) {
5559          s = e ? "" : s;
5560        }
5561        (t.selectedDay = o.getDate()),
5562          (t.drawMonth = t.selectedMonth = o.getMonth()),
5563          (t.drawYear = t.selectedYear = o.getFullYear()),
5564          (t.currentDay = s ? o.getDate() : 0),
5565          (t.currentMonth = s ? o.getMonth() : 0),
5566          (t.currentYear = s ? o.getFullYear() : 0),
5567          this._adjustInstDate(t);
5568      }
5569    },
5570    _getDefaultDate: function (t) {
5571      return this._restrictMinMax(
5572        t,
5573        this._determineDate(t, this._get(t, "defaultDate"), new Date()),
5574      );
5575    },
5576    _determineDate: function (e, i, s) {
5577      var n = function (t) {
5578          var e = new Date();
5579          return e.setDate(e.getDate() + t), e;
5580        },
5581        o = function (i) {
5582          try {
5583            return t.datepicker.parseDate(
5584              t.datepicker._get(e, "dateFormat"),
5585              i,
5586              t.datepicker._getFormatConfig(e),
5587            );
5588          } catch (s) {}
5589          for (
5590            var n =
5591                (i.toLowerCase().match(/^c/)
5592                  ? t.datepicker._getDate(e)
5593                  : null) || new Date(),
5594              o = n.getFullYear(),
5595              a = n.getMonth(),
5596              r = n.getDate(),
5597              h = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
5598              l = h.exec(i);
5599            l;
5600
5601          ) {
5602            switch (l[2] || "d") {
5603              case "d":
5604              case "D":
5605                r += parseInt(l[1], 10);
5606                break;
5607              case "w":
5608              case "W":
5609                r += 7 * parseInt(l[1], 10);
5610                break;
5611              case "m":
5612              case "M":
5613                (a += parseInt(l[1], 10)),
5614                  (r = Math.min(r, t.datepicker._getDaysInMonth(o, a)));
5615                break;
5616              case "y":
5617              case "Y":
5618                (o += parseInt(l[1], 10)),
5619                  (r = Math.min(r, t.datepicker._getDaysInMonth(o, a)));
5620            }
5621            l = h.exec(i);
5622          }
5623          return new Date(o, a, r);
5624        },
5625        a =
5626          null == i || "" === i
5627            ? s
5628            : "string" == typeof i
5629              ? o(i)
5630              : "number" == typeof i
5631                ? isNaN(i)
5632                  ? s
5633                  : n(i)
5634                : new Date(i.getTime());
5635      return (
5636        (a = a && "Invalid Date" == "" + a ? s : a),
5637        a &&
5638          (a.setHours(0),
5639          a.setMinutes(0),
5640          a.setSeconds(0),
5641          a.setMilliseconds(0)),
5642        this._daylightSavingAdjust(a)
5643      );
5644    },
5645    _daylightSavingAdjust: function (t) {
5646      return t
5647        ? (t.setHours(t.getHours() > 12 ? t.getHours() + 2 : 0), t)
5648        : null;
5649    },
5650    _setDate: function (t, e, i) {
5651      var s = !e,
5652        n = t.selectedMonth,
5653        o = t.selectedYear,
5654        a = this._restrictMinMax(t, this._determineDate(t, e, new Date()));
5655      (t.selectedDay = t.currentDay = a.getDate()),
5656        (t.drawMonth = t.selectedMonth = t.currentMonth = a.getMonth()),
5657        (t.drawYear = t.selectedYear = t.currentYear = a.getFullYear()),
5658        (n === t.selectedMonth && o === t.selectedYear) ||
5659          i ||
5660          this._notifyChange(t),
5661        this._adjustInstDate(t),
5662        t.input && t.input.val(s ? "" : this._formatDate(t));
5663    },
5664    _getDate: function (t) {
5665      var e =
5666        !t.currentYear || (t.input && "" === t.input.val())
5667          ? null
5668          : this._daylightSavingAdjust(
5669              new Date(t.currentYear, t.currentMonth, t.currentDay),
5670            );
5671      return e;
5672    },
5673    _attachHandlers: function (e) {
5674      var i = this._get(e, "stepMonths"),
5675        s = "#" + e.id.replace(/\\\\/g, "\\");
5676      e.dpDiv.find("[data-handler]").map(function () {
5677        var e = {
5678          prev: function () {
5679            t.datepicker._adjustDate(s, -i, "M");
5680          },
5681          next: function () {
5682            t.datepicker._adjustDate(s, +i, "M");
5683          },
5684          hide: function () {
5685            t.datepicker._hideDatepicker();
5686          },
5687          today: function () {
5688            t.datepicker._gotoToday(s);
5689          },
5690          selectDay: function () {
5691            return (
5692              t.datepicker._selectDay(
5693                s,
5694                +this.getAttribute("data-month"),
5695                +this.getAttribute("data-year"),
5696                this,
5697              ),
5698              !1
5699            );
5700          },
5701          selectMonth: function () {
5702            return t.datepicker._selectMonthYear(s, this, "M"), !1;
5703          },
5704          selectYear: function () {
5705            return t.datepicker._selectMonthYear(s, this, "Y"), !1;
5706          },
5707        };
5708        t(this).on(
5709          this.getAttribute("data-event"),
5710          e[this.getAttribute("data-handler")],
5711        );
5712      });
5713    },
5714    _generateHTML: function (t) {
5715      var e,
5716        i,
5717        s,
5718        n,
5719        o,
5720        a,
5721        r,
5722        h,
5723        l,
5724        c,
5725        u,
5726        d,
5727        p,
5728        f,
5729        g,
5730        m,
5731        _,
5732        v,
5733        b,
5734        y,
5735        w,
5736        k,
5737        x,
5738        C,
5739        D,
5740        I,
5741        T,
5742        P,
5743        M,
5744        S,
5745        H,
5746        z,
5747        O,
5748        A,
5749        N,
5750        W,
5751        E,
5752        F,
5753        L,
5754        R = new Date(),
5755        B = this._daylightSavingAdjust(
5756          new Date(R.getFullYear(), R.getMonth(), R.getDate()),
5757        ),
5758        Y = this._get(t, "isRTL"),
5759        j = this._get(t, "showButtonPanel"),
5760        q = this._get(t, "hideIfNoPrevNext"),
5761        K = this._get(t, "navigationAsDateFormat"),
5762        U = this._getNumberOfMonths(t),
5763        V = this._get(t, "showCurrentAtPos"),
5764        $ = this._get(t, "stepMonths"),
5765        X = 1 !== U[0] || 1 !== U[1],
5766        G = this._daylightSavingAdjust(
5767          t.currentDay
5768            ? new Date(t.currentYear, t.currentMonth, t.currentDay)
5769            : new Date(9999, 9, 9),
5770        ),
5771        Q = this._getMinMaxDate(t, "min"),
5772        J = this._getMinMaxDate(t, "max"),
5773        Z = t.drawMonth - V,
5774        te = t.drawYear;
5775      if ((0 > Z && ((Z += 12), te--), J))
5776        for (
5777          e = this._daylightSavingAdjust(
5778            new Date(
5779              J.getFullYear(),
5780              J.getMonth() - U[0] * U[1] + 1,
5781              J.getDate(),
5782            ),
5783          ),
5784            e = Q && Q > e ? Q : e;
5785          this._daylightSavingAdjust(new Date(te, Z, 1)) > e;
5786
5787        )
5788          Z--, 0 > Z && ((Z = 11), te--);
5789      for (
5790        t.drawMonth = Z,
5791          t.drawYear = te,
5792          i = this._get(t, "prevText"),
5793          i = K
5794            ? this.formatDate(
5795                i,
5796                this._daylightSavingAdjust(new Date(te, Z - $, 1)),
5797                this._getFormatConfig(t),
5798              )
5799            : i,
5800          s = this._canAdjustMonth(t, -1, te, Z)
5801            ? "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='" +
5802              i +
5803              "'><span class='ui-icon ui-icon-circle-triangle-" +
5804              (Y ? "e" : "w") +
5805              "'>" +
5806              i +
5807              "</span></a>"
5808            : q
5809              ? ""
5810              : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" +
5811                i +
5812                "'><span class='ui-icon ui-icon-circle-triangle-" +
5813                (Y ? "e" : "w") +
5814                "'>" +
5815                i +
5816                "</span></a>",
5817          n = this._get(t, "nextText"),
5818          n = K
5819            ? this.formatDate(
5820                n,
5821                this._daylightSavingAdjust(new Date(te, Z + $, 1)),
5822                this._getFormatConfig(t),
5823              )
5824            : n,
5825          o = this._canAdjustMonth(t, 1, te, Z)
5826            ? "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='" +
5827              n +
5828              "'><span class='ui-icon ui-icon-circle-triangle-" +
5829              (Y ? "w" : "e") +
5830              "'>" +
5831              n +
5832              "</span></a>"
5833            : q
5834              ? ""
5835              : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" +
5836                n +
5837                "'><span class='ui-icon ui-icon-circle-triangle-" +
5838                (Y ? "w" : "e") +
5839                "'>" +
5840                n +
5841                "</span></a>",
5842          a = this._get(t, "currentText"),
5843          r = this._get(t, "gotoCurrent") && t.currentDay ? G : B,
5844          a = K ? this.formatDate(a, r, this._getFormatConfig(t)) : a,
5845          h = t.inline
5846            ? ""
5847            : "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
5848              this._get(t, "closeText") +
5849              "</button>",
5850          l = j
5851            ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" +
5852              (Y ? h : "") +
5853              (this._isInRange(t, r)
5854                ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>" +
5855                  a +
5856                  "</button>"
5857                : "") +
5858              (Y ? "" : h) +
5859              "</div>"
5860            : "",
5861          c = parseInt(this._get(t, "firstDay"), 10),
5862          c = isNaN(c) ? 0 : c,
5863          u = this._get(t, "showWeek"),
5864          d = this._get(t, "dayNames"),
5865          p = this._get(t, "dayNamesMin"),
5866          f = this._get(t, "monthNames"),
5867          g = this._get(t, "monthNamesShort"),
5868          m = this._get(t, "beforeShowDay"),
5869          _ = this._get(t, "showOtherMonths"),
5870          v = this._get(t, "selectOtherMonths"),
5871          b = this._getDefaultDate(t),
5872          y = "",
5873          k = 0;
5874        U[0] > k;
5875        k++
5876      ) {
5877        for (x = "", this.maxRows = 4, C = 0; U[1] > C; C++) {
5878          if (
5879            ((D = this._daylightSavingAdjust(new Date(te, Z, t.selectedDay))),
5880            (I = " ui-corner-all"),
5881            (T = ""),
5882            X)
5883          ) {
5884            if (((T += "<div class='ui-datepicker-group"), U[1] > 1))
5885              switch (C) {
5886                case 0:
5887                  (T += " ui-datepicker-group-first"),
5888                    (I = " ui-corner-" + (Y ? "right" : "left"));
5889                  break;
5890                case U[1] - 1:
5891                  (T += " ui-datepicker-group-last"),
5892                    (I = " ui-corner-" + (Y ? "left" : "right"));
5893                  break;
5894                default:
5895                  (T += " ui-datepicker-group-middle"), (I = "");
5896              }
5897            T += "'>";
5898          }
5899          for (
5900            T +=
5901              "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" +
5902              I +
5903              "'>" +
5904              (/all|left/.test(I) && 0 === k ? (Y ? o : s) : "") +
5905              (/all|right/.test(I) && 0 === k ? (Y ? s : o) : "") +
5906              this._generateMonthYearHeader(
5907                t,
5908                Z,
5909                te,
5910                Q,
5911                J,
5912                k > 0 || C > 0,
5913                f,
5914                g,
5915              ) +
5916              "</div><table class='ui-datepicker-calendar'><thead>" +
5917              "<tr>",
5918              P = u
5919                ? "<th class='ui-datepicker-week-col'>" +
5920                  this._get(t, "weekHeader") +
5921                  "</th>"
5922                : "",
5923              w = 0;
5924            7 > w;
5925            w++
5926          )
5927            (M = (w + c) % 7),
5928              (P +=
5929                "<th scope='col'" +
5930                ((w + c + 6) % 7 >= 5
5931                  ? " class='ui-datepicker-week-end'"
5932                  : "") +
5933                ">" +
5934                "<span title='" +
5935                d[M] +
5936                "'>" +
5937                p[M] +
5938                "</span></th>");
5939          for (
5940            T += P + "</tr></thead><tbody>",
5941              S = this._getDaysInMonth(te, Z),
5942              te === t.selectedYear &&
5943                Z === t.selectedMonth &&
5944                (t.selectedDay = Math.min(t.selectedDay, S)),
5945              H = (this._getFirstDayOfMonth(te, Z) - c + 7) % 7,
5946              z = Math.ceil((H + S) / 7),
5947              O = X ? (this.maxRows > z ? this.maxRows : z) : z,
5948              this.maxRows = O,
5949              A = this._daylightSavingAdjust(new Date(te, Z, 1 - H)),
5950              N = 0;
5951            O > N;
5952            N++
5953          ) {
5954            for (
5955              T += "<tr>",
5956                W = u
5957                  ? "<td class='ui-datepicker-week-col'>" +
5958                    this._get(t, "calculateWeek")(A) +
5959                    "</td>"
5960                  : "",
5961                w = 0;
5962              7 > w;
5963              w++
5964            )
5965              (E = m ? m.apply(t.input ? t.input[0] : null, [A]) : [!0, ""]),
5966                (F = A.getMonth() !== Z),
5967                (L = (F && !v) || !E[0] || (Q && Q > A) || (J && A > J)),
5968                (W +=
5969                  "<td class='" +
5970                  ((w + c + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") +
5971                  (F ? " ui-datepicker-other-month" : "") +
5972                  ((A.getTime() === D.getTime() &&
5973                    Z === t.selectedMonth &&
5974                    t._keyEvent) ||
5975                  (b.getTime() === A.getTime() && b.getTime() === D.getTime())
5976                    ? " " + this._dayOverClass
5977                    : "") +
5978                  (L
5979                    ? " " + this._unselectableClass + " ui-state-disabled"
5980                    : "") +
5981                  (F && !_
5982                    ? ""
5983                    : " " +
5984                      E[1] +
5985                      (A.getTime() === G.getTime()
5986                        ? " " + this._currentClass
5987                        : "") +
5988                      (A.getTime() === B.getTime()
5989                        ? " ui-datepicker-today"
5990                        : "")) +
5991                  "'" +
5992                  ((F && !_) || !E[2]
5993                    ? ""
5994                    : " title='" + E[2].replace(/'/g, "&#39;") + "'") +
5995                  (L
5996                    ? ""
5997                    : " data-handler='selectDay' data-event='click' data-month='" +
5998                      A.getMonth() +
5999                      "' data-year='" +
6000                      A.getFullYear() +
6001                      "'") +
6002                  ">" +
6003                  (F && !_
6004                    ? "&#xa0;"
6005                    : L
6006                      ? "<span class='ui-state-default'>" +
6007                        A.getDate() +
6008                        "</span>"
6009                      : "<a class='ui-state-default" +
6010                        (A.getTime() === B.getTime()
6011                          ? " ui-state-highlight"
6012                          : "") +
6013                        (A.getTime() === G.getTime()
6014                          ? " ui-state-active"
6015                          : "") +
6016                        (F ? " ui-priority-secondary" : "") +
6017                        "' href='#'>" +
6018                        A.getDate() +
6019                        "</a>") +
6020                  "</td>"),
6021                A.setDate(A.getDate() + 1),
6022                (A = this._daylightSavingAdjust(A));
6023            T += W + "</tr>";
6024          }
6025          Z++,
6026            Z > 11 && ((Z = 0), te++),
6027            (T +=
6028              "</tbody></table>" +
6029              (X
6030                ? "</div>" +
6031                  (U[0] > 0 && C === U[1] - 1
6032                    ? "<div class='ui-datepicker-row-break'></div>"
6033                    : "")
6034                : "")),
6035            (x += T);
6036        }
6037        y += x;
6038      }
6039      return (y += l), (t._keyEvent = !1), y;
6040    },
6041    _generateMonthYearHeader: function (t, e, i, s, n, o, a, r) {
6042      var h,
6043        l,
6044        c,
6045        u,
6046        d,
6047        p,
6048        f,
6049        g,
6050        m = this._get(t, "changeMonth"),
6051        _ = this._get(t, "changeYear"),
6052        v = this._get(t, "showMonthAfterYear"),
6053        b = "<div class='ui-datepicker-title'>",
6054        y = "";
6055      if (o || !m) y += "<span class='ui-datepicker-month'>" + a[e] + "</span>";
6056      else {
6057        for (
6058          h = s && s.getFullYear() === i,
6059            l = n && n.getFullYear() === i,
6060            y +=
6061              "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",
6062            c = 0;
6063          12 > c;
6064          c++
6065        )
6066          (!h || c >= s.getMonth()) &&
6067            (!l || n.getMonth() >= c) &&
6068            (y +=
6069              "<option value='" +
6070              c +
6071              "'" +
6072              (c === e ? " selected='selected'" : "") +
6073              ">" +
6074              r[c] +
6075              "</option>");
6076        y += "</select>";
6077      }
6078      if ((v || (b += y + (!o && m && _ ? "" : "&#xa0;")), !t.yearshtml))
6079        if (((t.yearshtml = ""), o || !_))
6080          b += "<span class='ui-datepicker-year'>" + i + "</span>";
6081        else {
6082          for (
6083            u = this._get(t, "yearRange").split(":"),
6084              d = new Date().getFullYear(),
6085              p = function (t) {
6086                var e = t.match(/c[+\-].*/)
6087                  ? i + parseInt(t.substring(1), 10)
6088                  : t.match(/[+\-].*/)
6089                    ? d + parseInt(t, 10)
6090                    : parseInt(t, 10);
6091                return isNaN(e) ? d : e;
6092              },
6093              f = p(u[0]),
6094              g = Math.max(f, p(u[1] || "")),
6095              f = s ? Math.max(f, s.getFullYear()) : f,
6096              g = n ? Math.min(g, n.getFullYear()) : g,
6097              t.yearshtml +=
6098                "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
6099            g >= f;
6100            f++
6101          )
6102            t.yearshtml +=
6103              "<option value='" +
6104              f +
6105              "'" +
6106              (f === i ? " selected='selected'" : "") +
6107              ">" +
6108              f +
6109              "</option>";
6110          (t.yearshtml += "</select>"),
6111            (b += t.yearshtml),
6112            (t.yearshtml = null);
6113        }
6114      return (
6115        (b += this._get(t, "yearSuffix")),
6116        v && (b += (!o && m && _ ? "" : "&#xa0;") + y),
6117        (b += "</div>")
6118      );
6119    },
6120    _adjustInstDate: function (t, e, i) {
6121      var s = t.selectedYear + ("Y" === i ? e : 0),
6122        n = t.selectedMonth + ("M" === i ? e : 0),
6123        o =
6124          Math.min(t.selectedDay, this._getDaysInMonth(s, n)) +
6125          ("D" === i ? e : 0),
6126        a = this._restrictMinMax(
6127          t,
6128          this._daylightSavingAdjust(new Date(s, n, o)),
6129        );
6130      (t.selectedDay = a.getDate()),
6131        (t.drawMonth = t.selectedMonth = a.getMonth()),
6132        (t.drawYear = t.selectedYear = a.getFullYear()),
6133        ("M" === i || "Y" === i) && this._notifyChange(t);
6134    },
6135    _restrictMinMax: function (t, e) {
6136      var i = this._getMinMaxDate(t, "min"),
6137        s = this._getMinMaxDate(t, "max"),
6138        n = i && i > e ? i : e;
6139      return s && n > s ? s : n;
6140    },
6141    _notifyChange: function (t) {
6142      var e = this._get(t, "onChangeMonthYear");
6143      e &&
6144        e.apply(t.input ? t.input[0] : null, [
6145          t.selectedYear,
6146          t.selectedMonth + 1,
6147          t,
6148        ]);
6149    },
6150    _getNumberOfMonths: function (t) {
6151      var e = this._get(t, "numberOfMonths");
6152      return null == e ? [1, 1] : "number" == typeof e ? [1, e] : e;
6153    },
6154    _getMinMaxDate: function (t, e) {
6155      return this._determineDate(t, this._get(t, e + "Date"), null);
6156    },
6157    _getDaysInMonth: function (t, e) {
6158      return 32 - this._daylightSavingAdjust(new Date(t, e, 32)).getDate();
6159    },
6160    _getFirstDayOfMonth: function (t, e) {
6161      return new Date(t, e, 1).getDay();
6162    },
6163    _canAdjustMonth: function (t, e, i, s) {
6164      var n = this._getNumberOfMonths(t),
6165        o = this._daylightSavingAdjust(
6166          new Date(i, s + (0 > e ? e : n[0] * n[1]), 1),
6167        );
6168      return (
6169        0 > e && o.setDate(this._getDaysInMonth(o.getFullYear(), o.getMonth())),
6170        this._isInRange(t, o)
6171      );
6172    },
6173    _isInRange: function (t, e) {
6174      var i,
6175        s,
6176        n = this._getMinMaxDate(t, "min"),
6177        o = this._getMinMaxDate(t, "max"),
6178        a = null,
6179        r = null,
6180        h = this._get(t, "yearRange");
6181      return (
6182        h &&
6183          ((i = h.split(":")),
6184          (s = new Date().getFullYear()),
6185          (a = parseInt(i[0], 10)),
6186          (r = parseInt(i[1], 10)),
6187          i[0].match(/[+\-].*/) && (a += s),
6188          i[1].match(/[+\-].*/) && (r += s)),
6189        (!n || e.getTime() >= n.getTime()) &&
6190          (!o || e.getTime() <= o.getTime()) &&
6191          (!a || e.getFullYear() >= a) &&
6192          (!r || r >= e.getFullYear())
6193      );
6194    },
6195    _getFormatConfig: function (t) {
6196      var e = this._get(t, "shortYearCutoff");
6197      return (
6198        (e =
6199          "string" != typeof e
6200            ? e
6201            : (new Date().getFullYear() % 100) + parseInt(e, 10)),
6202        {
6203          shortYearCutoff: e,
6204          dayNamesShort: this._get(t, "dayNamesShort"),
6205          dayNames: this._get(t, "dayNames"),
6206          monthNamesShort: this._get(t, "monthNamesShort"),
6207          monthNames: this._get(t, "monthNames"),
6208        }
6209      );
6210    },
6211    _formatDate: function (t, e, i, s) {
6212      e ||
6213        ((t.currentDay = t.selectedDay),
6214        (t.currentMonth = t.selectedMonth),
6215        (t.currentYear = t.selectedYear));
6216      var n = e
6217        ? "object" == typeof e
6218          ? e
6219          : this._daylightSavingAdjust(new Date(s, i, e))
6220        : this._daylightSavingAdjust(
6221            new Date(t.currentYear, t.currentMonth, t.currentDay),
6222          );
6223      return this.formatDate(
6224        this._get(t, "dateFormat"),
6225        n,
6226        this._getFormatConfig(t),
6227      );
6228    },
6229  }),
6230    (t.fn.datepicker = function (e) {
6231      if (!this.length) return this;
6232      t.datepicker.initialized ||
6233        (t(document).on("mousedown", t.datepicker._checkExternalClick),
6234        (t.datepicker.initialized = !0)),
6235        0 === t("#" + t.datepicker._mainDivId).length &&
6236          t("body").append(t.datepicker.dpDiv);
6237      var i = Array.prototype.slice.call(arguments, 1);
6238      return "string" != typeof e ||
6239        ("isDisabled" !== e && "getDate" !== e && "widget" !== e)
6240        ? "option" === e &&
6241          2 === arguments.length &&
6242          "string" == typeof arguments[1]
6243          ? t.datepicker["_" + e + "Datepicker"].apply(
6244              t.datepicker,
6245              [this[0]].concat(i),
6246            )
6247          : this.each(function () {
6248              "string" == typeof e
6249                ? t.datepicker["_" + e + "Datepicker"].apply(
6250                    t.datepicker,
6251                    [this].concat(i),
6252                  )
6253                : t.datepicker._attachDatepicker(this, e);
6254            })
6255        : t.datepicker["_" + e + "Datepicker"].apply(
6256            t.datepicker,
6257            [this[0]].concat(i),
6258          );
6259    }),
6260    (t.datepicker = new s()),
6261    (t.datepicker.initialized = !1),
6262    (t.datepicker.uuid = new Date().getTime()),
6263    (t.datepicker.version = "1.12.1"),
6264    t.datepicker,
6265    (t.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()));
6266  var _ = !1;
6267  t(document).on("mouseup", function () {
6268    _ = !1;
6269  }),
6270    t.widget("ui.mouse", {
6271      version: "1.12.1",
6272      options: {
6273        cancel: "input, textarea, button, select, option",
6274        distance: 1,
6275        delay: 0,
6276      },
6277      _mouseInit: function () {
6278        var e = this;
6279        this.element
6280          .on("mousedown." + this.widgetName, function (t) {
6281            return e._mouseDown(t);
6282          })
6283          .on("click." + this.widgetName, function (i) {
6284            return !0 === t.data(i.target, e.widgetName + ".preventClickEvent")
6285              ? (t.removeData(i.target, e.widgetName + ".preventClickEvent"),
6286                i.stopImmediatePropagation(),
6287                !1)
6288              : void 0;
6289          }),
6290          (this.started = !1);
6291      },
6292      _mouseDestroy: function () {
6293        this.element.off("." + this.widgetName),
6294          this._mouseMoveDelegate &&
6295            this.document
6296              .off("mousemove." + this.widgetName, this._mouseMoveDelegate)
6297              .off("mouseup." + this.widgetName, this._mouseUpDelegate);
6298      },
6299      _mouseDown: function (e) {
6300        if (!_) {
6301          (this._mouseMoved = !1),
6302            this._mouseStarted && this._mouseUp(e),
6303            (this._mouseDownEvent = e);
6304          var i = this,
6305            s = 1 === e.which,
6306            n =
6307              "string" == typeof this.options.cancel && e.target.nodeName
6308                ? t(e.target).closest(this.options.cancel).length
6309                : !1;
6310          return s && !n && this._mouseCapture(e)
6311            ? ((this.mouseDelayMet = !this.options.delay),
6312              this.mouseDelayMet ||
6313                (this._mouseDelayTimer = setTimeout(function () {
6314                  i.mouseDelayMet = !0;
6315                }, this.options.delay)),
6316              this._mouseDistanceMet(e) &&
6317              this._mouseDelayMet(e) &&
6318              ((this._mouseStarted = this._mouseStart(e) !== !1),
6319              !this._mouseStarted)
6320                ? (e.preventDefault(), !0)
6321                : (!0 ===
6322                    t.data(e.target, this.widgetName + ".preventClickEvent") &&
6323                    t.removeData(
6324                      e.target,
6325                      this.widgetName + ".preventClickEvent",
6326                    ),
6327                  (this._mouseMoveDelegate = function (t) {
6328                    return i._mouseMove(t);
6329                  }),
6330                  (this._mouseUpDelegate = function (t) {
6331                    return i._mouseUp(t);
6332                  }),
6333                  this.document
6334                    .on("mousemove." + this.widgetName, this._mouseMoveDelegate)
6335                    .on("mouseup." + this.widgetName, this._mouseUpDelegate),
6336                  e.preventDefault(),
6337                  (_ = !0),
6338                  !0))
6339            : !0;
6340        }
6341      },
6342      _mouseMove: function (e) {
6343        if (this._mouseMoved) {
6344          if (
6345            t.ui.ie &&
6346            (!document.documentMode || 9 > document.documentMode) &&
6347            !e.button
6348          )
6349            return this._mouseUp(e);
6350          if (!e.which)
6351            if (
6352              e.originalEvent.altKey ||
6353              e.originalEvent.ctrlKey ||
6354              e.originalEvent.metaKey ||
6355              e.originalEvent.shiftKey
6356            )
6357              this.ignoreMissingWhich = !0;
6358            else if (!this.ignoreMissingWhich) return this._mouseUp(e);
6359        }
6360        return (
6361          (e.which || e.button) && (this._mouseMoved = !0),
6362          this._mouseStarted
6363            ? (this._mouseDrag(e), e.preventDefault())
6364            : (this._mouseDistanceMet(e) &&
6365                this._mouseDelayMet(e) &&
6366                ((this._mouseStarted =
6367                  this._mouseStart(this._mouseDownEvent, e) !== !1),
6368                this._mouseStarted ? this._mouseDrag(e) : this._mouseUp(e)),
6369              !this._mouseStarted)
6370        );
6371      },
6372      _mouseUp: function (e) {
6373        this.document
6374          .off("mousemove." + this.widgetName, this._mouseMoveDelegate)
6375          .off("mouseup." + this.widgetName, this._mouseUpDelegate),
6376          this._mouseStarted &&
6377            ((this._mouseStarted = !1),
6378            e.target === this._mouseDownEvent.target &&
6379              t.data(e.target, this.widgetName + ".preventClickEvent", !0),
6380            this._mouseStop(e)),
6381          this._mouseDelayTimer &&
6382            (clearTimeout(this._mouseDelayTimer), delete this._mouseDelayTimer),
6383          (this.ignoreMissingWhich = !1),
6384          (_ = !1),
6385          e.preventDefault();
6386      },
6387      _mouseDistanceMet: function (t) {
6388        return (
6389          Math.max(
6390            Math.abs(this._mouseDownEvent.pageX - t.pageX),
6391            Math.abs(this._mouseDownEvent.pageY - t.pageY),
6392          ) >= this.options.distance
6393        );
6394      },
6395      _mouseDelayMet: function () {
6396        return this.mouseDelayMet;
6397      },
6398      _mouseStart: function () {},
6399      _mouseDrag: function () {},
6400      _mouseStop: function () {},
6401      _mouseCapture: function () {
6402        return !0;
6403      },
6404    }),
6405    (t.ui.plugin = {
6406      add: function (e, i, s) {
6407        var n,
6408          o = t.ui[e].prototype;
6409        for (n in s)
6410          (o.plugins[n] = o.plugins[n] || []), o.plugins[n].push([i, s[n]]);
6411      },
6412      call: function (t, e, i, s) {
6413        var n,
6414          o = t.plugins[e];
6415        if (
6416          o &&
6417          (s ||
6418            (t.element[0].parentNode &&
6419              11 !== t.element[0].parentNode.nodeType))
6420        )
6421          for (n = 0; o.length > n; n++)
6422            t.options[o[n][0]] && o[n][1].apply(t.element, i);
6423      },
6424    }),
6425    (t.ui.safeBlur = function (e) {
6426      e && "body" !== e.nodeName.toLowerCase() && t(e).trigger("blur");
6427    }),
6428    t.widget("ui.draggable", t.ui.mouse, {
6429      version: "1.12.1",
6430      widgetEventPrefix: "drag",
6431      options: {
6432        addClasses: !0,
6433        appendTo: "parent",
6434        axis: !1,
6435        connectToSortable: !1,
6436        containment: !1,
6437        cursor: "auto",
6438        cursorAt: !1,
6439        grid: !1,
6440        handle: !1,
6441        helper: "original",
6442        iframeFix: !1,
6443        opacity: !1,
6444        refreshPositions: !1,
6445        revert: !1,
6446        revertDuration: 500,
6447        scope: "default",
6448        scroll: !0,
6449        scrollSensitivity: 20,
6450        scrollSpeed: 20,
6451        snap: !1,
6452        snapMode: "both",
6453        snapTolerance: 20,
6454        stack: !1,
6455        zIndex: !1,
6456        drag: null,
6457        start: null,
6458        stop: null,
6459      },
6460      _create: function () {
6461        "original" === this.options.helper && this._setPositionRelative(),
6462          this.options.addClasses && this._addClass("ui-draggable"),
6463          this._setHandleClassName(),
6464          this._mouseInit();
6465      },
6466      _setOption: function (t, e) {
6467        this._super(t, e),
6468          "handle" === t &&
6469            (this._removeHandleClassName(), this._setHandleClassName());
6470      },
6471      _destroy: function () {
6472        return (this.helper || this.element).is(".ui-draggable-dragging")
6473          ? ((this.destroyOnClear = !0), void 0)
6474          : (this._removeHandleClassName(), this._mouseDestroy(), void 0);
6475      },
6476      _mouseCapture: function (e) {
6477        var i = this.options;
6478        return this.helper ||
6479          i.disabled ||
6480          t(e.target).closest(".ui-resizable-handle").length > 0
6481          ? !1
6482          : ((this.handle = this._getHandle(e)),
6483            this.handle
6484              ? (this._blurActiveElement(e),
6485                this._blockFrames(i.iframeFix === !0 ? "iframe" : i.iframeFix),
6486                !0)
6487              : !1);
6488      },
6489      _blockFrames: function (e) {
6490        this.iframeBlocks = this.document.find(e).map(function () {
6491          var e = t(this);
6492          return t("<div>")
6493            .css("position", "absolute")
6494            .appendTo(e.parent())
6495            .outerWidth(e.outerWidth())
6496            .outerHeight(e.outerHeight())
6497            .offset(e.offset())[0];
6498        });
6499      },
6500      _unblockFrames: function () {
6501        this.iframeBlocks &&
6502          (this.iframeBlocks.remove(), delete this.iframeBlocks);
6503      },
6504      _blurActiveElement: function (e) {
6505        var i = t.ui.safeActiveElement(this.document[0]),
6506          s = t(e.target);
6507        s.closest(i).length || t.ui.safeBlur(i);
6508      },
6509      _mouseStart: function (e) {
6510        var i = this.options;
6511        return (
6512          (this.helper = this._createHelper(e)),
6513          this._addClass(this.helper, "ui-draggable-dragging"),
6514          this._cacheHelperProportions(),
6515          t.ui.ddmanager && (t.ui.ddmanager.current = this),
6516          this._cacheMargins(),
6517          (this.cssPosition = this.helper.css("position")),
6518          (this.scrollParent = this.helper.scrollParent(!0)),
6519          (this.offsetParent = this.helper.offsetParent()),
6520          (this.hasFixedAncestor =
6521            this.helper.parents().filter(function () {
6522              return "fixed" === t(this).css("position");
6523            }).length > 0),
6524          (this.positionAbs = this.element.offset()),
6525          this._refreshOffsets(e),
6526          (this.originalPosition = this.position =
6527            this._generatePosition(e, !1)),
6528          (this.originalPageX = e.pageX),
6529          (this.originalPageY = e.pageY),
6530          i.cursorAt && this._adjustOffsetFromHelper(i.cursorAt),
6531          this._setContainment(),
6532          this._trigger("start", e) === !1
6533            ? (this._clear(), !1)
6534            : (this._cacheHelperProportions(),
6535              t.ui.ddmanager &&
6536                !i.dropBehaviour &&
6537                t.ui.ddmanager.prepareOffsets(this, e),
6538              this._mouseDrag(e, !0),
6539              t.ui.ddmanager && t.ui.ddmanager.dragStart(this, e),
6540              !0)
6541        );
6542      },
6543      _refreshOffsets: function (t) {
6544        (this.offset = {
6545          top: this.positionAbs.top - this.margins.top,
6546          left: this.positionAbs.left - this.margins.left,
6547          scroll: !1,
6548          parent: this._getParentOffset(),
6549          relative: this._getRelativeOffset(),
6550        }),
6551          (this.offset.click = {
6552            left: t.pageX - this.offset.left,
6553            top: t.pageY - this.offset.top,
6554          });
6555      },
6556      _mouseDrag: function (e, i) {
6557        if (
6558          (this.hasFixedAncestor &&
6559            (this.offset.parent = this._getParentOffset()),
6560          (this.position = this._generatePosition(e, !0)),
6561          (this.positionAbs = this._convertPositionTo("absolute")),
6562          !i)
6563        ) {
6564          var s = this._uiHash();
6565          if (this._trigger("drag", e, s) === !1)
6566            return this._mouseUp(new t.Event("mouseup", e)), !1;
6567          this.position = s.position;
6568        }
6569        return (
6570          (this.helper[0].style.left = this.position.left + "px"),
6571          (this.helper[0].style.top = this.position.top + "px"),
6572          t.ui.ddmanager && t.ui.ddmanager.drag(this, e),
6573          !1
6574        );
6575      },
6576      _mouseStop: function (e) {
6577        var i = this,
6578          s = !1;
6579        return (
6580          t.ui.ddmanager &&
6581            !this.options.dropBehaviour &&
6582            (s = t.ui.ddmanager.drop(this, e)),
6583          this.dropped && ((s = this.dropped), (this.dropped = !1)),
6584          ("invalid" === this.options.revert && !s) ||
6585          ("valid" === this.options.revert && s) ||
6586          this.options.revert === !0 ||
6587          (t.isFunction(this.options.revert) &&
6588            this.options.revert.call(this.element, s))
6589            ? t(this.helper).animate(
6590                this.originalPosition,
6591                parseInt(this.options.revertDuration, 10),
6592                function () {
6593                  i._trigger("stop", e) !== !1 && i._clear();
6594                },
6595              )
6596            : this._trigger("stop", e) !== !1 && this._clear(),
6597          !1
6598        );
6599      },
6600      _mouseUp: function (e) {
6601        return (
6602          this._unblockFrames(),
6603          t.ui.ddmanager && t.ui.ddmanager.dragStop(this, e),
6604          this.handleElement.is(e.target) && this.element.trigger("focus"),
6605          t.ui.mouse.prototype._mouseUp.call(this, e)
6606        );
6607      },
6608      cancel: function () {
6609        return (
6610          this.helper.is(".ui-draggable-dragging")
6611            ? this._mouseUp(new t.Event("mouseup", { target: this.element[0] }))
6612            : this._clear(),
6613          this
6614        );
6615      },
6616      _getHandle: function (e) {
6617        return this.options.handle
6618          ? !!t(e.target).closest(this.element.find(this.options.handle)).length
6619          : !0;
6620      },
6621      _setHandleClassName: function () {
6622        (this.handleElement = this.options.handle
6623          ? this.element.find(this.options.handle)
6624          : this.element),
6625          this._addClass(this.handleElement, "ui-draggable-handle");
6626      },
6627      _removeHandleClassName: function () {
6628        this._removeClass(this.handleElement, "ui-draggable-handle");
6629      },
6630      _createHelper: function (e) {
6631        var i = this.options,
6632          s = t.isFunction(i.helper),
6633          n = s
6634            ? t(i.helper.apply(this.element[0], [e]))
6635            : "clone" === i.helper
6636              ? this.element.clone().removeAttr("id")
6637              : this.element;
6638        return (
6639          n.parents("body").length ||
6640            n.appendTo(
6641              "parent" === i.appendTo ? this.element[0].parentNode : i.appendTo,
6642            ),
6643          s && n[0] === this.element[0] && this._setPositionRelative(),
6644          n[0] === this.element[0] ||
6645            /(fixed|absolute)/.test(n.css("position")) ||
6646            n.css("position", "absolute"),
6647          n
6648        );
6649      },
6650      _setPositionRelative: function () {
6651        /^(?:r|a|f)/.test(this.element.css("position")) ||
6652          (this.element[0].style.position = "relative");
6653      },
6654      _adjustOffsetFromHelper: function (e) {
6655        "string" == typeof e && (e = e.split(" ")),
6656          t.isArray(e) && (e = { left: +e[0], top: +e[1] || 0 }),
6657          "left" in e && (this.offset.click.left = e.left + this.margins.left),
6658          "right" in e &&
6659            (this.offset.click.left =
6660              this.helperProportions.width - e.right + this.margins.left),
6661          "top" in e && (this.offset.click.top = e.top + this.margins.top),
6662          "bottom" in e &&
6663            (this.offset.click.top =
6664              this.helperProportions.height - e.bottom + this.margins.top);
6665      },
6666      _isRootNode: function (t) {
6667        return /(html|body)/i.test(t.tagName) || t === this.document[0];
6668      },
6669      _getParentOffset: function () {
6670        var e = this.offsetParent.offset(),
6671          i = this.document[0]
6671;
6672        return (
6673          "absolute" === this.cssPosition &&
6674            this.scrollParent[0] !== i &&
6675            t.contains(this.scrollParent[0], this.offsetParent[0]) &&
6676            ((e.left += this.scrollParent.scrollLeft()),
6677            (e.top += this.scrollParent.scrollTop())),
6678          this._isRootNode(this.offsetParent[0]) && (e = { top: 0, left: 0 }),
6679          {
6680            top:
6681              e.top +
6682              (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
6683            left:
6684              e.left +
6685              (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0),
6686          }
6687        );
6688      },
6689      _getRelativeOffset: function () {
6690        if ("relative" !== this.cssPosition) return { top: 0, left: 0 };
6691        var t = this.element.position(),
6692          e = this._isRootNode(this.scrollParent[0]);
6693        return {
6694          top:
6695            t.top -
6696            (parseInt(this.helper.css("top"), 10) || 0) +
6697            (e ? 0 : this.scrollParent.scrollTop()),
6698          left:
6699            t.left -
6700            (parseInt(this.helper.css("left"), 10) || 0) +
6701            (e ? 0 : this.scrollParent.scrollLeft()),
6702        };
6703      },
6704      _cacheMargins: function () {
6705        this.margins = {
6706          left: parseInt(this.element.css("marginLeft"), 10) || 0,
6707          top: parseInt(this.element.css("marginTop"), 10) || 0,
6708          right: parseInt(this.element.css("marginRight"), 10) || 0,
6709          bottom: parseInt(this.element.css("marginBottom"), 10) || 0,
6710        };
6711      },
6712      _cacheHelperProportions: function () {
6713        this.helperProportions = {
6714          width: this.helper.outerWidth(),
6715          height: this.helper.outerHeight(),
6716        };
6717      },
6718      _setContainment: function () {
6719        var e,
6720          i,
6721          s,
6722          n = this.options,
6723          o = this.document[0];
6724        return (
6725          (this.relativeContainer = null),
6726          n.containment
6727            ? "window" === n.containment
6728              ? ((this.containment = [
6729                  t(window).scrollLeft() -
6730                    this.offset.relative.left -
6731                    this.offset.parent.left,
6732                  t(window).scrollTop() -
6733                    this.offset.relative.top -
6734                    this.offset.parent.top,
6735                  t(window).scrollLeft() +
6736                    t(window).width() -
6737                    this.helperProportions.width -
6738                    this.margins.left,
6739                  t(window).scrollTop() +
6740                    (t(window).height() || o.body.parentNode.scrollHeight) -
6741                    this.helperProportions.height -
6742                    this.margins.top,
6743                ]),
6744                void 0)
6745              : "document" === n.containment
6746                ? ((this.containment = [
6747                    0,
6748                    0,
6749                    t(o).width() -
6750                      this.helperProportions.width -
6751                      this.margins.left,
6752                    (t(o).height() || o.body.parentNode.scrollHeight) -
6753                      this.helperProportions.height -
6754                      this.margins.top,
6755                  ]),
6756                  void 0)
6757                : n.containment.constructor === Array
6758                  ? ((this.containment = n.containment), void 0)
6759                  : ("parent" === n.containment &&
6760                      (n.containment = this.helper[0].parentNode),
6761                    (i = t(n.containment)),
6762                    (s = i[0]),
6763                    s &&
6764                      ((e = /(scroll|auto)/.test(i.css("overflow"))),
6765                      (this.containment = [
6766                        (parseInt(i.css("borderLeftWidth"), 10) || 0) +
6767                          (parseInt(i.css("paddingLeft"), 10) || 0),
6768                        (parseInt(i.css("borderTopWidth"), 10) || 0) +
6769                          (parseInt(i.css("paddingTop"), 10) || 0),
6770                        (e
6771                          ? Math.max(s.scrollWidth, s.offsetWidth)
6772                          : s.offsetWidth) -
6773                          (parseInt(i.css("borderRightWidth"), 10) || 0) -
6774                          (parseInt(i.css("paddingRight"), 10) || 0) -
6775                          this.helperProportions.width -
6776                          this.margins.left -
6777                          this.margins.right,
6778                        (e
6779                          ? Math.max(s.scrollHeight, s.offsetHeight)
6780                          : s.offsetHeight) -
6781                          (parseInt(i.css("borderBottomWidth"), 10) || 0) -
6782                          (parseInt(i.css("paddingBottom"), 10) || 0) -
6783                          this.helperProportions.height -
6784                          this.margins.top -
6785                          this.margins.bottom,
6786                      ]),
6787                      (this.relativeContainer = i)),
6788                    void 0)
6789            : ((this.containment = null), void 0)
6790        );
6791      },
6792      _convertPositionTo: function (t, e) {
6793        e || (e = this.position);
6794        var i = "absolute" === t ? 1 : -1,
6795          s = this._isRootNode(this.scrollParent[0]);
6796        return {
6797          top:
6798            e.top +
6799            this.offset.relative.top * i +
6800            this.offset.parent.top * i -
6801            ("fixed" === this.cssPosition
6802              ? -this.offset.scroll.top
6803              : s
6804                ? 0
6805                : this.offset.scroll.top) *
6806              i,
6807          left:
6808            e.left +
6809            this.offset.relative.left * i +
6810            this.offset.parent.left * i -
6811            ("fixed" === this.cssPosition
6812              ? -this.offset.scroll.left
6813              : s
6814                ? 0
6815                : this.offset.scroll.left) *
6816              i,
6817        };
6818      },
6819      _generatePosition: function (t, e) {
6820        var i,
6821          s,
6822          n,
6823          o,
6824          a = this.options,
6825          r = this._isRootNode(this.scrollParent[0]),
6826          h = t.pageX,
6827          l = t.pageY;
6828        return (
6829          (r && this.offset.scroll) ||
6830            (this.offset.scroll = {
6831              top: this.scrollParent.scrollTop(),
6832              left: this.scrollParent.scrollLeft(),
6833            }),
6834          e &&
6835            (this.containment &&
6836              (this.relativeContainer
6837                ? ((s = this.relativeContainer.offset()),
6838                  (i = [
6839                    this.containment[0] + s.left,
6840                    this.containment[1] + s.top,
6841                    this.containment[2] + s.left,
6842                    this.containment[3] + s.top,
6843                  ]))
6844                : (i = this.containment),
6845              t.pageX - this.offset.click.left < i[0] &&
6846                (h = i[0] + this.offset.click.left),
6847              t.pageY - this.offset.click.top < i[1] &&
6848                (l = i[1] + this.offset.click.top),
6849              t.pageX - this.offset.click.left > i[2] &&
6850                (h = i[2] + this.offset.click.left),
6851              t.pageY - this.offset.click.top > i[3] &&
6852                (l = i[3] + this.offset.click.top)),
6853            a.grid &&
6854              ((n = a.grid[1]
6855                ? this.originalPageY +
6856                  Math.round((l - this.originalPageY) / a.grid[1]) * a.grid[1]
6857                : this.originalPageY),
6858              (l = i
6859                ? n - this.offset.click.top >= i[1] ||
6860                  n - this.offset.click.top > i[3]
6861                  ? n
6862                  : n - this.offset.click.top >= i[1]
6863                    ? n - a.grid[1]
6864                    : n + a.grid[1]
6865                : n),
6866              (o = a.grid[0]
6867                ? this.originalPageX +
6868                  Math.round((h - this.originalPageX) / a.grid[0]) * a.grid[0]
6869                : this.originalPageX),
6870              (h = i
6871                ? o - this.offset.click.left >= i[0] ||
6872                  o - this.offset.click.left > i[2]
6873                  ? o
6874                  : o - this.offset.click.left >= i[0]
6875                    ? o - a.grid[0]
6876                    : o + a.grid[0]
6877                : o)),
6878            "y" === a.axis && (h = this.originalPageX),
6879            "x" === a.axis && (l = this.originalPageY)),
6880          {
6881            top:
6882              l -
6883              this.offset.click.top -
6884              this.offset.relative.top -
6885              this.offset.parent.top +
6886              ("fixed" === this.cssPosition
6887                ? -this.offset.scroll.top
6888                : r
6889                  ? 0
6890                  : this.offset.scroll.top),
6891            left:
6892              h -
6893              this.offset.click.left -
6894              this.offset.relative.left -
6895              this.offset.parent.left +
6896              ("fixed" === this.cssPosition
6897                ? -this.offset.scroll.left
6898                : r
6899                  ? 0
6900                  : this.offset.scroll.left),
6901          }
6902        );
6903      },
6904      _clear: function () {
6905        this._removeClass(this.helper, "ui-draggable-dragging"),
6906          this.helper[0] === this.element[0] ||
6907            this.cancelHelperRemoval ||
6908            this.helper.remove(),
6909          (this.helper = null),
6910          (this.cancelHelperRemoval = !1),
6911          this.destroyOnClear && this.destroy();
6912      },
6913      _trigger: function (e, i, s) {
6914        return (
6915          (s = s || this._uiHash()),
6916          t.ui.plugin.call(this, e, [i, s, this], !0),
6917          /^(drag|start|stop)/.test(e) &&
6918            ((this.positionAbs = this._convertPositionTo("absolute")),
6919            (s.offset = this.positionAbs)),
6920          t.Widget.prototype._trigger.call(this, e, i, s)
6921        );
6922      },
6923      plugins: {},
6924      _uiHash: function () {
6925        return {
6926          helper: this.helper,
6927          position: this.position,
6928          originalPosition: this.originalPosition,
6929          offset: this.positionAbs,
6930        };
6931      },
6932    }),
6933    t.ui.plugin.add("draggable", "connectToSortable", {
6934      start: function (e, i, s) {
6935        var n = t.extend({}, i, { item: s.element });
6936        (s.sortables = []),
6937          t(s.options.connectToSortable).each(function () {
6938            var i = t(this).sortable("instance");
6939            i &&
6940              !i.options.disabled &&
6941              (s.sortables.push(i),
6942              i.refreshPositions(),
6943              i._trigger("activate", e, n));
6944          });
6945      },
6946      stop: function (e, i, s) {
6947        var n = t.extend({}, i, { item: s.element });
6948        (s.cancelHelperRemoval = !1),
6949          t.each(s.sortables, function () {
6950            var t = this;
6951            t.isOver
6952              ? ((t.isOver = 0),
6953                (s.cancelHelperRemoval = !0),
6954                (t.cancelHelperRemoval = !1),
6955                (t._storedCSS = {
6956                  position: t.placeholder.css("position"),
6957                  top: t.placeholder.css("top"),
6958                  left: t.placeholder.css("left"),
6959                }),
6960                t._mouseStop(e),
6961                (t.options.helper = t.options._helper))
6962              : ((t.cancelHelperRemoval = !0), t._trigger("deactivate", e, n));
6963          });
6964      },
6965      drag: function (e, i, s) {
6966        t.each(s.sortables, function () {
6967          var n = !1,
6968            o = this;
6969          (o.positionAbs = s.positionAbs),
6970            (o.helperProportions = s.helperProportions),
6971            (o.offset.click = s.offset.click),
6972            o._intersectsWith(o.containerCache) &&
6973              ((n = !0),
6974              t.each(s.sortables, function () {
6975                return (
6976                  (this.positionAbs = s.positionAbs),
6977                  (this.helperProportions = s.helperProportions),
6978                  (this.offset.click = s.offset.click),
6979                  this !== o &&
6980                    this._intersectsWith(this.containerCache) &&
6981                    t.contains(o.element[0], this.element[0]) &&
6982                    (n = !1),
6983                  n
6984                );
6985              })),
6986            n
6987              ? (o.isOver ||
6988                  ((o.isOver = 1),
6989                  (s._parent = i.helper.parent()),
6990                  (o.currentItem = i.helper
6991                    .appendTo(o.element)
6992                    .data("ui-sortable-item", !0)),
6993                  (o.options._helper = o.options.helper),
6994                  (o.options.helper = function () {
6995                    return i.helper[0];
6996                  }),
6997                  (e.target = o.currentItem[0]),
6998                  o._mouseCapture(e, !0),
6999                  o._mouseStart(e, !0, !0),
7000                  (o.offset.click.top = s.offset.click.top),
7001                  (o.offset.click.left = s.offset.click.left),
7002                  (o.offset.parent.left -=
7003                    s.offset.parent.left - o.offset.parent.left),
7004                  (o.offset.parent.top -=
7005                    s.offset.parent.top - o.offset.parent.top),
7006                  s._trigger("toSortable", e),
7007                  (s.dropped = o.element),
7008                  t.each(s.sortables, function () {
7009                    this.refreshPositions();
7010                  }),
7011                  (s.currentItem = s.element),
7012                  (o.fromOutside = s)),
7013                o.currentItem && (o._mouseDrag(e), (i.position = o.position)))
7014              : o.isOver &&
7015                ((o.isOver = 0),
7016                (o.cancelHelperRemoval = !0),
7017                (o.options._revert = o.options.revert),
7018                (o.options.revert = !1),
7019                o._trigger("out", e, o._uiHash(o)),
7020                o._mouseStop(e, !0),
7021                (o.options.revert = o.options._revert),
7022                (o.options.helper = o.options._helper),
7023                o.placeholder && o.placeholder.remove(),
7024                i.helper.appendTo(s._parent),
7025                s._refreshOffsets(e),
7026                (i.position = s._generatePosition(e, !0)),
7027                s._trigger("fromSortable", e),
7028                (s.dropped = !1),
7029                t.each(s.sortables, function () {
7030                  this.refreshPositions();
7031                }));
7032        });
7033      },
7034    }),
7035    t.ui.plugin.add("draggable", "cursor", {
7036      start: function (e, i, s) {
7037        var n = t("body"),
7038          o = s.options;
7039        n.css("cursor") && (o._cursor = n.css("cursor")),
7040          n.css("cursor", o.cursor);
7041      },
7042      stop: function (e, i, s) {
7043        var n = s.options;
7044        n._cursor && t("body").css("cursor", n._cursor);
7045      },
7046    }),
7047    t.ui.plugin.add("draggable", "opacity", {
7048      start: function (e, i, s) {
7049        var n = t(i.helper),
7050          o = s.options;
7051        n.css("opacity") && (o._opacity = n.css("opacity")),
7052          n.css("opacity", o.opacity);
7053      },
7054      stop: function (e, i, s) {
7055        var n = s.options;
7056        n._opacity && t(i.helper).css("opacity", n._opacity);
7057      },
7058    }),
7059    t.ui.plugin.add("draggable", "scroll", {
7060      start: function (t, e, i) {
7061        i.scrollParentNotHidden ||
7062          (i.scrollParentNotHidden = i.helper.scrollParent(!1)),
7063          i.scrollParentNotHidden[0] !== i.document[0] &&
7064            "HTML" !== i.scrollParentNotHidden[0].tagName &&
7065            (i.overflowOffset = i.scrollParentNotHidden.offset());
7066      },
7067      drag: function (e, i, s) {
7068        var n = s.options,
7069          o = !1,
7070          a = s.scrollParentNotHidden[0],
7071          r = s.document[0];
7072        a !== r && "HTML" !== a.tagName
7073          ? ((n.axis && "x" === n.axis) ||
7074              (s.overflowOffset.top + a.offsetHeight - e.pageY <
7075              n.scrollSensitivity
7076                ? (a.scrollTop = o = a.scrollTop + n.scrollSpeed)
7077                : e.pageY - s.overflowOffset.top < n.scrollSensitivity &&
7078                  (a.scrollTop = o = a.scrollTop - n.scrollSpeed)),
7079            (n.axis && "y" === n.axis) ||
7080              (s.overflowOffset.left + a.offsetWidth - e.pageX <
7081              n.scrollSensitivity
7082                ? (a.scrollLeft = o = a.scrollLeft + n.scrollSpeed)
7083                : e.pageX - s.overflowOffset.left < n.scrollSensitivity &&
7084                  (a.scrollLeft = o = a.scrollLeft - n.scrollSpeed)))
7085          : ((n.axis && "x" === n.axis) ||
7086              (e.pageY - t(r).scrollTop() < n.scrollSensitivity
7087                ? (o = t(r).scrollTop(t(r).scrollTop() - n.scrollSpeed))
7088                : t(window).height() - (e.pageY - t(r).scrollTop()) <
7089                    n.scrollSensitivity &&
7090                  (o = t(r).scrollTop(t(r).scrollTop() + n.scrollSpeed))),
7091            (n.axis && "y" === n.axis) ||
7092              (e.pageX - t(r).scrollLeft() < n.scrollSensitivity
7093                ? (o = t(r).scrollLeft(t(r).scrollLeft() - n.scrollSpeed))
7094                : t(window).width() - (e.pageX - t(r).scrollLeft()) <
7095                    n.scrollSensitivity &&
7096                  (o = t(r).scrollLeft(t(r).scrollLeft() + n.scrollSpeed)))),
7097          o !== !1 &&
7098            t.ui.ddmanager &&
7099            !n.dropBehaviour &&
7100            t.ui.ddmanager.prepareOffsets(s, e);
7101      },
7102    }),
7103    t.ui.plugin.add("draggable", "snap", {
7104      start: function (e, i, s) {
7105        var n = s.options;
7106        (s.snapElements = []),
7107          t(
7108            n.snap.constructor !== String
7109              ? n.snap.items || ":data(ui-draggable)"
7110              : n.snap,
7111          ).each(function () {
7112            var e = t(this),
7113              i = e.offset();
7114            this !== s.element[0] &&
7115              s.snapElements.push({
7116                item: this,
7117                width: e.outerWidth(),
7118                height: e.outerHeight(),
7119                top: i.top,
7120                left: i.left,
7121              });
7122          });
7123      },
7124      drag: function (e, i, s) {
7125        var n,
7126          o,
7127          a,
7128          r,
7129          h,
7130          l,
7131          c,
7132          u,
7133          d,
7134          p,
7135          f = s.options,
7136          g = f.snapTolerance,
7137          m = i.offset.left,
7138          _ = m + s.helperProportions.width,
7139          v = i.offset.top,
7140          b = v + s.helperProportions.height;
7141        for (d = s.snapElements.length - 1; d >= 0; d--)
7142          (h = s.snapElements[d].left - s.margins.left),
7143            (l = h + s.snapElements[d].width),
7144            (c = s.snapElements[d].top - s.margins.top),
7145            (u = c + s.snapElements[d].height),
7146            h - g > _ ||
7147            m > l + g ||
7148            c - g > b ||
7149            v > u + g ||
7150            !t.contains(
7151              s.snapElements[d].item.ownerDocument,
7152              s.snapElements[d].item,
7153            )
7154              ? (s.snapElements[d].snapping &&
7155                  s.options.snap.release &&
7156                  s.options.snap.release.call(
7157                    s.element,
7158                    e,
7159                    t.extend(s._uiHash(), { snapItem: s.snapElements[d].item }),
7160                  ),
7161                (s.snapElements[d].snapping = !1))
7162              : ("inner" !== f.snapMode &&
7163                  ((n = g >= Math.abs(c - b)),
7164                  (o = g >= Math.abs(u - v)),
7165                  (a = g >= Math.abs(h - _)),
7166                  (r = g >= Math.abs(l - m)),
7167                  n &&
7168                    (i.position.top = s._convertPositionTo("relative", {
7169                      top: c - s.helperProportions.height,
7170                      left: 0,
7171                    }).top),
7172                  o &&
7173                    (i.position.top = s._convertPositionTo("relative", {
7174                      top: u,
7175                      left: 0,
7176                    }).top),
7177                  a &&
7178                    (i.position.left = s._convertPositionTo("relative", {
7179                      top: 0,
7180                      left: h - s.helperProportions.width,
7181                    }).left),
7182                  r &&
7183                    (i.position.left = s._convertPositionTo("relative", {
7184                      top: 0,
7185                      left: l,
7186                    }).left)),
7187                (p = n || o || a || r),
7188                "outer" !== f.snapMode &&
7189                  ((n = g >= Math.abs(c - v)),
7190                  (o = g >= Math.abs(u - b)),
7191                  (a = g >= Math.abs(h - m)),
7192                  (r = g >= Math.abs(l - _)),
7193                  n &&
7194                    (i.position.top = s._convertPositionTo("relative", {
7195                      top: c,
7196                      left: 0,
7197                    }).top),
7198                  o &&
7199                    (i.position.top = s._convertPositionTo("relative", {
7200                      top: u - s.helperProportions.height,
7201                      left: 0,
7202                    }).top),
7203                  a &&
7204                    (i.position.left = s._convertPositionTo("relative", {
7205                      top: 0,
7206                      left: h,
7207                    }).left),
7208                  r &&
7209                    (i.position.left = s._convertPositionTo("relative", {
7210                      top: 0,
7211                      left: l - s.helperProportions.width,
7212                    }).left)),
7213                !s.snapElements[d].snapping &&
7214                  (n || o || a || r || p) &&
7215                  s.options.snap.snap &&
7216                  s.options.snap.snap.call(
7217                    s.element,
7218                    e,
7219                    t.extend(s._uiHash(), { snapItem: s.snapElements[d].item }),
7220                  ),
7221                (s.snapElements[d].snapping = n || o || a || r || p));
7222      },
7223    }),
7224    t.ui.plugin.add("draggable", "stack", {
7225      start: function (e, i, s) {
7226        var n,
7227          o = s.options,
7228          a = t.makeArray(t(o.stack)).sort(function (e, i) {
7229            return (
7230              (parseInt(t(e).css("zIndex"), 10) || 0) -
7231              (parseInt(t(i).css("zIndex"), 10) || 0)
7232            );
7233          });
7234        a.length &&
7235          ((n = parseInt(t(a[0]).css("zIndex"), 10) || 0),
7236          t(a).each(function (e) {
7237            t(this).css("zIndex", n + e);
7238          }),
7239          this.css("zIndex", n + a.length));
7240      },
7241    }),
7242    t.ui.plugin.add("draggable", "zIndex", {
7243      start: function (e, i, s) {
7244        var n = t(i.helper),
7245          o = s.options;
7246        n.css("zIndex") && (o._zIndex = n.css("zIndex")),
7247          n.css("zIndex", o.zIndex);
7248      },
7249      stop: function (e, i, s) {
7250        var n = s.options;
7251        n._zIndex && t(i.helper).css("zIndex", n._zIndex);
7252      },
7253    }),
7254    t.ui.draggable,
7255    t.widget("ui.resizable", t.ui.mouse, {
7256      version: "1.12.1",
7257      widgetEventPrefix: "resize",
7258      options: {
7259        alsoResize: !1,
7260        animate: !1,
7261        animateDuration: "slow",
7262        animateEasing: "swing",
7263        aspectRatio: !1,
7264        autoHide: !1,
7265        classes: { "ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se" },
7266        containment: !1,
7267        ghost: !1,
7268        grid: !1,
7269        handles: "e,s,se",
7270        helper: !1,
7271        maxHeight: null,
7272        maxWidth: null,
7273        minHeight: 10,
7274        minWidth: 10,
7275        zIndex: 90,
7276        resize: null,
7277        start: null,
7278        stop: null,
7279      },
7280      _num: function (t) {
7281        return parseFloat(t) || 0;
7282      },
7283      _isNumber: function (t) {
7284        return !isNaN(parseFloat(t));
7285      },
7286      _hasScroll: function (e, i) {
7287        if ("hidden" === t(e).css("overflow")) return !1;
7288        var s = i && "left" === i ? "scrollLeft" : "scrollTop",
7289          n = !1;
7290        return e[s] > 0 ? !0 : ((e[s] = 1), (n = e[s] > 0), (e[s] = 0), n);
7291      },
7292      _create: function () {
7293        var e,
7294          i = this.options,
7295          s = this;
7296        this._addClass("ui-resizable"),
7297          t.extend(this, {
7298            _aspectRatio: !!i.aspectRatio,
7299            aspectRatio: i.aspectRatio,
7300            originalElement: this.element,
7301            _proportionallyResizeElements: [],
7302            _helper:
7303              i.helper || i.ghost || i.animate
7304                ? i.helper || "ui-resizable-helper"
7305                : null,
7306          }),
7307          this.element[0].nodeName.match(
7308            /^(canvas|textarea|input|select|button|img)$/i,
7309          ) &&
7310            (this.element.wrap(
7311              t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css(
7312                {
7313                  position: this.element.css("position"),
7314                  width: this.element.outerWidth(),
7315                  height: this.element.outerHeight(),
7316                  top: this.element.css("top"),
7317                  left: this.element.css("left"),
7318                },
7319              ),
7320            ),
7321            (this.element = this.element
7322              .parent()
7323              .data("ui-resizable", this.element.resizable("instance"))),
7324            (this.elementIsWrapper = !0),
7325            (e = {
7326              marginTop: this.originalElement.css("marginTop"),
7327              marginRight: this.originalElement.css("marginRight"),
7328              marginBottom: this.originalElement.css("marginBottom"),
7329              marginLeft: this.originalElement.css("marginLeft"),
7330            }),
7331            this.element.css(e),
7332            this.originalElement.css("margin", 0),
7333            (this.originalResizeStyle = this.originalElement.css("resize")),
7334            this.originalElement.css("resize", "none"),
7335            this._proportionallyResizeElements.push(
7336              this.originalElement.css({
7337                position: "static",
7338                zoom: 1,
7339                display: "block",
7340              }),
7341            ),
7342            this.originalElement.css(e),
7343            this._proportionallyResize()),
7344          this._setupHandles(),
7345          i.autoHide &&
7346            t(this.element)
7347              .on("mouseenter", function () {
7348                i.disabled ||
7349                  (s._removeClass("ui-resizable-autohide"), s._handles.show());
7350              })
7351              .on("mouseleave", function () {
7352                i.disabled ||
7353                  s.resizing ||
7354                  (s._addClass("ui-resizable-autohide"), s._handles.hide());
7355              }),
7356          this._mouseInit();
7357      },
7358      _destroy: function () {
7359        this._mouseDestroy();
7360        var e,
7361          i = function (e) {
7362            t(e)
7363              .removeData("resizable")
7364              .removeData("ui-resizable")
7365              .off(".resizable")
7366              .find(".ui-resizable-handle")
7367              .remove();
7368          };
7369        return (
7370          this.elementIsWrapper &&
7371            (i(this.element),
7372            (e = this.element),
7373            this.originalElement
7374              .css({
7375                position: e.css("position"),
7376                width: e.outerWidth(),
7377                height: e.outerHeight(),
7378                top: e.css("top"),
7379                left: e.css("left"),
7380              })
7381              .insertAfter(e),
7382            e.remove()),
7383          this.originalElement.css("resize", this.originalResizeStyle),
7384          i(this.originalElement),
7385          this
7386        );
7387      },
7388      _setOption: function (t, e) {
7389        switch ((this._super(t, e), t)) {
7390          case "handles":
7391            this._removeHandles(), this._setupHandles();
7392            break;
7393          default:
7394        }
7395      },
7396      _setupHandles: function () {
7397        var e,
7398          i,
7399          s,
7400          n,
7401          o,
7402          a = this.options,
7403          r = this;
7404        if (
7405          ((this.handles =
7406            a.handles ||
7407            (t(".ui-resizable-handle", this.element).length
7408              ? {
7409                  n: ".ui-resizable-n",
7410                  e: ".ui-resizable-e",
7411                  s: ".ui-resizable-s",
7412                  w: ".ui-resizable-w",
7413                  se: ".ui-resizable-se",
7414                  sw: ".ui-resizable-sw",
7415                  ne: ".ui-resizable-ne",
7416                  nw: ".ui-resizable-nw",
7417                }
7418              : "e,s,se")),
7419          (this._handles = t()),
7420          this.handles.constructor === String)
7421        )
7422          for (
7423            "all" === this.handles && (this.handles = "n,e,s,w,se,sw,ne,nw"),
7424              s = this.handles.split(","),
7425              this.handles = {},
7426              i = 0;
7427            s.length > i;
7428            i++
7429          )
7430            (e = t.trim(s[i])),
7431              (n = "ui-resizable-" + e),
7432              (o = t("<div>")),
7433              this._addClass(o, "ui-resizable-handle " + n),
7434              o.css({ zIndex: a.zIndex }),
7435              (this.handles[e] = ".ui-resizable-" + e),
7436              this.element.append(o);
7437        (this._renderAxis = function (e) {
7438          var i, s, n, o;
7439          e = e || this.element;
7440          for (i in this.handles)
7441            this.handles[i].constructor === String
7442              ? (this.handles[i] = this.element
7443                  .children(this.handles[i])
7444                  .first()
7445                  .show())
7446              : (this.handles[i].jquery || this.handles[i].nodeType) &&
7447                ((this.handles[i] = t(this.handles[i])),
7448                this._on(this.handles[i], { mousedown: r._mouseDown })),
7449              this.elementIsWrapper &&
7450                this.originalElement[0].nodeName.match(
7451                  /^(textarea|input|select|button)$/i,
7452                ) &&
7453                ((s = t(this.handles[i], this.element)),
7454                (o = /sw|ne|nw|se|n|s/.test(i)
7455                  ? s.outerHeight()
7456                  : s.outerWidth()),
7457                (n = [
7458                  "padding",
7459                  /ne|nw|n/.test(i)
7460                    ? "Top"
7461                    : /se|sw|s/.test(i)
7462                      ? "Bottom"
7463                      : /^e$/.test(i)
7464                        ? "Right"
7465                        : "Left",
7466                ].join("")),
7467                e.css(n, o),
7468                this._proportionallyResize()),
7469              (this._handles = this._handles.add(this.handles[i]));
7470        }),
7471          this._renderAxis(this.element),
7472          (this._handles = this._handles.add(
7473            this.element.find(".ui-resizable-handle"),
7474          )),
7475          this._handles.disableSelection(),
7476          this._handles.on("mouseover", function () {
7477            r.resizing ||
7478              (this.className &&
7479                (o = this.className.match(
7480                  /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i,
7481                )),
7482              (r.axis = o && o[1] ? o[1] : "se"));
7483          }),
7484          a.autoHide &&
7485            (this._handles.hide(), this._addClass("ui-resizable-autohide"));
7486      },
7487      _removeHandles: function () {
7488        this._handles.remove();
7489      },
7490      _mouseCapture: function (e) {
7491        var i,
7492          s,
7493          n = !1;
7494        for (i in this.handles)
7495          (s = t(this.handles[i])[0]),
7496            (s === e.target || t.contains(s, e.target)) && (n = !0);
7497        return !this.options.disabled && n;
7498      },
7499      _mouseStart: function (e) {
7500        var i,
7501          s,
7502          n,
7503          o = this.options,
7504          a = this.element;
7505        return (
7506          (this.resizing = !0),
7507          this._renderProxy(),
7508          (i = this._num(this.helper.css("left"))),
7509          (s = this._num(this.helper.css("top"))),
7510          o.containment &&
7511            ((i += t(o.containment).scrollLeft() || 0),
7512            (s += t(o.containment).scrollTop() || 0)),
7513          (this.offset = this.helper.offset()),
7514          (this.position = { left: i, top: s }),
7515          (this.size = this._helper
7516            ? { width: this.helper.width(), height: this.helper.height() }
7517            : { width: a.width(), height: a.height() }),
7518          (this.originalSize = this._helper
7519            ? { width: a.outerWidth(), height: a.outerHeight() }
7520            : { width: a.width(), height: a.height() }),
7521          (this.sizeDiff = {
7522            width: a.outerWidth() - a.width(),
7523            height: a.outerHeight() - a.height(),
7524          }),
7525          (this.originalPosition = { left: i, top: s }),
7526          (this.originalMousePosition = { left: e.pageX, top: e.pageY }),
7527          (this.aspectRatio =
7528            "number" == typeof o.aspectRatio
7529              ? o.aspectRatio
7530              : this.originalSize.width / this.originalSize.height || 1),
7531          (n = t(".ui-resizable-" + this.axis).css("cursor")),
7532          t("body").css("cursor", "auto" === n ? this.axis + "-resize" : n),
7533          this._addClass("ui-resizable-resizing"),
7534          this._propagate("start", e),
7535          !0
7536        );
7537      },
7538      _mouseDrag: function (e) {
7539        var i,
7540          s,
7541          n = this.originalMousePosition,
7542          o = this.axis,
7543          a = e.pageX - n.left || 0,
7544          r = e.pageY - n.top || 0,
7545          h = this._change[o];
7546        return (
7547          this._updatePrevProperties(),
7548          h
7549            ? ((i = h.apply(this, [e, a, r])),
7550              this._updateVirtualBoundaries(e.shiftKey),
7551              (this._aspectRatio || e.shiftKey) &&
7552                (i = this._updateRatio(i, e)),
7553              (i = this._respectSize(i, e)),
7554              this._updateCache(i),
7555              this._propagate("resize", e),
7556              (s = this._applyChanges()),
7557              !this._helper &&
7558                this._proportionallyResizeElements.length &&
7559                this._proportionallyResize(),
7560              t.isEmptyObject(s) ||
7561                (this._updatePrevProperties(),
7562                this._trigger("resize", e, this.ui()),
7563                this._applyChanges()),
7564              !1)
7565            : !1
7566        );
7567      },
7568      _mouseStop: function (e) {
7569        this.resizing = !1;
7570        var i,
7571          s,
7572          n,
7573          o,
7574          a,
7575          r,
7576          h,
7577          l = this.options,
7578          c = this;
7579        return (
7580          this._helper &&
7581            ((i = this._proportionallyResizeElements),
7582            (s = i.length && /textarea/i.test(i[0].nodeName)),
7583            (n = s && this._hasScroll(i[0], "left") ? 0 : c.sizeDiff.height),
7584            (o = s ? 0 : c.sizeDiff.width),
7585            (a = {
7586              width: c.helper.width() - o,
7587              height: c.helper.height() - n,
7588            }),
7589            (r =
7590              parseFloat(c.element.css("left")) +
7591                (c.position.left - c.originalPosition.left) || null),
7592            (h =
7593              parseFloat(c.element.css("top")) +
7594                (c.position.top - c.originalPosition.top) || null),
7595            l.animate || this.element.css(t.extend(a, { top: h, left: r })),
7596            c.helper.height(c.size.height),
7597            c.helper.width(c.size.width),
7598            this._helper && !l.animate && this._proportionallyResize()),
7599          t("body").css("cursor", "auto"),
7600          this._removeClass("ui-resizable-resizing"),
7601          this._propagate("stop", e),
7602          this._helper && this.helper.remove(),
7603          !1
7604        );
7605      },
7606      _updatePrevProperties: function () {
7607        (this.prevPosition = {
7608          top: this.position.top,
7609          left: this.position.left,
7610        }),
7611          (this.prevSize = {
7612            width: this.size.width,
7613            height: this.size.height,
7614          });
7615      },
7616      _applyChanges: function () {
7617        var t = {};
7618        return (
7619          this.position.top !== this.prevPosition.top &&
7620            (t.top = this.position.top + "px"),
7621          this.position.left !== this.prevPosition.left &&
7622            (t.left = this.position.left + "px"),
7623          this.size.width !== this.prevSize.width &&
7624            (t.width = this.size.width + "px"),
7625          this.size.height !== this.prevSize.height &&
7626            (t.height = this.size.height + "px"),
7627          this.helper.css(t),
7628          t
7629        );
7630      },
7631      _updateVirtualBoundaries: function (t) {
7632        var e,
7633          i,
7634          s,
7635          n,
7636          o,
7637          a = this.options;
7638        (o = {
7639          minWidth: this._isNumber(a.minWidth) ? a.minWidth : 0,
7640          maxWidth: this._isNumber(a.maxWidth) ? a.maxWidth : 1 / 0,
7641          minHeight: this._isNumber(a.minHeight) ? a.minHeight : 0,
7642          maxHeight: this._isNumber(a.maxHeight) ? a.maxHeight : 1 / 0,
7643        }),
7644          (this._aspectRatio || t) &&
7645            ((e = o.minHeight * this.aspectRatio),
7646            (s = o.minWidth / this.aspectRatio),
7647            (i = o.maxHeight * this.aspectRatio),
7648            (n = o.maxWidth / this.aspectRatio),
7649            e > o.minWidth && (o.minWidth = e),
7650            s > o.minHeight && (o.minHeight = s),
7651            o.maxWidth > i && (o.maxWidth = i),
7652            o.maxHeight > n && (o.maxHeight = n)),
7653          (this._vBoundaries = o);
7654      },
7655      _updateCache: function (t) {
7656        (this.offset = this.helper.offset()),
7657          this._isNumber(t.left) && (this.position.left = t.left),
7658          this._isNumber(t.top) && (this.position.top = t.top),
7659          this._isNumber(t.height) && (this.size.height = t.height),
7660          this._isNumber(t.width) && (this.size.width = t.width);
7661      },
7662      _updateRatio: function (t) {
7663        var e = this.position,
7664          i = this.size,
7665          s = this.axis;
7666        return (
7667          this._isNumber(t.height)
7668            ? (t.width = t.height * this.aspectRatio)
7669            : this._isNumber(t.width) &&
7670              (t.height = t.width / this.aspectRatio),
7671          "sw" === s &&
7672            ((t.left = e.left + (i.width - t.width)), (t.top = null)),
7673          "nw" === s &&
7674            ((t.top = e.top + (i.height - t.height)),
7675            (t.left = e.left + (i.width - t.width))),
7676          t
7677        );
7678      },
7679      _respectSize: function (t) {
7680        var e = this._vBoundaries,
7681          i = this.axis,
7682          s = this._isNumber(t.width) && e.maxWidth && e.maxWidth < t.width,
7683          n = this._isNumber(t.height) && e.maxHeight && e.maxHeight < t.height,
7684          o = this._isNumber(t.width) && e.minWidth && e.minWidth > t.width,
7685          a = this._isNumber(t.height) && e.minHeight && e.minHeight > t.height,
7686          r = this.originalPosition.left + this.originalSize.width,
7687          h = this.originalPosition.top + this.originalSize.height,
7688          l = /sw|nw|w/.test(i),
7689          c = /nw|ne|n/.test(i);
7690        return (
7691          o && (t.width = e.minWidth),
7692          a && (t.height = e.minHeight),
7693          s && (t.width = e.maxWidth),
7694          n && (t.height = e.maxHeight),
7695          o && l && (t.left = r - e.minWidth),
7696          s && l && (t.left = r - e.maxWidth),
7697          a && c && (t.top = h - e.minHeight),
7698          n && c && (t.top = h - e.maxHeight),
7699          t.width || t.height || t.left || !t.top
7700            ? t.width || t.height || t.top || !t.left || (t.left = null)
7701            : (t.top = null),
7702          t
7703        );
7704      },
7705      _getPaddingPlusBorderDimensions: function (t) {
7706        for (
7707          var e = 0,
7708            i = [],
7709            s = [
7710              t.css("borderTopWidth"),
7711              t.css("borderRightWidth"),
7712              t.css("borderBottomWidth"),
7713              t.css("borderLeftWidth"),
7714            ],
7715            n = [
7716              t.css("paddingTop"),
7717              t.css("paddingRight"),
7718              t.css("paddingBottom"),
7719              t.css("paddingLeft"),
7720            ];
7721          4 > e;
7722          e++
7723        )
7724          (i[e] = parseFloat(s[e]) || 0), (i[e] += parseFloat(n[e]) || 0);
7725        return { height: i[0] + i[2], width: i[1] + i[3] };
7726      },
7727      _proportionallyResize: function () {
7728        if (this._proportionallyResizeElements.length)
7729          for (
7730            var t, e = 0, i = this.helper || this.element;
7731            this._proportionallyResizeElements.length > e;
7732            e++
7733          )
7734            (t = this._proportionallyResizeElements[e]),
7735              this.outerDimensions ||
7736                (this.outerDimensions =
7737                  this._getPaddingPlusBorderDimensions(t)),
7738              t.css({
7739                height: i.height() - this.outerDimensions.height || 0,
7740                width: i.width() - this.outerDimensions.width || 0,
7741              });
7742      },
7743      _renderProxy: function () {
7744        var e = this.element,
7745          i = this.options;
7746        (this.elementOffset = e.offset()),
7747          this._helper
7748            ? ((this.helper =
7749                this.helper || t("<div style='overflow:hidden;'></div>")),
7750              this._addClass(this.helper, this._helper),
7751              this.helper.css({
7752                width: this.element.outerWidth(),
7753                height: this.element.outerHeight(),
7754                position: "absolute",
7755                left: this.elementOffset.left + "px",
7756                top: this.elementOffset.top + "px",
7757                zIndex: ++i.zIndex,
7758              }),
7759              this.helper.appendTo("body").disableSelection())
7760            : (this.helper = this.element);
7761      },
7762      _change: {
7763        e: function (t, e) {
7764          return { width: this.originalSize.width + e };
7765        },
7766        w: function (t, e) {
7767          var i = this.originalSize,
7768            s = this.originalPosition;
7769          return { left: s.left + e, width: i.width - e };
7770        },
7771        n: function (t, e, i) {
7772          var s = this.originalSize,
7773            n = this.originalPosition;
7774          return { top: n.top + i, height: s.height - i };
7775        },
7776        s: function (t, e, i) {
7777          return { height: this.originalSize.height + i };
7778        },
7779        se: function (e, i, s) {
7780          return t.extend(
7781            this._change.s.apply(this, arguments),
7782            this._change.e.apply(this, [e, i, s]),
7783          );
7784        },
7785        sw: function (e, i, s) {
7786          return t.extend(
7787            this._change.s.apply(this, arguments),
7788            this._change.w.apply(this, [e, i, s]),
7789          );
7790        },
7791        ne: function (e, i, s) {
7792          return t.extend(
7793            this._change.n.apply(this, arguments),
7794            this._change.e.apply(this, [e, i, s]),
7795          );
7796        },
7797        nw: function (e, i, s) {
7798          return t.extend(
7799            this._change.n.apply(this, arguments),
7800            this._change.w.apply(this, [e, i, s]),
7801          );
7802        },
7803      },
7804      _propagate: function (e, i) {
7805        t.ui.plugin.call(this, e, [i, this.ui()]),
7806          "resize" !== e && this._trigger(e, i, this.ui());
7807      },
7808      plugins: {},
7809      ui: function () {
7810        return {
7811          originalElement: this.originalElement,
7812          element: this.element,
7813          helper: this.helper,
7814          position: this.position,
7815          size: this.size,
7816          originalSize: this.originalSize,
7817          originalPosition: this.originalPosition,
7818        };
7819      },
7820    }),
7821    t.ui.plugin.add("resizable", "animate", {
7822      stop: function (e) {
7823        var i = t(this).resizable("instance"),
7824          s = i.options,
7825          n = i._proportionallyResizeElements,
7826          o = n.length && /textarea/i.test(n[0].nodeName),
7827          a = o && i._hasScroll(n[0], "left") ? 0 : i.sizeDiff.height,
7828          r = o ? 0 : i.sizeDiff.width,
7829          h = { width: i.size.width - r, height: i.size.height - a },
7830          l =
7831            parseFloat(i.element.css("left")) +
7832              (i.position.left - i.originalPosition.left) || null,
7833          c =
7834            parseFloat(i.element.css("top")) +
7835              (i.position.top - i.originalPosition.top) || null;
7836        i.element.animate(t.extend(h, c && l ? { top: c, left: l } : {}), {
7837          duration: s.animateDuration,
7838          easing: s.animateEasing,
7839          step: function () {
7840            var s = {
7841              width: parseFloat(i.element.css("width")),
7842              height: parseFloat(i.element.css("height")),
7843              top: parseFloat(i.element.css("top")),
7844              left: parseFloat(i.element.css("left")),
7845            };
7846            n && n.length && t(n[0]).css({ width: s.width, height: s.height }),
7847              i._updateCache(s),
7848              i._propagate("resize", e);
7849          },
7850        });
7851      },
7852    }),
7853    t.ui.plugin.add("resizable", "containment", {
7854      start: function () {
7855        var e,
7856          i,
7857          s,
7858          n,
7859          o,
7860          a,
7861          r,
7862          h = t(this).resizable("instance"),
7863          l = h.options,
7864          c = h.element,
7865          u = l.containment,
7866          d =
7867            u instanceof t
7868              ? u.get(0)
7869              : /parent/.test(u)
7870                ? c.parent().get(0)
7871                : u;
7872        d &&
7873          ((h.containerElement = t(d)),
7874          /document/.test(u) || u === document
7875            ? ((h.containerOffset = { left: 0, top: 0 }),
7876              (h.containerPosition = { left: 0, top: 0 }),
7877              (h.parentData = {
7878                element: t(document),
7879                left: 0,
7880                top: 0,
7881                width: t(document).width(),
7882                height:
7883                  t(document).height() || document.body.parentNode.scrollHeight,
7884              }))
7885            : ((e = t(d)),
7886              (i = []),
7887              t(["Top", "Right", "Left", "Bottom"]).each(function (t, s) {
7888                i[t] = h._num(e.css("padding" + s));
7889              }),
7890              (h.containerOffset = e.offset()),
7891              (h.containerPosition = e.position()),
7892              (h.containerSize = {
7893                height: e.innerHeight() - i[3],
7894                width: e.innerWidth() - i[1],
7895              }),
7896              (s = h.containerOffset),
7897              (n = h.containerSize.height),
7898              (o = h.containerSize.width),
7899              (a = h._hasScroll(d, "left") ? d.scrollWidth : o),
7900              (r = h._hasScroll(d) ? d.scrollHeight : n),
7901              (h.parentData = {
7902                element: d,
7903                left: s.left,
7904                top: s.top,
7905                width: a,
7906                height: r,
7907              })));
7908      },
7909      resize: function (e) {
7910        var i,
7911          s,
7912          n,
7913          o,
7914          a = t(this).resizable("instance"),
7915          r = a.options,
7916          h = a.containerOffset,
7917          l = a.position,
7918          c = a._aspectRatio || e.shiftKey,
7919          u = { top: 0, left: 0 },
7920          d = a.containerElement,
7921          p = !0;
7922        d[0] !== document && /static/.test(d.css("position")) && (u = h),
7923          l.left < (a._helper ? h.left : 0) &&
7924            ((a.size.width =
7925              a.size.width +
7926              (a._helper
7927                ? a.position.left - h.left
7928                : a.position.left - u.left)),
7929            c && ((a.size.height = a.size.width / a.aspectRatio), (p = !1)),
7930            (a.position.left = r.helper ? h.left : 0)),
7931          l.top < (a._helper ? h.top : 0) &&
7932            ((a.size.height =
7933              a.size.height +
7934              (a._helper ? a.position.top - h.top : a.position.top)),
7935            c && ((a.size.width = a.size.height * a.aspectRatio), (p = !1)),
7936            (a.position.top = a._helper ? h.top : 0)),
7937          (n = a.containerElement.get(0) === a.element.parent().get(0)),
7938          (o = /relative|absolute/.test(a.containerElement.css("position"))),
7939          n && o
7940            ? ((a.offset.left = a.parentData.left + a.position.left),
7941              (a.offset.top = a.parentData.top + a.position.top))
7942            : ((a.offset.left = a.element.offset().left),
7943              (a.offset.top = a.element.offset().top)),
7944          (i = Math.abs(
7945            a.sizeDiff.width +
7946              (a._helper ? a.offset.left - u.left : a.offset.left - h.left),
7947          )),
7948          (s = Math.abs(
7949            a.sizeDiff.height +
7950              (a._helper ? a.offset.top - u.top : a.offset.top - h.top),
7951          )),
7952          i + a.size.width >= a.parentData.width &&
7953            ((a.size.width = a.parentData.width - i),
7954            c && ((a.size.height = a.size.width / a.aspectRatio), (p = !1))),
7955          s + a.size.height >= a.parentData.height &&
7956            ((a.size.height = a.parentData.height - s),
7957            c && ((a.size.width = a.size.height * a.aspectRatio), (p = !1))),
7958          p ||
7959            ((a.position.left = a.prevPosition.left),
7960            (a.position.top = a.prevPosition.top),
7961            (a.size.width = a.prevSize.width),
7962            (a.size.height = a.prevSize.height));
7963      },
7964      stop: function () {
7965        var e = t(this).resizable("instance"),
7966          i = e.options,
7967          s = e.containerOffset,
7968          n = e.containerPosition,
7969          o = e.containerElement,
7970          a = t(e.helper),
7971          r = a.offset(),
7972          h = a.outerWidth() - e.sizeDiff.width,
7973          l = a.outerHeight() - e.sizeDiff.height;
7974        e._helper &&
7975          !i.animate &&
7976          /relative/.test(o.css("position")) &&
7977          t(this).css({ left: r.left - n.left - s.left, width: h, height: l }),
7978          e._helper &&
7979            !i.animate &&
7980            /static/.test(o.css("position")) &&
7981            t(this).css({
7982              left: r.left - n.left - s.left,
7983              width: h,
7984              height: l,
7985            });
7986      },
7987    }),
7988    t.ui.plugin.add("resizable", "alsoResize", {
7989      start: function () {
7990        var e = t(this).resizable("instance"),
7991          i = e.options;
7992        t(i.alsoResize).each(function () {
7993          var e = t(this);
7994          e.data("ui-resizable-alsoresize", {
7995            width: parseFloat(e.width()),
7996            height: parseFloat(e.height()),
7997            left: parseFloat(e.css("left")),
7998            top: parseFloat(e.css("top")),
7999          });
8000        });
8001      },
8002      resize: function (e, i) {
8003        var s = t(this).resizable("instance"),
8004          n = s.options,
8005          o = s.originalSize,
8006          a = s.originalPosition,
8007          r = {
8008            height: s.size.height - o.height || 0,
8009            width: s.size.width - o.width || 0,
8010            top: s.position.top - a.top || 0,
8011            left: s.position.left - a.left || 0,
8012          };
8013        t(n.alsoResize).each(function () {
8014          var e = t(this),
8015            s = t(this).data("ui-resizable-alsoresize"),
8016            n = {},
8017            o = e.parents(i.originalElement[0]).length
8018              ? ["width", "height"]
8019              : ["width", "height", "top", "left"];
8020          t.each(o, function (t, e) {
8021            var i = (s[e] || 0) + (r[e] || 0);
8022            i && i >= 0 && (n[e] = i || null);
8023          }),
8024            e.css(n);
8025        });
8026      },
8027      stop: function () {
8028        t(this).removeData("ui-resizable-alsoresize");
8029      },
8030    }),
8031    t.ui.plugin.add("resizable", "ghost", {
8032      start: function () {
8033        var e = t(this).resizable("instance"),
8034          i = e.size;
8035        (e.ghost = e.originalElement.clone()),
8036          e.ghost.css({
8037            opacity: 0.25,
8038            display: "block",
8039            position: "relative",
8040            height: i.height,
8041            width: i.width,
8042            margin: 0,
8043            left: 0,
8044            top: 0,
8045          }),
8046          e._addClass(e.ghost, "ui-resizable-ghost"),
8047          t.uiBackCompat !== !1 &&
8048            "string" == typeof e.options.ghost &&
8049            e.ghost.addClass(this.options.ghost),
8050          e.ghost.appendTo(e.helper);
8051      },
8052      resize: function () {
8053        var e = t(this).resizable("instance");
8054        e.ghost &&
8055          e.ghost.css({
8056            position: "relative",
8057            height: e.size.height,
8058            width: e.size.width,
8059          });
8060      },
8061      stop: function () {
8062        var e = t(this).resizable("instance");
8063        e.ghost && e.helper && e.helper.get(0).removeChild(e.ghost.get(0));
8064      },
8065    }),
8066    t.ui.plugin.add("resizable", "grid", {
8067      resize: function () {
8068        var e,
8069          i = t(this).resizable("instance"),
8070          s = i.options,
8071          n = i.size,
8072          o = i.originalSize,
8073          a = i.originalPosition,
8074          r = i.axis,
8075          h = "number" == typeof s.grid ? [s.grid, s.grid] : s.grid,
8076          l = h[0] || 1,
8077          c = h[1] || 1,
8078          u = Math.round((n.width - o.width) / l) * l,
8079          d = Math.round((n.height - o.height) / c) * c,
8080          p = o.width + u,
8081          f = o.height + d,
8082          g = s.maxWidth && p > s.maxWidth,
8083          m = s.maxHeight && f > s.maxHeight,
8084          _ = s.minWidth && s.minWidth > p,
8085          v = s.minHeight && s.minHeight > f;
8086        (s.grid = h),
8087          _ && (p += l),
8088          v && (f += c),
8089          g && (p -= l),
8090          m && (f -= c),
8091          /^(se|s|e)$/.test(r)
8092            ? ((i.size.width = p), (i.size.height = f))
8093            : /^(ne)$/.test(r)
8094              ? ((i.size.width = p),
8095                (i.size.height = f),
8096                (i.position.top = a.top - d))
8097              : /^(sw)$/.test(r)
8098                ? ((i.size.width = p),
8099                  (i.size.height = f),
8100                  (i.position.left = a.left - u))
8101                : ((0 >= f - c || 0 >= p - l) &&
8102                    (e = i._getPaddingPlusBorderDimensions(this)),
8103                  f - c > 0
8104                    ? ((i.size.height = f), (i.position.top = a.top - d))
8105                    : ((f = c - e.height),
8106                      (i.size.height = f),
8107                      (i.position.top = a.top + o.height - f)),
8108                  p - l > 0
8109                    ? ((i.size.width = p), (i.position.left = a.left - u))
8110                    : ((p = l - e.width),
8111                      (i.size.width = p),
8112                      (i.position.left = a.left + o.width - p)));
8113      },
8114    }),
8115    t.ui.resizable,
8116    t.widget("ui.dialog", {
8117      version: "1.12.1",
8118      options: {
8119        appendTo: "body",
8120        autoOpen: !0,
8121        buttons: [],
8122        classes: {
8123          "ui-dialog": "ui-corner-all",
8124          "ui-dialog-titlebar": "ui-corner-all",
8125        },
8126        closeOnEscape: !0,
8127        closeText: "Close",
8128        draggable: !0,
8129        hide: null,
8130        height: "auto",
8131        maxHeight: null,
8132        maxWidth: null,
8133        minHeight: 150,
8134        minWidth: 150,
8135        modal: !1,
8136        position: {
8137          my: "center",
8138          at: "center",
8139          of: window,
8140          collision: "fit",
8141          using: function (e) {
8142            var i = t(this).css(e).offset().top;
8143            0 > i && t(this).css("top", e.top - i);
8144          },
8145        },
8146        resizable: !0,
8147        show: null,
8148        title: null,
8149        width: 300,
8150        beforeClose: null,
8151        close: null,
8152        drag: null,
8153        dragStart: null,
8154        dragStop: null,
8155        focus: null,
8156        open: null,
8157        resize: null,
8158        resizeStart: null,
8159        resizeStop: null,
8160      },
8161      sizeRelatedOptions: {
8162        buttons: !0,
8163        height: !0,
8164        maxHeight: !0,
8165        maxWidth: !0,
8166        minHeight: !0,
8167        minWidth: !0,
8168        width: !0,
8169      },
8170      resizableRelatedOptions: {
8171        maxHeight: !0,
8172        maxWidth: !0,
8173        minHeight: !0,
8174        minWidth: !0,
8175      },
8176      _create: function () {
8177        (this.originalCss = {
8178          display: this.element[0].style.display,
8179          width: this.element[0].style.width,
8180          minHeight: this.element[0].style.minHeight,
8181          maxHeight: this.element[0].style.maxHeight,
8182          height: this.element[0].style.height,
8183        }),
8184          (this.originalPosition = {
8185            parent: this.element.parent(),
8186            index: this.element.parent().children().index(this.element),
8187          }),
8188          (this.originalTitle = this.element.attr("title")),
8189          null == this.options.title &&
8190            null != this.originalTitle &&
8191            (this.options.title = this.originalTitle),
8192          this.options.disabled && (this.options.disabled = !1),
8193          this._createWrapper(),
8194          this.element.show().removeAttr("title").appendTo(this.uiDialog),
8195          this._addClass("ui-dialog-content", "ui-widget-content"),
8196          this._createTitlebar(),
8197          this._createButtonPane(),
8198          this.options.draggable && t.fn.draggable && this._makeDraggable(),
8199          this.options.resizable && t.fn.resizable && this._makeResizable(),
8200          (this._isOpen = !1),
8201          this._trackFocus();
8202      },
8203      _init: function () {
8204        this.options.autoOpen && this.open();
8205      },
8206      _appendTo: function () {
8207        var e = this.options.appendTo;
8208        return e && (e.jquery || e.nodeType)
8209          ? t(e)
8210          : this.document.find(e || "body").eq(0);
8211      },
8212      _destroy: function () {
8213        var t,
8214          e = this.originalPosition;
8215        this._untrackInstance(),
8216          this._destroyOverlay(),
8217          this.element.removeUniqueId().css(this.originalCss).detach(),
8218          this.uiDialog.remove(),
8219          this.originalTitle && this.element.attr("title", this.originalTitle),
8220          (t = e.parent.children().eq(e.index)),
8221          t.length && t[0] !== this.element[0]
8222            ? t.before(this.element)
8223            : e.parent.append(this.element);
8224      },
8225      widget: function () {
8226        return this.uiDialog;
8227      },
8228      disable: t.noop,
8229      enable: t.noop,
8230      close: function (e) {
8231        var i = this;
8232        this._isOpen &&
8233          this._trigger("beforeClose", e) !== !1 &&
8234          ((this._isOpen = !1),
8235          (this._focusedElement = null),
8236          this._destroyOverlay(),
8237          this._untrackInstance(),
8238          this.opener.filter(":focusable").trigger("focus").length ||
8239            t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),
8240          this._hide(this.uiDialog, this.options.hide, function () {
8241            i._trigger("close", e);
8242          }));
8243      },
8244      isOpen: function () {
8245        return this._isOpen;
8246      },
8247      moveToTop: function () {
8248        this._moveToTop();
8249      },
8250      _moveToTop: function (e, i) {
8251        var s = !1,
8252          n = this.uiDialog
8253            .siblings(".ui-front:visible")
8254            .map(function () {
8255              return +t(this).css("z-index");
8256            })
8257            .get(),
8258          o = Math.max.apply(null, n);
8259        return (
8260          o >= +this.uiDialog.css("z-index") &&
8261            (this.uiDialog.css("z-index", o + 1), (s = !0)),
8262          s && !i && this._trigger("focus", e),
8263          s
8264        );
8265      },
8266      open: function () {
8267        var e = this;
8268        return this._isOpen
8269          ? (this._moveToTop() && this._focusTabbable(), void 0)
8270          : ((this._isOpen = !0),
8271            (this.opener = t(t.ui.safeActiveElement(this.document[0]))),
8272            this._size(),
8273            this._position(),
8274            this._createOverlay(),
8275            this._moveToTop(null, !0),
8276            this.overlay &&
8277              this.overlay.css("z-index", this.uiDialog.css("z-index") - 1),
8278            this._show(this.uiDialog, this.options.show, function () {
8279              e._focusTabbable(), e._trigger("focus");
8280            }),
8281            this._makeFocusTarget(),
8282            this._trigger("open"),
8283            void 0);
8284      },
8285      _focusTabbable: function () {
8286        var t = this._focusedElement;
8287        t || (t = this.element.find("[autofocus]")),
8288          t.length || (t = this.element.find(":tabbable")),
8289          t.length || (t = this.uiDialogButtonPane.find(":tabbable")),
8290          t.length || (t = this.uiDialogTitlebarClose.filter(":tabbable")),
8291          t.length || (t = this.uiDialog),
8292          t.eq(0).trigger("focus");
8293      },
8294      _keepFocus: function (e) {
8295        function i() {
8296          var e = t.ui.safeActiveElement(this.document[0]),
8297            i = this.uiDialog[0] === e || t.contains(this.uiDialog[0], e);
8298          i || this._focusTabbable();
8299        }
8300        e.preventDefault(), i.call(this), this._delay(i);
8301      },
8302      _createWrapper: function () {
8303        (this.uiDialog = t("<div>")
8304          .hide()
8305          .attr({ tabIndex: -1, role: "dialog" })
8306          .appendTo(this._appendTo())),
8307          this._addClass(
8308            this.uiDialog,
8309            "ui-dialog",
8310            "ui-widget ui-widget-content ui-front",
8311          ),
8312          this._on(this.uiDialog, {
8313            keydown: function (e) {
8314              if (
8315                this.options.closeOnEscape &&
8316                !e.isDefaultPrevented() &&
8317                e.keyCode &&
8318                e.keyCode === t.ui.keyCode.ESCAPE
8319              )
8320                return e.preventDefault(), this.close(e), void 0;
8321              if (e.keyCode === t.ui.keyCode.TAB && !e.isDefaultPrevented()) {
8322                var i = this.uiDialog.find(":tabbable"),
8323                  s = i.filter(":first"),
8324                  n = i.filter(":last");
8325                (e.target !== n[0] && e.target !== this.uiDialog[0]) ||
8326                e.shiftKey
8327                  ? (e.target !== s[0] && e.target !== this.uiDialog[0]) ||
8328                    !e.shiftKey ||
8329                    (this._delay(function () {
8330                      n.trigger("focus");
8331                    }),
8332                    e.preventDefault())
8333                  : (this._delay(function () {
8334                      s.trigger("focus");
8335                    }),
8336                    e.preventDefault());
8337              }
8338            },
8339            mousedown: function (t) {
8340              this._moveToTop(t) && this._focusTabbable();
8341            },
8342          }),
8343          this.element.find("[aria-describedby]").length ||
8344            this.uiDialog.attr({
8345              "aria-describedby": this.element.uniqueId().attr("id"),
8346            });
8347      },
8348      _createTitlebar: function () {
8349        var e;
8350        (this.uiDialogTitlebar = t("<div>")),
8351          this._addClass(
8352            this.uiDialogTitlebar,
8353            "ui-dialog-titlebar",
8354            "ui-widget-header ui-helper-clearfix",
8355          ),
8356          this._on(this.uiDialogTitlebar, {
8357            mousedown: function (e) {
8358              t(e.target).closest(".ui-dialog-titlebar-close") ||
8359                this.uiDialog.trigger("focus");
8360            },
8361          }),
8362          (this.uiDialogTitlebarClose = t("<button type='button'></button>")
8363            .button({
8364              label: t("<a>").text(this.options.closeText).html(),
8365              icon: "ui-icon-closethick",
8366              showLabel: !1,
8367            })
8368            .appendTo(this.uiDialogTitlebar)),
8369          this._addClass(
8370            this.uiDialogTitlebarClose,
8371            "ui-dialog-titlebar-close",
8372          ),
8373          this._on(this.uiDialogTitlebarClose, {
8374            click: function (t) {
8375              t.preventDefault(), this.close(t);
8376            },
8377          }),
8378          (e = t("<span>").uniqueId().prependTo(this.uiDialogTitlebar)),
8379          this._addClass(e, "ui-dialog-title"),
8380          this._title(e),
8381          this.uiDialogTitlebar.prependTo(this.uiDialog),
8382          this.uiDialog.attr({ "aria-labelledby": e.attr("id") });
8383      },
8384      _title: function (t) {
8385        this.options.title ? t.text(this.options.title) : t.html("&#160;");
8386      },
8387      _createButtonPane: function () {
8388        (this.uiDialogButtonPane = t("<div>")),
8389          this._addClass(
8390            this.uiDialogButtonPane,
8391            "ui-dialog-buttonpane",
8392            "ui-widget-content ui-helper-clearfix",
8393          ),
8394          (this.uiButtonSet = t("<div>").appendTo(this.uiDialogButtonPane)),
8395          this._addClass(this.uiButtonSet, "ui-dialog-buttonset"),
8396          this._createButtons();
8397      },
8398      _createButtons: function () {
8399        var e = this,
8400          i = this.options.buttons;
8401        return (
8402          this.uiDialogButtonPane.remove(),
8403          this.uiButtonSet.empty(),
8404          t.isEmptyObject(i) || (t.isArray(i) && !i.length)
8405            ? (this._removeClass(this.uiDialog, "ui-dialog-buttons"), void 0)
8406            : (t.each(i, function (i, s) {
8407                var n, o;
8408                (s = t.isFunction(s) ? { click: s, text: i } : s),
8409                  (s = t.extend({ type: "button" }, s)),
8410                  (n = s.click),
8411                  (o = {
8412                    icon: s.icon,
8413                    iconPosition: s.iconPosition,
8414                    showLabel: s.showLabel,
8415                    icons: s.icons,
8416                    text: s.text,
8417                  }),
8418                  delete s.click,
8419                  delete s.icon,
8420                  delete s.iconPosition,
8421                  delete s.showLabel,
8422                  delete s.icons,
8423                  "boolean" == typeof s.text && delete s.text,
8424                  t("<button></button>", s)
8425                    .button(o)
8426                    .appendTo(e.uiButtonSet)
8427                    .on("click", function () {
8428                      n.apply(e.element[0], arguments);
8429                    });
8430              }),
8431              this._addClass(this.uiDialog, "ui-dialog-buttons"),
8432              this.uiDialogButtonPane.appendTo(this.uiDialog),
8433              void 0)
8434        );
8435      },
8436      _makeDraggable: function () {
8437        function e(t) {
8438          return { position: t.position, offset: t.offset };
8439        }
8440        var i = this,
8441          s = this.options;
8442        this.uiDialog.draggable({
8443          cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
8444          handle: ".ui-dialog-titlebar",
8445          containment: "document",
8446          start: function (s, n) {
8447            i._addClass(t(this), "ui-dialog-dragging"),
8448              i._blockFrames(),
8449              i._trigger("dragStart", s, e(n));
8450          },
8451          drag: function (t, s) {
8452            i._trigger("drag", t, e(s));
8453          },
8454          stop: function (n, o) {
8455            var a = o.offset.left - i.document.scrollLeft(),
8456              r = o.offset.top - i.document.scrollTop();
8457            (s.position = {
8458              my: "left top",
8459              at:
8460                "left" +
8461                (a >= 0 ? "+" : "") +
8462                a +
8463                " " +
8464                "top" +
8465                (r >= 0 ? "+" : "") +
8466                r,
8467              of: i.window,
8468            }),
8469              i._removeClass(t(this), "ui-dialog-dragging"),
8470              i._unblockFrames(),
8471              i._trigger("dragStop", n, e(o));
8472          },
8473        });
8474      },
8475      _makeResizable: function () {
8476        function e(t) {
8477          return {
8478            originalPosition: t.originalPosition,
8479            originalSize: t.originalSize,
8480            position: t.position,
8481            size: t.size,
8482          };
8483        }
8484        var i = this,
8485          s = this.options,
8486          n = s.resizable,
8487          o = this.uiDialog.css("position"),
8488          a = "string" == typeof n ? n : "n,e,s,w,se,sw,ne,nw";
8489        this.uiDialog
8490          .resizable({
8491            cancel: ".ui-dialog-content",
8492            containment: "document",
8493            alsoResize: this.element,
8494            maxWidth: s.maxWidth,
8495            maxHeight: s.maxHeight,
8496            minWidth: s.minWidth,
8497            minHeight: this._minHeight(),
8498            handles: a,
8499            start: function (s, n) {
8500              i._addClass(t(this), "ui-dialog-resizing"),
8501                i._blockFrames(),
8502                i._trigger("resizeStart", s, e(n));
8503            },
8504            resize: function (t, s) {
8505              i._trigger("resize", t, e(s));
8506            },
8507            stop: function (n, o) {
8508              var a = i.uiDialog.offset(),
8509                r = a.left - i.document.scrollLeft(),
8510                h = a.top - i.document.scrollTop();
8511              (s.height = i.uiDialog.height()),
8512                (s.width = i.uiDialog.width()),
8513                (s.position = {
8514                  my: "left top",
8515                  at:
8516                    "left" +
8517                    (r >= 0 ? "+" : "") +
8518                    r +
8519                    " " +
8520                    "top" +
8521                    (h >= 0 ? "+" : "") +
8522                    h,
8523                  of: i.window,
8524                }),
8525                i._removeClass(t(this), "ui-dialog-resizing"),
8526                i._unblockFrames(),
8527                i._trigger("resizeStop", n, e(o));
8528            },
8529          })
8530          .css("position", o);
8531      },
8532      _trackFocus: function () {
8533        this._on(this.widget(), {
8534          focusin: function (e) {
8535            this._makeFocusTarget(), (this._focusedElement = t(e.target));
8536          },
8537        });
8538      },
8539      _makeFocusTarget: function () {
8540        this._untrackInstance(), this._trackingInstances().unshift(this);
8541      },
8542      _untrackInstance: function () {
8543        var e = this._trackingInstances(),
8544          i = t.inArray(this, e);
8545        -1 !== i && e.splice(i, 1);
8546      },
8547      _trackingInstances: function () {
8548        var t = this.document.data("ui-dialog-instances");
8549        return t || ((t = []), this.document.data("ui-dialog-instances", t)), t;
8550      },
8551      _minHeight: function () {
8552        var t = this.options;
8553        return "auto" === t.height
8554          ? t.minHeight
8555          : Math.min(t.minHeight, t.height);
8556      },
8557      _position: function () {
8558        var t = this.uiDialog.is(":visible");
8559        t || this.uiDialog.show(),
8560          this.uiDialog.position(this.options.position),
8561          t || this.uiDialog.hide();
8562      },
8563      _setOptions: function (e) {
8564        var i = this,
8565          s = !1,
8566          n = {};
8567        t.each(e, function (t, e) {
8568          i._setOption(t, e),
8569            t in i.sizeRelatedOptions && (s = !0),
8570            t in i.resizableRelatedOptions && (n[t] = e);
8571        }),
8572          s && (this._size(), this._position()),
8573          this.uiDialog.is(":data(ui-resizable)") &&
8574            this.uiDialog.resizable("option", n);
8575      },
8576      _setOption: function (e, i) {
8577        var s,
8578          n,
8579          o = this.uiDialog;
8580        "disabled" !== e &&
8581          (this._super(e, i),
8582          "appendTo" === e && this.uiDialog.appendTo(this._appendTo()),
8583          "buttons" === e && this._createButtons(),
8584          "closeText" === e &&
8585            this.uiDialogTitlebarClose.button({
8586              label: t("<a>")
8587                .text("" + this.options.closeText)
8588                .html(),
8589            }),
8590          "draggable" === e &&
8591            ((s = o.is(":data(ui-draggable)")),
8592            s && !i && o.draggable("destroy"),
8593            !s && i && this._makeDraggable()),
8594          "position" === e && this._position(),
8595          "resizable" === e &&
8596            ((n = o.is(":data(ui-resizable)")),
8597            n && !i && o.resizable("destroy"),
8598            n && "string" == typeof i && o.resizable("option", "handles", i),
8599            n || i === !1 || this._makeResizable()),
8600          "title" === e &&
8601            this._title(this.uiDialogTitlebar.find(".ui-dialog-title")));
8602      },
8603      _size: function () {
8604        var t,
8605          e,
8606          i,
8607          s = this.options;
8608        this.element
8609          .show()
8610          .css({ width: "auto", minHeight: 0, maxHeight: "none", height: 0 }),
8611          s.minWidth > s.width && (s.width = s.minWidth),
8612          (t = this.uiDialog
8613            .css({ height: "auto", width: s.width })
8614            .outerHeight()),
8615          (e = Math.max(0, s.minHeight - t)),
8616          (i =
8617            "number" == typeof s.maxHeight
8618              ? Math.max(0, s.maxHeight - t)
8619              : "none"),
8620          "auto" === s.height
8621            ? this.element.css({ minHeight: e, maxHeight: i, height: "auto" })
8622            : this.element.height(Math.max(0, s.height - t)),
8623          this.uiDialog.is(":data(ui-resizable)") &&
8624            this.uiDialog.resizable("option", "minHeight", this._minHeight());
8625      },
8626      _blockFrames: function () {
8627        this.iframeBlocks = this.document.find("iframe").map(function () {
8628          var e = t(this);
8629          return t("<div>")
8630            .css({
8631              position: "absolute",
8632              width: e.outerWidth(),
8633              height: e.outerHeight(),
8634            })
8635            .appendTo(e.parent())
8636            .offset(e.offset())[0];
8637        });
8638      },
8639      _unblockFrames: function () {
8640        this.iframeBlocks &&
8641          (this.iframeBlocks.remove(), delete this.iframeBlocks);
8642      },
8643      _allowInteraction: function (e) {
8644        return t(e.target).closest(".ui-dialog").length
8645          ? !0
8646          : !!t(e.target).closest(".ui-datepicker").length;
8647      },
8648      _createOverlay: function () {
8649        if (this.options.modal) {
8650          var e = !0;
8651          this._delay(function () {
8652            e = !1;
8653          }),
8654            this.document.data("ui-dialog-overlays") ||
8655              this._on(this.document, {
8656                focusin: function (t) {
8657                  e ||
8658                    this._allowInteraction(t) ||
8659                    (t.preventDefault(),
8660                    this._trackingInstances()[0]._focusTabbable());
8661                },
8662              }),
8663            (this.overlay = t("<div>").appendTo(this._appendTo())),
8664            this._addClass(this.overlay, null, "ui-widget-overlay ui-front"),
8665            this._on(this.overlay, { mousedown: "_keepFocus" }),
8666            this.document.data(
8667              "ui-dialog-overlays",
8668              (this.document.data("ui-dialog-overlays") || 0) + 1,
8669            );
8670        }
8671      },
8672      _destroyOverlay: function () {
8673        if (this.options.modal && this.overlay) {
8674          var t = this.document.data("ui-dialog-overlays") - 1;
8675          t
8676            ? this.document.data("ui-dialog-overlays", t)
8677            : (this._off(this.document, "focusin"),
8678              this.document.removeData("ui-dialog-overlays")),
8679            this.overlay.remove(),
8680            (this.overlay = null);
8681        }
8682      },
8683    }),
8684    t.uiBackCompat !== !1 &&
8685      t.widget("ui.dialog", t.ui.dialog, {
8686        options: { dialogClass: "" },
8687        _createWrapper: function () {
8688          this._super(), this.uiDialog.addClass(this.options.dialogClass);
8689        },
8690        _setOption: function (t, e) {
8691          "dialogClass" === t &&
8692            this.uiDialog.removeClass(this.options.dialogClass).addClass(e),
8693            this._superApply(arguments);
8694        },
8695      }),
8696    t.ui.dialog,
8697    t.widget("ui.droppable", {
8698      version: "1.12.1",
8699      widgetEventPrefix: "drop",
8700      options: {
8701        accept: "*",
8702        addClasses: !0,
8703        greedy: !1,
8704        scope: "default",
8705        tolerance: "intersect",
8706        activate: null,
8707        deactivate: null,
8708        drop: null,
8709        out: null,
8710        over: null,
8711      },
8712      _create: function () {
8713        var e,
8714          i = this.options,
8715          s = i.accept;
8716        (this.isover = !1),
8717          (this.isout = !0),
8718          (this.accept = t.isFunction(s)
8719            ? s
8720            : function (t) {
8721                return t.is(s);
8722              }),
8723          (this.proportions = function () {
8724            return arguments.length
8725              ? ((e = arguments[0]), void 0)
8726              : e
8727                ? e
8728                : (e = {
8729                    width: this.element[0].offsetWidth,
8730                    height: this.element[0].offsetHeight,
8731                  });
8732          }),
8733          this._addToManager(i.scope),
8734          i.addClasses && this._addClass("ui-droppable");
8735      },
8736      _addToManager: function (e) {
8737        (t.ui.ddmanager.droppables[e] = t.ui.ddmanager.droppables[e] || []),
8738          t.ui.ddmanager.droppables[e].push(this);
8739      },
8740      _splice: function (t) {
8741        for (var e = 0; t.length > e; e++) t[e] === this && t.splice(e, 1);
8742      },
8743      _destroy: function () {
8744        var e = t.ui.ddmanager.droppables[this.options.scope];
8745        this._splice(e);
8746      },
8747      _setOption: function (e, i) {
8748        if ("accept" === e)
8749          this.accept = t.isFunction(i)
8750            ? i
8751            : function (t) {
8752                return t.is(i);
8753              };
8754        else if ("scope" === e) {
8755          var s = t.ui.ddmanager.droppables[this.options.scope];
8756          this._splice(s), this._addToManager(i);
8757        }
8758        this._super(e, i);
8759      },
8760      _activate: function (e) {
8761        var i = t.ui.ddmanager.current;
8762        this._addActiveClass(), i && this._trigger("activate", e, this.ui(i));
8763      },
8764      _deactivate: function (e) {
8765        var i = t.ui.ddmanager.current;
8766        this._removeActiveClass(),
8767          i && this._trigger("deactivate", e, this.ui(i));
8768      },
8769      _over: function (e) {
8770        var i = t.ui.ddmanager.current;
8771        i &&
8772          (i.currentItem || i.element)[0] !== this.element[0] &&
8773          this.accept.call(this.element[0], i.currentItem || i.element) &&
8774          (this._addHoverClass(), this._trigger("over", e, this.ui(i)));
8775      },
8776      _out: function (e) {
8777        var i = t.ui.ddmanager.current;
8778        i &&
8779          (i.currentItem || i.element)[0] !== this.element[0] &&
8780          this.accept.call(this.element[0], i.currentItem || i.element) &&
8781          (this._removeHoverClass(), this._trigger("out", e, this.ui(i)));
8782      },
8783      _drop: function (e, i) {
8784        var s = i || t.ui.ddmanager.current,
8785          n = !1;
8786        return s && (s.currentItem || s.element)[0] !== this.element[0]
8787          ? (this.element
8788              .find(":data(ui-droppable)")
8789              .not(".ui-draggable-dragging")
8790              .each(function () {
8791                var i = t(this).droppable("instance");
8792                return i.options.greedy &&
8793                  !i.options.disabled &&
8794                  i.options.scope === s.options.scope &&
8795                  i.accept.call(i.element[0], s.currentItem || s.element) &&
8796                  v(
8797                    s,
8798                    t.extend(i, { offset: i.element.offset() }),
8799                    i.options.tolerance,
8800                    e,
8801                  )
8802                  ? ((n = !0), !1)
8803                  : void 0;
8804              }),
8805            n
8806              ? !1
8807              : this.accept.call(this.element[0], s.currentItem || s.element)
8808                ? (this._removeActiveClass(),
8809                  this._removeHoverClass(),
8810                  this._trigger("drop", e, this.ui(s)),
8811                  this.element)
8812                : !1)
8813          : !1;
8814      },
8815      ui: function (t) {
8816        return {
8817          draggable: t.currentItem || t.element,
8818          helper: t.helper,
8819          position: t.position,
8820          offset: t.positionAbs,
8821        };
8822      },
8823      _addHoverClass: function () {
8824        this._addClass("ui-droppable-hover");
8825      },
8826      _removeHoverClass: function () {
8827        this._removeClass("ui-droppable-hover");
8828      },
8829      _addActiveClass: function () {
8830        this._addClass("ui-droppable-active");
8831      },
8832      _removeActiveClass: function () {
8833        this._removeClass("ui-droppable-active");
8834      },
8835    });
8836  var v = (t.ui.intersect = (function () {
8837    function t(t, e, i) {
8838      return t >
8838= e && e + i > t;
8839    }
8840    return function (e, i, s, n) {
8841      if (!i.offset) return !1;
8842      var o = (e.positionAbs || e.position.absolute).left + e.margins.left,
8843        a = (e.positionAbs || e.position.absolute).top + e.margins.top,
8844        r = o + e.helperProportions.width,
8845        h = a + e.helperProportions.height,
8846        l = i.offset.left,
8847        c = i.offset.top,
8848        u = l + i.proportions().width,
8849        d = c + i.proportions().height;
8850      switch (s) {
8851        case "fit":
8852          return o >= l && u >= r && a >= c && d >= h;
8853        case "intersect":
8854          return (
8855            o + e.helperProportions.width / 2 > l &&
8856            u > r - e.helperProportions.width / 2 &&
8857            a + e.helperProportions.height / 2 > c &&
8858            d > h - e.helperProportions.height / 2
8859          );
8860        case "pointer":
8861          return (
8862            t(n.pageY, c, i.proportions().height) &&
8863            t(n.pageX, l, i.proportions().width)
8864          );
8865        case "touch":
8866          return (
8867            ((a >= c && d >= a) || (h >= c && d >= h) || (c > a && h > d)) &&
8868            ((o >= l && u >= o) || (r >= l && u >= r) || (l > o && r > u))
8869          );
8870        default:
8871          return !1;
8872      }
8873    };
8874  })());
8875  (t.ui.ddmanager = {
8876    current: null,
8877    droppables: { default: [] },
8878    prepareOffsets: function (e, i) {
8879      var s,
8880        n,
8881        o = t.ui.ddmanager.droppables[e.options.scope] || [],
8882        a = i ? i.type : null,
8883        r = (e.currentItem || e.element).find(":data(ui-droppable)").addBack();
8884      t: for (s = 0; o.length > s; s++)
8885        if (
8886          !(
8887            o[s].options.disabled ||
8888            (e &&
8889              !o[s].accept.call(o[s].element[0], e.currentItem || e.element))
8890          )
8891        ) {
8892          for (n = 0; r.length > n; n++)
8893            if (r[n] === o[s].element[0]) {
8894              o[s].proportions().height = 0;
8895              continue t;
8896            }
8897          (o[s].visible = "none" !== o[s].element.css("display")),
8898            o[s].visible &&
8899              ("mousedown" === a && o[s]._activate.call(o[s], i),
8900              (o[s].offset = o[s].element.offset()),
8901              o[s].proportions({
8902                width: o[s].element[0].offsetWidth,
8903                height: o[s].element[0].offsetHeight,
8904              }));
8905        }
8906    },
8907    drop: function (e, i) {
8908      var s = !1;
8909      return (
8910        t.each(
8911          (t.ui.ddmanager.droppables[e.options.scope] || []).slice(),
8912          function () {
8913            this.options &&
8914              (!this.options.disabled &&
8915                this.visible &&
8916                v(e, this, this.options.tolerance, i) &&
8917                (s = this._drop.call(this, i) || s),
8918              !this.options.disabled &&
8919                this.visible &&
8920                this.accept.call(this.element[0], e.currentItem || e.element) &&
8921                ((this.isout = !0),
8922                (this.isover = !1),
8923                this._deactivate.call(this, i)));
8924          },
8925        ),
8926        s
8927      );
8928    },
8929    dragStart: function (e, i) {
8930      e.element.parentsUntil("body").on("scroll.droppable", function () {
8931        e.options.refreshPositions || t.ui.ddmanager.prepareOffsets(e, i);
8932      });
8933    },
8934    drag: function (e, i) {
8935      e.options.refreshPositions && t.ui.ddmanager.prepareOffsets(e, i),
8936        t.each(t.ui.ddmanager.droppables[e.options.scope] || [], function () {
8937          if (!this.options.disabled && !this.greedyChild && this.visible) {
8938            var s,
8939              n,
8940              o,
8941              a = v(e, this, this.options.tolerance, i),
8942              r =
8943                !a && this.isover
8944                  ? "isout"
8945                  : a && !this.isover
8946                    ? "isover"
8947                    : null;
8948            r &&
8949              (this.options.greedy &&
8950                ((n = this.options.scope),
8951                (o = this.element
8952                  .parents(":data(ui-droppable)")
8953                  .filter(function () {
8954                    return t(this).droppable("instance").options.scope === n;
8955                  })),
8956                o.length &&
8957                  ((s = t(o[0]).droppable("instance")),
8958                  (s.greedyChild = "isover" === r))),
8959              s &&
8960                "isover" === r &&
8961                ((s.isover = !1), (s.isout = !0), s._out.call(s, i)),
8962              (this[r] = !0),
8963              (this["isout" === r ? "isover" : "isout"] = !1),
8964              this["isover" === r ? "_over" : "_out"].call(this, i),
8965              s &&
8966                "isout" === r &&
8967                ((s.isout = !1), (s.isover = !0), s._over.call(s, i)));
8968          }
8969        });
8970    },
8971    dragStop: function (e, i) {
8972      e.element.parentsUntil("body").off("scroll.droppable"),
8973        e.options.refreshPositions || t.ui.ddmanager.prepareOffsets(e, i);
8974    },
8975  }),
8976    t.uiBackCompat !== !1 &&
8977      t.widget("ui.droppable", t.ui.droppable, {
8978        options: { hoverClass: !1, activeClass: !1 },
8979        _addActiveClass: function () {
8980          this._super(),
8981            this.options.activeClass &&
8982              this.element.addClass(this.options.activeClass);
8983        },
8984        _removeActiveClass: function () {
8985          this._super(),
8986            this.options.activeClass &&
8987              this.element.removeClass(this.options.activeClass);
8988        },
8989        _addHoverClass: function () {
8990          this._super(),
8991            this.options.hoverClass &&
8992              this.element.addClass(this.options.hoverClass);
8993        },
8994        _removeHoverClass: function () {
8995          this._super(),
8996            this.options.hoverClass &&
8997              this.element.removeClass(this.options.hoverClass);
8998        },
8999      }),
9000    t.ui.droppable,
9001    t.widget("ui.progressbar", {
9002      version: "1.12.1",
9003      options: {
9004        classes: {
9005          "ui-progressbar": "ui-corner-all",
9006          "ui-progressbar-value": "ui-corner-left",
9007          "ui-progressbar-complete": "ui-corner-right",
9008        },
9009        max: 100,
9010        value: 0,
9011        change: null,
9012        complete: null,
9013      },
9014      min: 0,
9015      _create: function () {
9016        (this.oldValue = this.options.value = this._constrainedValue()),
9017          this.element.attr({ role: "progressbar", "aria-valuemin": this.min }),
9018          this._addClass("ui-progressbar", "ui-widget ui-widget-content"),
9019          (this.valueDiv = t("<div>").appendTo(this.element)),
9020          this._addClass(
9021            this.valueDiv,
9022            "ui-progressbar-value",
9023            "ui-widget-header",
9024          ),
9025          this._refreshValue();
9026      },
9027      _destroy: function () {
9028        this.element.removeAttr(
9029          "role aria-valuemin aria-valuemax aria-valuenow",
9030        ),
9031          this.valueDiv.remove();
9032      },
9033      value: function (t) {
9034        return void 0 === t
9035          ? this.options.value
9036          : ((this.options.value = this._constrainedValue(t)),
9037            this._refreshValue(),
9038            void 0);
9039      },
9040      _constrainedValue: function (t) {
9041        return (
9042          void 0 === t && (t = this.options.value),
9043          (this.indeterminate = t === !1),
9044          "number" != typeof t && (t = 0),
9045          this.indeterminate
9046            ? !1
9047            : Math.min(this.options.max, Math.max(this.min, t))
9048        );
9049      },
9050      _setOptions: function (t) {
9051        var e = t.value;
9052        delete t.value,
9053          this._super(t),
9054          (this.options.value = this._constrainedValue(e)),
9055          this._refreshValue();
9056      },
9057      _setOption: function (t, e) {
9058        "max" === t && (e = Math.max(this.min, e)), this._super(t, e);
9059      },
9060      _setOptionDisabled: function (t) {
9061        this._super(t),
9062          this.element.attr("aria-disabled", t),
9063          this._toggleClass(null, "ui-state-disabled", !!t);
9064      },
9065      _percentage: function () {
9066        return this.indeterminate
9067          ? 100
9068          : (100 * (this.options.value - this.min)) /
9069              (this.options.max - this.min);
9070      },
9071      _refreshValue: function () {
9072        var e = this.options.value,
9073          i = this._percentage();
9074        this.valueDiv
9075          .toggle(this.indeterminate || e > this.min)
9076          .width(i.toFixed(0) + "%"),
9077          this._toggleClass(
9078            this.valueDiv,
9079            "ui-progressbar-complete",
9080            null,
9081            e === this.options.max,
9082          )._toggleClass(
9083            "ui-progressbar-indeterminate",
9084            null,
9085            this.indeterminate,
9086          ),
9087          this.indeterminate
9088            ? (this.element.removeAttr("aria-valuenow"),
9089              this.overlayDiv ||
9090                ((this.overlayDiv = t("<div>").appendTo(this.valueDiv)),
9091                this._addClass(this.overlayDiv, "ui-progressbar-overlay")))
9092            : (this.element.attr({
9093                "aria-valuemax": this.options.max,
9094                "aria-valuenow": e,
9095              }),
9096              this.overlayDiv &&
9097                (this.overlayDiv.remove(), (this.overlayDiv = null))),
9098          this.oldValue !== e && ((this.oldValue = e), this._trigger("change")),
9099          e === this.options.max && this._trigger("complete");
9100      },
9101    }),
9102    t.widget("ui.selectable", t.ui.mouse, {
9103      version: "1.12.1",
9104      options: {
9105        appendTo: "body",
9106        autoRefresh: !0,
9107        distance: 0,
9108        filter: "*",
9109        tolerance: "touch",
9110        selected: null,
9111        selecting: null,
9112        start: null,
9113        stop: null,
9114        unselected: null,
9115        unselecting: null,
9116      },
9117      _create: function () {
9118        var e = this;
9119        this._addClass("ui-selectable"),
9120          (this.dragged = !1),
9121          (this.refresh = function () {
9122            (e.elementPos = t(e.element[0]).offset()),
9123              (e.selectees = t(e.options.filter, e.element[0])),
9124              e._addClass(e.selectees, "ui-selectee"),
9125              e.selectees.each(function () {
9126                var i = t(this),
9127                  s = i.offset(),
9128                  n = {
9129                    left: s.left - e.elementPos.left,
9130                    top: s.top - e.elementPos.top,
9131                  };
9132                t.data(this, "selectable-item", {
9133                  element: this,
9134                  $element: i,
9135                  left: n.left,
9136                  top: n.top,
9137                  right: n.left + i.outerWidth(),
9138                  bottom: n.top + i.outerHeight(),
9139                  startselected: !1,
9140                  selected: i.hasClass("ui-selected"),
9141                  selecting: i.hasClass("ui-selecting"),
9142                  unselecting: i.hasClass("ui-unselecting"),
9143                });
9144              });
9145          }),
9146          this.refresh(),
9147          this._mouseInit(),
9148          (this.helper = t("<div>")),
9149          this._addClass(this.helper, "ui-selectable-helper");
9150      },
9151      _destroy: function () {
9152        this.selectees.removeData("selectable-item"), this._mouseDestroy();
9153      },
9154      _mouseStart: function (e) {
9155        var i = this,
9156          s = this.options;
9157        (this.opos = [e.pageX, e.pageY]),
9158          (this.elementPos = t(this.element[0]).offset()),
9159          this.options.disabled ||
9160            ((this.selectees = t(s.filter, this.element[0])),
9161            this._trigger("start", e),
9162            t(s.appendTo).append(this.helper),
9163            this.helper.css({
9164              left: e.pageX,
9165              top: e.pageY,
9166              width: 0,
9167              height: 0,
9168            }),
9169            s.autoRefresh && this.refresh(),
9170            this.selectees.filter(".ui-selected").each(function () {
9171              var s = t.data(this, "selectable-item");
9172              (s.startselected = !0),
9173                e.metaKey ||
9174                  e.ctrlKey ||
9175                  (i._removeClass(s.$element, "ui-selected"),
9176                  (s.selected = !1),
9177                  i._addClass(s.$element, "ui-unselecting"),
9178                  (s.unselecting = !0),
9179                  i._trigger("unselecting", e, { unselecting: s.element }));
9180            }),
9181            t(e.target)
9182              .parents()
9183              .addBack()
9184              .each(function () {
9185                var s,
9186                  n = t.data(this, "selectable-item");
9187                return n
9188                  ? ((s =
9189                      (!e.metaKey && !e.ctrlKey) ||
9190                      !n.$element.hasClass("ui-selected")),
9191                    i
9192                      ._removeClass(
9193                        n.$element,
9194                        s ? "ui-unselecting" : "ui-selected",
9195                      )
9196                      ._addClass(
9197                        n.$element,
9198                        s ? "ui-selecting" : "ui-unselecting",
9199                      ),
9200                    (n.unselecting = !s),
9201                    (n.selecting = s),
9202                    (n.selected = s),
9203                    s
9204                      ? i._trigger("selecting", e, { selecting: n.element })
9205                      : i._trigger("unselecting", e, {
9206                          unselecting: n.element,
9207                        }),
9208                    !1)
9209                  : void 0;
9210              }));
9211      },
9212      _mouseDrag: function (e) {
9213        if (((this.dragged = !0), !this.options.disabled)) {
9214          var i,
9215            s = this,
9216            n = this.options,
9217            o = this.opos[0],
9218            a = this.opos[1],
9219            r = e.pageX,
9220            h = e.pageY;
9221          return (
9222            o > r && ((i = r), (r = o), (o = i)),
9223            a > h && ((i = h), (h = a), (a = i)),
9224            this.helper.css({ left: o, top: a, width: r - o, height: h - a }),
9225            this.selectees.each(function () {
9226              var i = t.data(this, "selectable-item"),
9227                l = !1,
9228                c = {};
9229              i &&
9230                i.element !== s.element[0] &&
9231                ((c.left = i.left + s.elementPos.left),
9232                (c.right = i.right + s.elementPos.left),
9233                (c.top = i.top + s.elementPos.top),
9234                (c.bottom = i.bottom + s.elementPos.top),
9235                "touch" === n.tolerance
9236                  ? (l = !(
9237                      c.left > r ||
9238                      o > c.right ||
9239                      c.top > h ||
9240                      a > c.bottom
9241                    ))
9242                  : "fit" === n.tolerance &&
9243                    (l =
9244                      c.left > o && r > c.right && c.top > a && h > c.bottom),
9245                l
9246                  ? (i.selected &&
9247                      (s._removeClass(i.$element, "ui-selected"),
9248                      (i.selected = !1)),
9249                    i.unselecting &&
9250                      (s._removeClass(i.$element, "ui-unselecting"),
9251                      (i.unselecting = !1)),
9252                    i.selecting ||
9253                      (s._addClass(i.$element, "ui-selecting"),
9254                      (i.selecting = !0),
9255                      s._trigger("selecting", e, { selecting: i.element })))
9256                  : (i.selecting &&
9257                      ((e.metaKey || e.ctrlKey) && i.startselected
9258                        ? (s._removeClass(i.$element, "ui-selecting"),
9259                          (i.selecting = !1),
9260                          s._addClass(i.$element, "ui-selected"),
9261                          (i.selected = !0))
9262                        : (s._removeClass(i.$element, "ui-selecting"),
9263                          (i.selecting = !1),
9264                          i.startselected &&
9265                            (s._addClass(i.$element, "ui-unselecting"),
9266                            (i.unselecting = !0)),
9267                          s._trigger("unselecting", e, {
9268                            unselecting: i.element,
9269                          }))),
9270                    i.selected &&
9271                      (e.metaKey ||
9272                        e.ctrlKey ||
9273                        i.startselected ||
9274                        (s._removeClass(i.$element, "ui-selected"),
9275                        (i.selected = !1),
9276                        s._addClass(i.$element, "ui-unselecting"),
9277                        (i.unselecting = !0),
9278                        s._trigger("unselecting", e, {
9279                          unselecting: i.element,
9280                        })))));
9281            }),
9282            !1
9283          );
9284        }
9285      },
9286      _mouseStop: function (e) {
9287        var i = this;
9288        return (
9289          (this.dragged = !1),
9290          t(".ui-unselecting", this.element[0]).each(function () {
9291            var s = t.data(this, "selectable-item");
9292            i._removeClass(s.$element, "ui-unselecting"),
9293              (s.unselecting = !1),
9294              (s.startselected = !1),
9295              i._trigger("unselected", e, { unselected: s.element });
9296          }),
9297          t(".ui-selecting", this.element[0]).each(function () {
9298            var s = t.data(this, "selectable-item");
9299            i
9300              ._removeClass(s.$element, "ui-selecting")
9301              ._addClass(s.$element, "ui-selected"),
9302              (s.selecting = !1),
9303              (s.selected = !0),
9304              (s.startselected = !0),
9305              i._trigger("selected", e, { selected: s.element });
9306          }),
9307          this._trigger("stop", e),
9308          this.helper.remove(),
9309          !1
9310        );
9311      },
9312    }),
9313    t.widget("ui.selectmenu", [
9314      t.ui.formResetMixin,
9315      {
9316        version: "1.12.1",
9317        defaultElement: "<select>",
9318        options: {
9319          appendTo: null,
9320          classes: {
9321            "ui-selectmenu-button-open": "ui-corner-top",
9322            "ui-selectmenu-button-closed": "ui-corner-all",
9323          },
9324          disabled: null,
9325          icons: { button: "ui-icon-triangle-1-s" },
9326          position: { my: "left top", at: "left bottom", collision: "none" },
9327          width: !1,
9328          change: null,
9329          close: null,
9330          focus: null,
9331          open: null,
9332          select: null,
9333        },
9334        _create: function () {
9335          var e = this.element.uniqueId().attr("id");
9336          (this.ids = { element: e, button: e + "-button", menu: e + "-menu" }),
9337            this._drawButton(),
9338            this._drawMenu(),
9339            this._bindFormResetHandler(),
9340            (this._rendered = !1),
9341            (this.menuItems = t());
9342        },
9343        _drawButton: function () {
9344          var e,
9345            i = this,
9346            s = this._parseOption(
9347              this.element.find("option:selected"),
9348              this.element[0].selectedIndex,
9349            );
9350          (this.labels = this.element.labels().attr("for", this.ids.button)),
9351            this._on(this.labels, {
9352              click: function (t) {
9353                this.button.focus(), t.preventDefault();
9354              },
9355            }),
9356            this.element.hide(),
9357            (this.button = t("<span>", {
9358              tabindex: this.options.disabled ? -1 : 0,
9359              id: this.ids.button,
9360              role: "combobox",
9361              "aria-expanded": "false",
9362              "aria-autocomplete": "list",
9363              "aria-owns": this.ids.menu,
9364              "aria-haspopup": "true",
9365              title: this.element.attr("title"),
9366            }).insertAfter(this.element)),
9367            this._addClass(
9368              this.button,
9369              "ui-selectmenu-button ui-selectmenu-button-closed",
9370              "ui-button ui-widget",
9371            ),
9372            (e = t("<span>").appendTo(this.button)),
9373            this._addClass(
9374              e,
9375              "ui-selectmenu-icon",
9376              "ui-icon " + this.options.icons.button,
9377            ),
9378            (this.buttonItem = this._renderButtonItem(s).appendTo(this.button)),
9379            this.options.width !== !1 && this._resizeButton(),
9380            this._on(this.button, this._buttonEvents),
9381            this.button.one("focusin", function () {
9382              i._rendered || i._refreshMenu();
9383            });
9384        },
9385        _drawMenu: function () {
9386          var e = this;
9387          (this.menu = t("<ul>", {
9388            "aria-hidden": "true",
9389            "aria-labelledby": this.ids.button,
9390            id: this.ids.menu,
9391          })),
9392            (this.menuWrap = t("<div>").append(this.menu)),
9393            this._addClass(this.menuWrap, "ui-selectmenu-menu", "ui-front"),
9394            this.menuWrap.appendTo(this._appendTo()),
9395            (this.menuInstance = this.menu
9396              .menu({
9397                classes: { "ui-menu": "ui-corner-bottom" },
9398                role: "listbox",
9399                select: function (t, i) {
9400                  t.preventDefault(),
9401                    e._setSelection(),
9402                    e._select(i.item.data("ui-selectmenu-item"), t);
9403                },
9404                focus: function (t, i) {
9405                  var s = i.item.data("ui-selectmenu-item");
9406                  null != e.focusIndex &&
9407                    s.index !== e.focusIndex &&
9408                    (e._trigger("focus", t, { item: s }),
9409                    e.isOpen || e._select(s, t)),
9410                    (e.focusIndex = s.index),
9411                    e.button.attr(
9412                      "aria-activedescendant",
9413                      e.menuItems.eq(s.index).attr("id"),
9414                    );
9415                },
9416              })
9417              .menu("instance")),
9418            this.menuInstance._off(this.menu, "mouseleave"),
9419            (this.menuInstance._closeOnDocumentClick = function () {
9420              return !1;
9421            }),
9422            (this.menuInstance._isDivider = function () {
9423              return !1;
9424            });
9425        },
9426        refresh: function () {
9427          this._refreshMenu(),
9428            this.buttonItem.replaceWith(
9429              (this.buttonItem = this._renderButtonItem(
9430                this._getSelectedItem().data("ui-selectmenu-item") || {},
9431              )),
9432            ),
9433            null === this.options.width && this._resizeButton();
9434        },
9435        _refreshMenu: function () {
9436          var t,
9437            e = this.element.find("option");
9438          this.menu.empty(),
9439            this._parseOptions(e),
9440            this._renderMenu(this.menu, this.items),
9441            this.menuInstance.refresh(),
9442            (this.menuItems = this.menu
9443              .find("li")
9444              .not(".ui-selectmenu-optgroup")
9445              .find(".ui-menu-item-wrapper")),
9446            (this._rendered = !0),
9447            e.length &&
9448              ((t = this._getSelectedItem()),
9449              this.menuInstance.focus(null, t),
9450              this._setAria(t.data("ui-selectmenu-item")),
9451              this._setOption("disabled", this.element.prop("disabled")));
9452        },
9453        open: function (t) {
9454          this.options.disabled ||
9455            (this._rendered
9456              ? (this._removeClass(
9457                  this.menu.find(".ui-state-active"),
9458                  null,
9459                  "ui-state-active",
9460                ),
9461                this.menuInstance.focus(null, this._getSelectedItem()))
9462              : this._refreshMenu(),
9463            this.menuItems.length &&
9464              ((this.isOpen = !0),
9465              this._toggleAttr(),
9466              this._resizeMenu(),
9467              this._position(),
9468              this._on(this.document, this._documentClick),
9469              this._trigger("open", t)));
9470        },
9471        _position: function () {
9472          this.menuWrap.position(
9473            t.extend({ of: this.button }, this.options.position),
9474          );
9475        },
9476        close: function (t) {
9477          this.isOpen &&
9478            ((this.isOpen = !1),
9479            this._toggleAttr(),
9480            (this.range = null),
9481            this._off(this.document),
9482            this._trigger("close", t));
9483        },
9484        widget: function () {
9485          return this.button;
9486        },
9487        menuWidget: function () {
9488          return this.menu;
9489        },
9490        _renderButtonItem: function (e) {
9491          var i = t("<span>");
9492          return (
9493            this._setText(i, e.label),
9494            this._addClass(i, "ui-selectmenu-text"),
9495            i
9496          );
9497        },
9498        _renderMenu: function (e, i) {
9499          var s = this,
9500            n = "";
9501          t.each(i, function (i, o) {
9502            var a;
9503            o.optgroup !== n &&
9504              ((a = t("<li>", { text: o.optgroup })),
9505              s._addClass(
9506                a,
9507                "ui-selectmenu-optgroup",
9508                "ui-menu-divider" +
9509                  (o.element.parent("optgroup").prop("disabled")
9510                    ? " ui-state-disabled"
9511                    : ""),
9512              ),
9513              a.appendTo(e),
9514              (n = o.optgroup)),
9515              s._renderItemData(e, o);
9516          });
9517        },
9518        _renderItemData: function (t, e) {
9519          return this._renderItem(t, e).data("ui-selectmenu-item", e);
9520        },
9521        _renderItem: function (e, i) {
9522          var s = t("<li>"),
9523            n = t("<div>", { title: i.element.attr("title") });
9524          return (
9525            i.disabled && this._addClass(s, null, "ui-state-disabled"),
9526            this._setText(n, i.label),
9527            s.append(n).appendTo(e)
9528          );
9529        },
9530        _setText: function (t, e) {
9531          e ? t.text(e) : t.html("&#160;");
9532        },
9533        _move: function (t, e) {
9534          var i,
9535            s,
9536            n = ".ui-menu-item";
9537          this.isOpen
9538            ? (i = this.menuItems.eq(this.focusIndex).parent("li"))
9539            : ((i = this.menuItems
9540                .eq(this.element[0].selectedIndex)
9541                .parent("li")),
9542              (n += ":not(.ui-state-disabled)")),
9543            (s =
9544              "first" === t || "last" === t
9545                ? i["first" === t ? "prevAll" : "nextAll"](n).eq(-1)
9546                : i[t + "All"](n).eq(0)),
9547            s.length && this.menuInstance.focus(e, s);
9548        },
9549        _getSelectedItem: function () {
9550          return this.menuItems.eq(this.element[0].selectedIndex).parent("li");
9551        },
9552        _toggle: function (t) {
9553          this[this.isOpen ? "close" : "open"](t);
9554        },
9555        _setSelection: function () {
9556          var t;
9557          this.range &&
9558            (window.getSelection
9559              ? ((t = window.getSelection()),
9560                t.removeAllRanges(),
9561                t.addRange(this.range))
9562              : this.range.select(),
9563            this.button.focus());
9564        },
9565        _documentClick: {
9566          mousedown: function (e) {
9567            this.isOpen &&
9568              (t(e.target).closest(
9569                ".ui-selectmenu-menu, #" + t.ui.escapeSelector(this.ids.button),
9570              ).length ||
9571                this.close(e));
9572          },
9573        },
9574        _buttonEvents: {
9575          mousedown: function () {
9576            var t;
9577            window.getSelection
9578              ? ((t = window.getSelection()),
9579                t.rangeCount && (this.range = t.getRangeAt(0)))
9580              : (this.range = document.selection.createRange());
9581          },
9582          click: function (t) {
9583            this._setSelection(), this._toggle(t);
9584          },
9585          keydown: function (e) {
9586            var i = !0;
9587            switch (e.keyCode) {
9588              case t.ui.keyCode.TAB:
9589              case t.ui.keyCode.ESCAPE:
9590                this.close(e), (i = !1);
9591                break;
9592              case t.ui.keyCode.ENTER:
9593                this.isOpen && this._selectFocusedItem(e);
9594                break;
9595              case t.ui.keyCode.UP:
9596                e.altKey ? this._toggle(e) : this._move("prev", e);
9597                break;
9598              case t.ui.keyCode.DOWN:
9599                e.altKey ? this._toggle(e) : this._move("next", e);
9600                break;
9601              case t.ui.keyCode.SPACE:
9602                this.isOpen ? this._selectFocusedItem(e) : this._toggle(e);
9603                break;
9604              case t.ui.keyCode.LEFT:
9605                this._move("prev", e);
9606                break;
9607              case t.ui.keyCode.RIGHT:
9608                this._move("next", e);
9609                break;
9610              case t.ui.keyCode.HOME:
9611              case t.ui.keyCode.PAGE_UP:
9612                this._move("first", e);
9613                break;
9614              case t.ui.keyCode.END:
9615              case t.ui.keyCode.PAGE_DOWN:
9616                this._move("last", e);
9617                break;
9618              default:
9619                this.menu.trigger(e), (i = !1);
9620            }
9621            i && e.preventDefault();
9622          },
9623        },
9624        _selectFocusedItem: function (t) {
9625          var e = this.menuItems.eq(this.focusIndex).parent("li");
9626          e.hasClass("ui-state-disabled") ||
9627            this._select(e.data("ui-selectmenu-item"), t);
9628        },
9629        _select: function (t, e) {
9630          var i = this.element[0].selectedIndex;
9631          (this.element[0].selectedIndex = t.index),
9632            this.buttonItem.replaceWith(
9633              (this.buttonItem = this._renderButtonItem(t)),
9634            ),
9635            this._setAria(t),
9636            this._trigger("select", e, { item: t }),
9637            t.index !== i && this._trigger("change", e, { item: t }),
9638            this.close(e);
9639        },
9640        _setAria: function (t) {
9641          var e = this.menuItems.eq(t.index).attr("id");
9642          this.button.attr({
9643            "aria-labelledby": e,
9644            "aria-activedescendant": e,
9645          }),
9646            this.menu.attr("aria-activedescendant", e);
9647        },
9648        _setOption: function (t, e) {
9649          if ("icons" === t) {
9650            var i = this.button.find("span.ui-icon");
9651            this._removeClass(i, null, this.options.icons.button)._addClass(
9652              i,
9653              null,
9654              e.button,
9655            );
9656          }
9657          this._super(t, e),
9658            "appendTo" === t && this.menuWrap.appendTo(this._appendTo()),
9659            "width" === t && this._resizeButton();
9660        },
9661        _setOptionDisabled: function (t) {
9662          this._super(t),
9663            this.menuInstance.option("disabled", t),
9664            this.button.attr("aria-disabled", t),
9665            this._toggleClass(this.button, null, "ui-state-disabled", t),
9666            this.element.prop("disabled", t),
9667            t
9668              ? (this.button.attr("tabindex", -1), this.close())
9669              : this.button.attr("tabindex", 0);
9670        },
9671        _appendTo: function () {
9672          var e = this.options.appendTo;
9673          return (
9674            e &&
9675              (e = e.jquery || e.nodeType ? t(e) : this.document.find(e).eq(0)),
9676            (e && e[0]) || (e = this.element.closest(".ui-front, dialog")),
9677            e.length || (e = this.document[0].body),
9678            e
9679          );
9680        },
9681        _toggleAttr: function () {
9682          this.button.attr("aria-expanded", this.isOpen),
9683            this._removeClass(
9684              this.button,
9685              "ui-selectmenu-button-" + (this.isOpen ? "closed" : "open"),
9686            )
9687              ._addClass(
9688                this.button,
9689                "ui-selectmenu-button-" + (this.isOpen ? "open" : "closed"),
9690              )
9691              ._toggleClass(
9692                this.menuWrap,
9693                "ui-selectmenu-open",
9694                null,
9695                this.isOpen,
9696              ),
9697            this.menu.attr("aria-hidden", !this.isOpen);
9698        },
9699        _resizeButton: function () {
9700          var t = this.options.width;
9701          return t === !1
9702            ? (this.button.css("width", ""), void 0)
9703            : (null === t &&
9704                ((t = this.element.show().outerWidth()), this.element.hide()),
9705              this.button.outerWidth(t),
9706              void 0);
9707        },
9708        _resizeMenu: function () {
9709          this.menu.outerWidth(
9710            Math.max(
9711              this.button.outerWidth(),
9712              this.menu.width("").outerWidth() + 1,
9713            ),
9714          );
9715        },
9716        _getCreateOptions: function () {
9717          var t = this._super();
9718          return (t.disabled = this.element.prop("disabled")), t;
9719        },
9720        _parseOptions: function (e) {
9721          var i = this,
9722            s = [];
9723          e.each(function (e, n) {
9724            s.push(i._parseOption(t(n), e));
9725          }),
9726            (this.items = s);
9727        },
9728        _parseOption: function (t, e) {
9729          var i = t.parent("optgroup");
9730          return {
9731            element: t,
9732            index: e,
9733            value: t.val(),
9734            label: t.text(),
9735            optgroup: i.attr("label") || "",
9736            disabled: i.prop("disabled") || t.prop("disabled"),
9737          };
9738        },
9739        _destroy: function () {
9740          this._unbindFormResetHandler(),
9741            this.menuWrap.remove(),
9742            this.button.remove(),
9743            this.element.show(),
9744            this.element.removeUniqueId(),
9745            this.labels.attr("for", this.ids.element);
9746        },
9747      },
9748    ]),
9749    t.widget("ui.slider", t.ui.mouse, {
9750      version: "1.12.1",
9751      widgetEventPrefix: "slide",
9752      options: {
9753        animate: !1,
9754        classes: {
9755          "ui-slider": "ui-corner-all",
9756          "ui-slider-handle": "ui-corner-all",
9757          "ui-slider-range": "ui-corner-all ui-widget-header",
9758        },
9759        distance: 0,
9760        max: 100,
9761        min: 0,
9762        orientation: "horizontal",
9763        range: !1,
9764        step: 1,
9765        value: 0,
9766        values: null,
9767        change: null,
9768        slide: null,
9769        start: null,
9770        stop: null,
9771      },
9772      numPages: 5,
9773      _create: function () {
9774        (this._keySliding = !1),
9775          (this._mouseSliding = !1),
9776          (this._animateOff = !0),
9777          (this._handleIndex = null),
9778          this._detectOrientation(),
9779          this._mouseInit(),
9780          this._calculateNewMax(),
9781          this._addClass(
9782            "ui-slider ui-slider-" + this.orientation,
9783            "ui-widget ui-widget-content",
9784          ),
9785          this._refresh(),
9786          (this._animateOff = !1);
9787      },
9788      _refresh: function () {
9789        this._createRange(),
9790          this._createHandles(),
9791          this._setupEvents(),
9792          this._refreshValue();
9793      },
9794      _createHandles: function () {
9795        var e,
9796          i,
9797          s = this.options,
9798          n = this.element.find(".ui-slider-handle"),
9799          o = "<span tabindex='0'></span>",
9800          a = [];
9801        for (
9802          i = (s.values && s.values.length) || 1,
9803            n.length > i && (n.slice(i).remove(), (n = n.slice(0, i))),
9804            e = n.length;
9805          i > e;
9806          e++
9807        )
9808          a.push(o);
9809        (this.handles = n.add(t(a.join("")).appendTo(this.element))),
9810          this._addClass(this.handles, "ui-slider-handle", "ui-state-default"),
9811          (this.handle = this.handles.eq(0)),
9812          this.handles.each(function (e) {
9813            t(this).data("ui-slider-handle-index", e).attr("tabIndex", 0);
9814          });
9815      },
9816      _createRange: function () {
9817        var e = this.options;
9818        e.range
9819          ? (e.range === !0 &&
9820              (e.values
9821                ? e.values.length && 2 !== e.values.length
9822                  ? (e.values = [e.values[0], e.values[0]])
9823                  : t.isArray(e.values) && (e.values = e.values.slice(0))
9824                : (e.values = [this._valueMin(), this._valueMin()])),
9825            this.range && this.range.length
9826              ? (this._removeClass(
9827                  this.range,
9828                  "ui-slider-range-min ui-slider-range-max",
9829                ),
9830                this.range.css({ left: "", bottom: "" }))
9831              : ((this.range = t("<div>").appendTo(this.element)),
9832                this._addClass(this.range, "ui-slider-range")),
9833            ("min" === e.range || "max" === e.range) &&
9834              this._addClass(this.range, "ui-slider-range-" + e.range))
9835          : (this.range && this.range.remove(), (this.range = null));
9836      },
9837      _setupEvents: function () {
9838        this._off(this.handles),
9839          this._on(this.handles, this._handleEvents),
9840          this._hoverable(this.handles),
9841          this._focusable(this.handles);
9842      },
9843      _destroy: function () {
9844        this.handles.remove(),
9845          this.range && this.range.remove(),
9846          this._mouseDestroy();
9847      },
9848      _mouseCapture: function (e) {
9849        var i,
9850          s,
9851          n,
9852          o,
9853          a,
9854          r,
9855          h,
9856          l,
9857          c = this,
9858          u = this.options;
9859        return u.disabled
9860          ? !1
9861          : ((this.elementSize = {
9862              width: this.element.outerWidth(),
9863              height: this.element.outerHeight(),
9864            }),
9865            (this.elementOffset = this.element.offset()),
9866            (i = { x: e.pageX, y: e.pageY }),
9867            (s = this._normValueFromMouse(i)),
9868            (n = this._valueMax() - this._valueMin() + 1),
9869            this.handles.each(function (e) {
9870              var i = Math.abs(s - c.values(e));
9871              (n > i ||
9872                (n === i &&
9873                  (e === c._lastChangedValue || c.values(e) === u.min))) &&
9874                ((n = i), (o = t(this)), (a = e));
9875            }),
9876            (r = this._start(e, a)),
9877            r === !1
9878              ? !1
9879              : ((this._mouseSliding = !0),
9880                (this._handleIndex = a),
9881                this._addClass(o, null, "ui-state-active"),
9882                o.trigger("focus"),
9883                (h = o.offset()),
9884                (l = !t(e.target).parents().addBack().is(".ui-slider-handle")),
9885                (this._clickOffset = l
9886                  ? { left: 0, top: 0 }
9887                  : {
9888                      left: e.pageX - h.left - o.width() / 2,
9889                      top:
9890                        e.pageY -
9891                        h.top -
9892                        o.height() / 2 -
9893                        (parseInt(o.css("borderTopWidth"), 10) || 0) -
9894                        (parseInt(o.css("borderBottomWidth"), 10) || 0) +
9895                        (parseInt(o.css("marginTop"), 10) || 0),
9896                    }),
9897                this.handles.hasClass("ui-state-hover") || this._slide(e, a, s),
9898                (this._animateOff = !0),
9899                !0));
9900      },
9901      _mouseStart: function () {
9902        return !0;
9903      },
9904      _mouseDrag: function (t) {
9905        var e = { x: t.pageX, y: t.pageY },
9906          i = this._normValueFromMouse(e);
9907        return this._slide(t, this._handleIndex, i), !1;
9908      },
9909      _mouseStop: function (t) {
9910        return (
9911          this._removeClass(this.handles, null, "ui-state-active"),
9912          (this._mouseSliding = !1),
9913          this._stop(t, this._handleIndex),
9914          this._change(t, this._handleIndex),
9915          (this._handleIndex = null),
9916          (this._clickOffset = null),
9917          (this._animateOff = !1),
9918          !1
9919        );
9920      },
9921      _detectOrientation: function () {
9922        this.orientation =
9923          "vertical" === this.options.orientation ? "vertical" : "horizontal";
9924      },
9925      _normValueFromMouse: function (t) {
9926        var e, i, s, n, o;
9927        return (
9928          "horizontal" === this.orientation
9929            ? ((e = this.elementSize.width),
9930              (i =
9931                t.x -
9932                this.elementOffset.left -
9933                (this._clickOffset ? this._clickOffset.left : 0)))
9934            : ((e = this.elementSize.height),
9935              (i =
9936                t.y -
9937                this.elementOffset.top -
9938                (this._clickOffset ? this._clickOffset.top : 0))),
9939          (s = i / e),
9940          s > 1 && (s = 1),
9941          0 > s && (s = 0),
9942          "vertical" === this.orientation && (s = 1 - s),
9943          (n = this._valueMax() - this._valueMin()),
9944          (o = this._valueMin() + s * n),
9945          this._trimAlignValue(o)
9946        );
9947      },
9948      _uiHash: function (t, e, i) {
9949        var s = {
9950          handle: this.handles[t],
9951          handleIndex: t,
9952          value: void 0 !== e ? e : this.value(),
9953        };
9954        return (
9955          this._hasMultipleValues() &&
9956            ((s.value = void 0 !== e ? e : this.values(t)),
9957            (s.values = i || this.values())),
9958          s
9959        );
9960      },
9961      _hasMultipleValues: function () {
9962        return this.options.values && this.options.values.length;
9963      },
9964      _start: function (t, e) {
9965        return this._trigger("start", t, this._uiHash(e));
9966      },
9967      _slide: function (t, e, i) {
9968        var s,
9969          n,
9970          o = this.value(),
9971          a = this.values();
9972        this._hasMultipleValues() &&
9973          ((n = this.values(e ? 0 : 1)),
9974          (o = this.values(e)),
9975          2 === this.options.values.length &&
9976            this.options.range === !0 &&
9977            (i = 0 === e ? Math.min(n, i) : Math.max(n, i)),
9978          (a[e] = i)),
9979          i !== o &&
9980            ((s = this._trigger("slide", t, this._uiHash(e, i, a))),
9981            s !== !1 &&
9982              (this._hasMultipleValues() ? this.values(e, i) : this.value(i)));
9983      },
9984      _stop: function (t, e) {
9985        this._trigger("stop", t, this._uiHash(e));
9986      },
9987      _change: function (t, e) {
9988        this._keySliding ||
9989          this._mouseSliding ||
9990          ((this._lastChangedValue = e),
9991          this._trigger("change", t, this._uiHash(e)));
9992      },
9993      value: function (t) {
9994        return arguments.length
9995          ? ((this.options.value = this._trimAlignValue(t)),
9996            this._refreshValue(),
9997            this._change(null, 0),
9998            void 0)
9999          : this._value();
10000      },
10001      values: function (e, i) {
10002        var s, n, o;
10003        if (arguments.length > 1)
10004          return (
10005            (this.options.values[e] = this._trimAlignValue(i)),
10006            this._refreshValue(),
10007            this._change(null, e),
10008            void 0
10009          );
10010        if (!arguments.length) return this._values();
10011        if (!t.isArray(arguments[0]))
10012          return this._hasMultipleValues() ? this._values(e) : this.value();
10013        for (
10014          s = this.options.values, n = arguments[0], o = 0;
10015          s.length > o;
10016          o += 1
10017        )
10018          (s[o] = this._trimAlignValue(n[o])), this._change(null, o);
10019        this._refreshValue();
10020      },
10021      _setOption: function (e, i) {
10022        var s,
10023          n = 0;
10024        switch (
10025          ("range" === e &&
10026            this.options.range === !0 &&
10027            ("min" === i
10028              ? ((this.options.value = this._values(0)),
10029                (this.options.values = null))
10030              : "max" === i &&
10031                ((this.options.value = this._values(
10032                  this.options.values.length - 1,
10033                )),
10034                (this.options.values = null))),
10035          t.isArray(this.options.values) && (n = this.options.values.length),
10036          this._super(e, i),
10037          e)
10038        ) {
10039          case "orientation":
10040            this._detectOrientation(),
10041              this._removeClass(
10042                "ui-slider-horizontal ui-slider-vertical",
10043              )._addClass("ui-slider-" + this.orientation),
10044              this._refreshValue(),
10045              this.options.range && this._refreshRange(i),
10046              this.handles.css("horizontal" === i ? "bottom" : "left", "");
10047            break;
10048          case "value":
10049            (this._animateOff = !0),
10050              this._refreshValue(),
10051              this._change(null, 0),
10052              (this._animateOff = !1);
10053            break;
10054          case "values":
10055            for (
10056              this._animateOff = !0, this._refreshValue(), s = n - 1;
10057              s >= 0;
10058              s--
10059            )
10060              this._change(null, s);
10061            this._animateOff = !1;
10062            break;
10063          case "step":
10064          case "min":
10065          case "max":
10066            (this._animateOff = !0),
10067              this._calculateNewMax(),
10068              this._refreshValue(),
10069              (this._animateOff = !1);
10070            break;
10071          case "range":
10072            (this._animateOff = !0), this._refresh(), (this._animateOff = !1);
10073        }
10074      },
10075      _setOptionDisabled: function (t) {
10076        this._super(t), this._toggleClass(null, "ui-state-disabled", !!t);
10077      },
10078      _value: function () {
10079        var t = this.options.value;
10080        return (t = this._trimAlignValue(t));
10081      },
10082      _values: function (t) {
10083        var e, i, s;
10084        if (arguments.length)
10085          return (e = this.options.values[t]), (e = this._trimAlignValue(e));
10086        if (this._hasMultipleValues()) {
10087          for (i = this.options.values.slice(), s = 0; i.length > s; s += 1)
10088            i[s] = this._trimAlignValue(i[s]);
10089          return i;
10090        }
10091        return [];
10092      },
10093      _trimAlignValue: function (t) {
10094        if (this._valueMin() >= t) return this._valueMin();
10095        if (t >= this._valueMax()) return this._valueMax();
10096        var e = this.options.step > 0 ? this.options.step : 1,
10097          i = (t - this._valueMin()) % e,
10098          s = t - i;
10099        return (
10100          2 * Math.abs(i) >= e && (s += i > 0 ? e : -e),
10101          parseFloat(s.toFixed(5))
10102        );
10103      },
10104      _calculateNewMax: function () {
10105        var t = this.options.max,
10106          e = this._valueMin(),
10107          i = this.options.step,
10108          s = Math.round((t - e) / i) * i;
10109        (t = s + e),
10110          t > this.options.max && (t -= i),
10111          (this.max = parseFloat(t.toFixed(this._precision())));
10112      },
10113      _precision: function () {
10114        var t = this._precisionOf(this.options.step);
10115        return (
10116          null !== this.options.min &&
10117            (t = Math.max(t, this._precisionOf(this.options.min))),
10118          t
10119        );
10120      },
10121      _precisionOf: function (t) {
10122        var e = "" + t,
10123          i = e.indexOf(".");
10124        return -1 === i ? 0 : e.length - i - 1;
10125      },
10126      _valueMin: function () {
10127        return this.options.min;
10128      },
10129      _valueMax: function () {
10130        return this.max;
10131      },
10132      _refreshRange: function (t) {
10133        "vertical" === t && this.range.css({ width: "", left: "" }),
10134          "horizontal" === t && this.range.css({ height: "", bottom: "" });
10135      },
10136      _refreshValue: function () {
10137        var e,
10138          i,
10139          s,
10140          n,
10141          o,
10142          a = this.options.range,
10143          r = this.options,
10144          h = this,
10145          l = this._animateOff ? !1 : r.animate,
10146          c = {};
10147        this._hasMultipleValues()
10148          ? this.handles.each(function (s) {
10149              (i =
10150                100 *
10151                ((h.values(s) - h._valueMin()) /
10152                  (h._valueMax() - h._valueMin()))),
10153                (c["horizontal" === h.orientation ? "left" : "bottom"] =
10154                  i + "%"),
10155                t(this).stop(1, 1)[l ? "animate" : "css"](c, r.animate),
10156                h.options.range === !0 &&
10157                  ("horizontal" === h.orientation
10158                    ? (0 === s &&
10159                        h.range
10160                          .stop(1, 1)
10161                          [l ? "animate" : "css"]({ left: i + "%" }, r.animate),
10162                      1 === s &&
10163                        h.range[l ? "animate" : "css"](
10164                          { width: i - e + "%" },
10165                          { queue: !1, duration: r.animate },
10166                        ))
10167                    : (0 === s &&
10168                        h.range
10169                          .stop(1, 1)
10170                          [
10171                            l ? "animate" : "css"
10172                          ]({ bottom: i + "%" }, r.animate),
10173                      1 === s &&
10174                        h.range[l ? "animate" : "css"](
10175                          { height: i - e + "%" },
10176                          { queue: !1, duration: r.animate },
10177                        ))),
10178                (e = i);
10179            })
10180          : ((s = this.value()),
10181            (n = this._valueMin()),
10182            (o = this._valueMax()),
10183            (i = o !== n ? 100 * ((s - n) / (o - n)) : 0),
10184            (c["horizontal" === this.orientation ? "left" : "bottom"] =
10185              i + "%"),
10186            this.handle.stop(1, 1)[l ? "animate" : "css"](c, r.animate),
10187            "min" === a &&
10188              "horizontal" === this.orientation &&
10189              this.range
10190                .stop(1, 1)
10191                [l ? "animate" : "css"]({ width: i + "%" }, r.animate),
10192            "max" === a &&
10193              "horizontal" === this.orientation &&
10194              this.range
10195                .stop(1, 1)
10196                [l ? "animate" : "css"]({ width: 100 - i + "%" }, r.animate),
10197            "min" === a &&
10198              "vertical" === this.orientation &&
10199              this.range
10200                .stop(1, 1)
10201                [l ? "animate" : "css"]({ height: i + "%" }, r.animate),
10202            "max" === a &&
10203              "vertical" === this.orientation &&
10204              this.range
10205                .stop(1, 1)
10206                [l ? "animate" : "css"]({ height: 100 - i + "%" }, r.animate));
10207      },
10208      _handleEvents: {
10209        keydown: function (e) {
10210          var i,
10211            s,
10212            n,
10213            o,
10214            a = t(e.target).data("ui-slider-handle-index");
10215          switch (e.keyCode) {
10216            case t.ui.keyCode.HOME:
10217            case t.ui.keyCode.END:
10218            case t.ui.keyCode.PAGE_UP:
10219            case t.ui.keyCode.PAGE_DOWN:
10220            case t.ui.keyCode.UP:
10221            case t.ui.keyCode.RIGHT:
10222            case t.ui.keyCode.DOWN:
10223            case t.ui.keyCode.LEFT:
10224              if (
10225                (e.preventDefault(),
10226                !this._keySliding &&
10227                  ((this._keySliding = !0),
10228                  this._addClass(t(e.target), null, "ui-state-active"),
10229                  (i = this._start(e, a)),
10230                  i === !1))
10231              )
10232                return;
10233          }
10234          switch (
10235            ((o = this.options.step),
10236            (s = n = this._hasMultipleValues() ? this.values(a) : this.value()),
10237            e.keyCode)
10238          ) {
10239            case t.ui.keyCode.HOME:
10240              n = this._valueMin();
10241              break;
10242            case t.ui.keyCode.END:
10243              n = this._valueMax();
10244              break;
10245            case t.ui.keyCode.PAGE_UP:
10246              n = this._trimAlignValue(
10247                s + (this._valueMax() - this._valueMin()) / this.numPages,
10248              );
10249              break;
10250            case t.ui.keyCode.PAGE_DOWN:
10251              n = this._trimAlignValue(
10252                s - (this._valueMax() - this._valueMin()) / this.numPages,
10253              );
10254              break;
10255            case t.ui.keyCode.UP:
10256            case t.ui.keyCode.RIGHT:
10257              if (s === this._valueMax()) return;
10258              n = this._trimAlignValue(s + o);
10259              break;
10260            case t.ui.keyCode.DOWN:
10261            case t.ui.keyCode.LEFT:
10262              if (s === this._valueMin()) return;
10263              n = this._trimAlignValue(s - o);
10264          }
10265          this._slide(e, a, n);
10266        },
10267        keyup: function (e) {
10268          var i = t(e.target).data("ui-slider-handle-index");
10269          this._keySliding &&
10270            ((this._keySliding = !1),
10271            this._stop(e, i),
10272            this._change(e, i),
10273            this._removeClass(t(e.target), null, "ui-state-active"));
10274        },
10275      },
10276    }),
10277    t.widget("ui.sortable", t.ui.mouse, {
10278      version: "1.12.1",
10279      widgetEventPrefix: "sort",
10280      ready: !1,
10281      options: {
10282        appendTo: "parent",
10283        axis: !1,
10284        connectWith: !1,
10285        containment: !1,
10286        cursor: "auto",
10287        cursorAt: !1,
10288        dropOnEmpty: !0,
10289        forcePlaceholderSize: !1,
10290        forceHelperSize: !1,
10291        grid: !1,
10292        handle: !1,
10293        helper: "original",
10294        items: "> *",
10295        opacity: !1,
10296        placeholder: !1,
10297        revert: !1,
10298        scroll: !0,
10299        scrollSensitivity: 20,
10300        scrollSpeed: 20,
10301        scope: "default",
10302        tolerance: "intersect",
10303        zIndex: 1e3,
10304        activate: null,
10305        beforeStop: null,
10306        change: null,
10307        deactivate: null,
10308        out: null,
10309        over: null,
10310        receive: null,
10311        remove: null,
10312        sort: null,
10313        start: null,
10314        stop: null,
10315        update: null,
10316      },
10317      _isOverAxis: function (t, e, i) {
10318        return t >
10318= e && e + i > t;
10319      },
10320      _isFloating: function (t) {
10321        return (
10322          /left|right/.test(t.css("float")) ||
10323          /inline|table-cell/.test(t.css("display"))
10324        );
10325      },
10326      _create: function () {
10327        (this.containerCache = {}),
10328          this._addClass("ui-sortable"),
10329          this.refresh(),
10330          (this.offset = this.element.offset()),
10331          this._mouseInit(),
10332          this._setHandleClassName(),
10333          (this.ready = !0);
10334      },
10335      _setOption: function (t, e) {
10336        this._super(t, e), "handle" === t && this._setHandleClassName();
10337      },
10338      _setHandleClassName: function () {
10339        var e = this;
10340        this._removeClass(
10341          this.element.find(".ui-sortable-handle"),
10342          "ui-sortable-handle",
10343        ),
10344          t.each(this.items, function () {
10345            e._addClass(
10346              this.instance.options.handle
10347                ? this.item.find(this.instance.options.handle)
10348                : this.item,
10349              "ui-sortable-handle",
10350            );
10351          });
10352      },
10353      _destroy: function () {
10354        this._mouseDestroy();
10355        for (var t = this.items.length - 1; t >= 0; t--)
10356          this.items[t].item.removeData(this.widgetName + "-item");
10357        return this;
10358      },
10359      _mouseCapture: function (e, i) {
10360        var s = null,
10361          n = !1,
10362          o = this;
10363        return this.reverting
10364          ? !1
10365          : this.options.disabled || "static" === this.options.type
10366            ? !1
10367            : (this._refreshItems(e),
10368              t(e.target)
10369                .parents()
10370                .each(function () {
10371                  return t.data(this, o.widgetName + "-item") === o
10372                    ? ((s = t(this)), !1)
10373                    : void 0;
10374                }),
10375              t.data(e.target, o.widgetName + "-item") === o &&
10376                (s = t(e.target)),
10377              s
10378                ? !this.options.handle ||
10379                  i ||
10380                  (t(this.options.handle, s)
10381                    .find("*")
10382                    .addBack()
10383                    .each(function () {
10384                      this === e.target && (n = !0);
10385                    }),
10386                  n)
10387                  ? ((this.currentItem = s),
10388                    this._removeCurrentsFromItems(),
10389                    !0)
10390                  : !1
10391                : !1);
10392      },
10393      _mouseStart: function (e, i, s) {
10394        var n,
10395          o,
10396          a = this.options;
10397        if (
10398          ((this.currentContainer = this),
10399          this.refreshPositions(),
10400          (this.helper = this._createHelper(e)),
10401          this._cacheHelperProportions(),
10402          this._cacheMargins(),
10403          (this.scrollParent = this.helper.scrollParent()),
10404          (this.offset = this.currentItem.offset()),
10405          (this.offset = {
10406            top: this.offset.top - this.margins.top,
10407            left: this.offset.left - this.margins.left,
10408          }),
10409          t.extend(this.offset, {
10410            click: {
10411              left: e.pageX - this.offset.left,
10412              top: e.pageY - this.offset.top,
10413            },
10414            parent: this._getParentOffset(),
10415            relative: this._getRelativeOffset(),
10416          }),
10417          this.helper.css("position", "absolute"),
10418          (this.cssPosition = this.helper.css("position")),
10419          (this.originalPosition = this._generatePosition(e)),
10420          (this.originalPageX = e.pageX),
10421          (this.originalPageY = e.pageY),
10422          a.cursorAt && this._adjustOffsetFromHelper(a.cursorAt),
10423          (this.domPosition = {
10424            prev: this.currentItem.prev()[0],
10425            parent: this.currentItem.parent()[0],
10426          }),
10427          this.helper[0] !== this.currentItem[0] && this.currentItem.hide(),
10428          this._createPlaceholder(),
10429          a.containment && this._setContainment(),
10430          a.cursor &&
10431            "auto" !== a.cursor &&
10432            ((o = this.document.find("body")),
10433            (this.storedCursor = o.css("cursor")),
10434            o.css("cursor", a.cursor),
10435            (this.storedStylesheet = t(
10436              "<style>*{ cursor: " + a.cursor + " !important; }</style>",
10437            ).appendTo(o))),
10438          a.opacity &&
10439            (this.helper.css("opacity") &&
10440              (this._storedOpacity = this.helper.css("opacity")),
10441            this.helper.css("opacity", a.opacity)),
10442          a.zIndex &&
10443            (this.helper.css("zIndex") &&
10444              (this._storedZIndex = this.helper.css("zIndex")),
10445            this.helper.css("zIndex", a.zIndex)),
10446          this.scrollParent[0] !== this.document[0] &&
10447            "HTML" !== this.scrollParent[0].tagName &&
10448            (this.overflowOffset = this.scrollParent.offset()),
10449          this._trigger("start", e, this._uiHash()),
10450          this._preserveHelperProportions || this._cacheHelperProportions(),
10451          !s)
10452        )
10453          for (n = this.containers.length - 1; n >= 0; n--)
10454            this.containers[n]._trigger("activate", e, this._uiHash(this));
10455        return (
10456          t.ui.ddmanager && (t.ui.ddmanager.current = this),
10457          t.ui.ddmanager &&
10458            !a.dropBehaviour &&
10459            t.ui.ddmanager.prepareOffsets(this, e),
10460          (this.dragging = !0),
10461          this._addClass(this.helper, "ui-sortable-helper"),
10462          this._mouseDrag(e),
10463          !0
10464        );
10465      },
10466      _mouseDrag: function (e) {
10467        var i,
10468          s,
10469          n,
10470          o,
10471          a = this.options,
10472          r = !1;
10473        for (
10474          this.position = this._generatePosition(e),
10475            this.positionAbs = this._convertPositionTo("absolute"),
10476            this.lastPositionAbs || (this.lastPositionAbs = this.positionAbs),
10477            this.options.scroll &&
10478              (this.scrollParent[0] !== this.document[0] &&
10479              "HTML" !== this.scrollParent[0].tagName
10480                ? (this.overflowOffset.top +
10481                    this.scrollParent[0].offsetHeight -
10482                    e.pageY <
10483                  a.scrollSensitivity
10484                    ? (this.scrollParent[0].scrollTop = r =
10485                        this.scrollParent[0].scrollTop + a.scrollSpeed)
10486                    : e.pageY - this.overflowOffset.top < a.scrollSensitivity &&
10487                      (this.scrollParent[0].scrollTop = r =
10488                        this.scrollParent[0].scrollTop - a.scrollSpeed),
10489                  this.overflowOffset.left +
10490                    this.scrollParent[0].offsetWidth -
10491                    e.pageX <
10492                  a.scrollSensitivity
10493                    ? (this.scrollParent[0].scrollLeft = r =
10494                        this.scrollParent[0].scrollLeft + a.scrollSpeed)
10495                    : e.pageX - this.overflowOffset.left <
10496                        a.scrollSensitivity &&
10497                      (this.scrollParent[0].scrollLeft = r =
10498                        this.scrollParent[0].scrollLeft - a.scrollSpeed))
10499                : (e.pageY - this.document.scrollTop() < a.scrollSensitivity
10500                    ? (r = this.document.scrollTop(
10501                        this.document.scrollTop() - a.scrollSpeed,
10502                      ))
10503                    : this.window.height() -
10504                        (e.pageY - this.document.scrollTop()) <
10505                        a.scrollSensitivity &&
10506                      (r = this.document.scrollTop(
10507                        this.document.scrollTop() + a.scrollSpeed,
10508                      )),
10509                  e.pageX - this.document.scrollLeft() < a.scrollSensitivity
10510                    ? (r = this.document.scrollLeft(
10511                        this.document.scrollLeft() - a.scrollSpeed,
10512                      ))
10513                    : this.window.width() -
10514                        (e.pageX - this.document.scrollLeft()) <
10515                        a.scrollSensitivity &&
10516                      (r = this.document.scrollLeft(
10517                        this.document.scrollLeft() + a.scrollSpeed,
10518                      ))),
10519              r !== !1 &&
10520                t.ui.ddmanager &&
10521                !a.dropBehaviour &&
10522                t.ui.ddmanager.prepareOffsets(this, e)),
10523            this.positionAbs = this._convertPositionTo("absolute"),
10524            (this.options.axis && "y" === this.options.axis) ||
10525              (this.helper[0].style.left = this.position.left + "px"),
10526            (this.options.axis && "x" === this.options.axis) ||
10527              (this.helper[0].style.top = this.position.top + "px"),
10528            i = this.items.length - 1;
10529          i >= 0;
10530          i--
10531        )
10532          if (
10533            ((s = this.items[i]),
10534            (n = s.item[0]),
10535            (o = this._intersectsWithPointer(s)),
10536            o &&
10537              s.instance === this.currentContainer &&
10538              n !== this.currentItem[0] &&
10539              this.placeholder[1 === o ? "next" : "prev"]()[0] !== n &&
10540              !t.contains(this.placeholder[0], n) &&
10541              ("semi-dynamic" === this.options.type
10542                ? !t.contains(this.element[0], n)
10543                : !0))
10544          ) {
10545            if (
10546              ((this.direction = 1 === o ? "down" : "up"),
10547              "pointer" !== this.options.tolerance &&
10548                !this._intersectsWithSides(s))
10549            )
10550              break;
10551            this._rearrange(e, s), this._trigger("change", e, this._uiHash());
10552            break;
10553          }
10554        return (
10555          this._contactContainers(e),
10556          t.ui.ddmanager && t.ui.ddmanager.drag(this, e),
10557          this._trigger("sort", e, this._uiHash()),
10558          (this.lastPositionAbs = this.positionAbs),
10559          !1
10560        );
10561      },
10562      _mouseStop: function (e, i) {
10563        if (e) {
10564          if (
10565            (t.ui.ddmanager &&
10566              !this.options.dropBehaviour &&
10567              t.ui.ddmanager.drop(this, e),
10568            this.options.revert)
10569          ) {
10570            var s = this,
10571              n = this.placeholder.offset(),
10572              o = this.options.axis,
10573              a = {};
10574            (o && "x" !== o) ||
10575              (a.left =
10576                n.left -
10577                this.offset.parent.left -
10578                this.margins.left +
10579                (this.offsetParent[0] === this.document[0].body
10580                  ? 0
10581                  : this.offsetParent[0].scrollLeft)),
10582              (o && "y" !== o) ||
10583                (a.top =
10584                  n.top -
10585                  this.offset.parent.top -
10586                  this.margins.top +
10587                  (this.offsetParent[0] === this.document[0].body
10588                    ? 0
10589                    : this.offsetParent[0].scrollTop)),
10590              (this.reverting = !0),
10591              t(this.helper).animate(
10592                a,
10593                parseInt(this.options.revert, 10) || 500,
10594                function () {
10595                  s._clear(e);
10596                },
10597              );
10598          } else this._clear(e, i);
10599          return !1;
10600        }
10601      },
10602      cancel: function () {
10603        if (this.dragging) {
10604          this._mouseUp(new t.Event("mouseup", { target: null })),
10605            "original" === this.options.helper
10606              ? (this.currentItem.css(this._storedCSS),
10607                this._removeClass(this.currentItem, "ui-sortable-helper"))
10608              : this.currentItem.show();
10609          for (var e = this.containers.length - 1; e >= 0; e--)
10610            this.containers[e]._trigger("deactivate", null, this._uiHash(this)),
10611              this.containers[e].containerCache.over &&
10612                (this.containers[e]._trigger("out", null, this._uiHash(this)),
10613                (this.containers[e].containerCache.over = 0));
10614        }
10615        return (
10616          this.placeholder &&
10617            (this.placeholder[0].parentNode &&
10618              this.placeholder[0].parentNode.removeChild(this.placeholder[0]),
10619            "original" !== this.options.helper &&
10620              this.helper &&
10621              this.helper[0].parentNode &&
10622              this.helper.remove(),
10623            t.extend(this, {
10624              helper: null,
10625              dragging: !1,
10626              reverting: !1,
10627              _noFinalSort: null,
10628            }),
10629            this.domPosition.prev
10630              ? t(this.domPosition.prev).after(this.currentItem)
10631              : t(this.domPosition.parent).prepend(this.currentItem)),
10632          this
10633        );
10634      },
10635      serialize: function (e) {
10636        var i = this._getItemsAsjQuery(e && e.connected),
10637          s = [];
10638        return (
10639          (e = e || {}),
10640          t(i).each(function () {
10641            var i = (t(e.item || this).attr(e.attribute || "id") || "").match(
10642              e.expression || /(.+)[\-=_](.+)/,
10643            );
10644            i &&
10645              s.push(
10646                (e.key || i[1] + "[]") +
10647                  "=" +
10648                  (e.key && e.expression ? i[1] : i[2]),
10649              );
10650          }),
10651          !s.length && e.key && s.push(e.key + "="),
10652          s.join("&")
10653        );
10654      },
10655      toArray: function (e) {
10656        var i = this._getItemsAsjQuery(e && e.connected),
10657          s = [];
10658        return (
10659          (e = e || {}),
10660          i.each(function () {
10661            s.push(t(e.item || this).attr(e.attribute || "id") || "");
10662          }),
10663          s
10664        );
10665      },
10666      _intersectsWith: function (t) {
10667        var e = this.positionAbs.left,
10668          i = e + this.helperProportions.width,
10669          s = this.positionAbs.top,
10670          n = s + this.helperProportions.height,
10671          o = t.left,
10672          a = o + t.width,
10673          r = t.top,
10674          h = r + t.height,
10675          l = this.offset.click.top,
10676          c = this.offset.click.left,
10677          u = "x" === this.options.axis || (s + l > r && h > s + l),
10678          d = "y" === this.options.axis || (e + c > o && a > e + c),
10679          p = u && d;
10680        return "pointer" === this.options.tolerance ||
10681          this.options.forcePointerForContainers ||
10682          ("pointer" !== this.options.tolerance &&
10683            this.helperProportions[this.floating ? "width" : "height"] >
10684              t[this.floating ? "width" : "height"])
10685          ? p
10686          : e + this.helperProportions.width / 2 > o &&
10687              a > i - this.helperProportions.width / 2 &&
10688              s + this.helperProportions.height / 2 > r &&
10689              h > n - this.helperProportions.height / 2;
10690      },
10691      _intersectsWithPointer: function (t) {
10692        var e,
10693          i,
10694          s =
10695            "x" === this.options.axis ||
10696            this._isOverAxis(
10697              this.positionAbs.top + this.offset.click.top,
10698              t.top,
10699              t.height,
10700            ),
10701          n =
10702            "y" === this.options.axis ||
10703            this._isOverAxis(
10704              this.positionAbs.left + this.offset.click.left,
10705              t.left,
10706              t.width,
10707            ),
10708          o = s && n;
10709        return o
10710          ? ((e = this._getDragVerticalDirection()),
10711            (i = this._getDragHorizontalDirection()),
10712            this.floating
10713              ? "right" === i || "down" === e
10714                ? 2
10715                : 1
10716              : e && ("down" === e ? 2 : 1))
10717          : !1;
10718      },
10719      _intersectsWithSides: function (t) {
10720        var e = this._isOverAxis(
10721            this.positionAbs.top + this.offset.click.top,
10722            t.top + t.height / 2,
10723            t.height,
10724          ),
10725          i = this._isOverAxis(
10726            this.positionAbs.left + this.offset.click.left,
10727            t.left + t.width / 2,
10728            t.width,
10729          ),
10730          s = this._getDragVerticalDirection(),
10731          n = this._getDragHorizontalDirection();
10732        return this.floating && n
10733          ? ("right" === n && i) || ("left" === n && !i)
10734          : s && (("down" === s && e) || ("up" === s && !e));
10735      },
10736      _getDragVerticalDirection: function () {
10737        var t = this.positionAbs.top - this.lastPositionAbs.top;
10738        return 0 !== t && (t > 0 ? "down" : "up");
10739      },
10740      _getDragHorizontalDirection: function () {
10741        var t = this.positionAbs.left - this.lastPositionAbs.left;
10742        return 0 !== t && (t > 0 ? "right" : "left");
10743      },
10744      refresh: function (t) {
10745        return (
10746          this._refreshItems(t),
10747          this._setHandleClassName(),
10748          this.refreshPositions(),
10749          this
10750        );
10751      },
10752      _connectWith: function () {
10753        var t = this.options;
10754        return t.connect
10754With.constructor === String
10755          ? [t.connectWith]
10756          : t.connectWith;
10757      },
10758      _getItemsAsjQuery: function (e) {
10759        function i() {
10760          r.push(this);
10761        }
10762        var s,
10763          n,
10764          o,
10765          a,
10766          r = [],
10767          h = [],
10768          l = this._connectWith();
10769        if (l && e)
10770          for (s = l.length - 1; s >= 0; s--)
10771            for (o = t(l[s], this.document[0]), n = o.length - 1; n >= 0; n--)
10772              (a = t.data(o[n], this.widgetFullName)),
10773                a &&
10774                  a !== this &&
10775                  !a.options.disabled &&
10776                  h.push([
10777                    t.isFunction(a.options.items)
10778                      ? a.options.items.call(a.element)
10779                      : t(a.options.items, a.element)
10780                          .not(".ui-sortable-helper")
10781                          .not(".ui-sortable-placeholder"),
10782                    a,
10783                  ]);
10784        for (
10785          h.push([
10786            t.isFunction(this.options.items)
10787              ? this.options.items.call(this.element, null, {
10788                  options: this.options,
10789                  item: this.currentItem,
10790                })
10791              : t(this.options.items, this.element)
10792                  .not(".ui-sortable-helper")
10793                  .not(".ui-sortable-placeholder"),
10794            this,
10795          ]),
10796            s = h.length - 1;
10797          s >= 0;
10798          s--
10799        )
10800          h[s][0].each(i);
10801        return t(r);
10802      },
10803      _removeCurrentsFromItems: function () {
10804        var e = this.currentItem.find(":data(" + this.widgetName + "-item)");
10805        this.items = t.grep(this.items, function (t) {
10806          for (var i = 0; e.length > i; i++) if (e[i] === t.item[0]) return !1;
10807          return !0;
10808        });
10809      },
10810      _refreshItems: function (e) {
10811        (this.items = []), (this.containers = [this]);
10812        var i,
10813          s,
10814          n,
10815          o,
10816          a,
10817          r,
10818          h,
10819          l,
10820          c = this.items,
10821          u = [
10822            [
10823              t.isFunction(this.options.items)
10824                ? this.options.items.call(this.element[0], e, {
10825                    item: this.currentItem,
10826                  })
10827                : t(this.options.items, this.element),
10828              this,
10829            ],
10830          ],
10831          d = this._connectWith();
10832        if (d && this.ready)
10833          for (i = d.length - 1; i >= 0; i--)
10834            for (n = t(d[i], this.document[0]), s = n.length - 1; s >= 0; s--)
10835              (o = t.data(n[s], this.widgetFullName)),
10836                o &&
10837                  o !== this &&
10838                  !o.options.disabled &&
10839                  (u.push([
10840                    t.isFunction(o.options.items)
10841                      ? o.options.items.call(o.element[0], e, {
10842                          item: this.currentItem,
10843                        })
10844                      : t(o.options.items, o.element),
10845                    o,
10846                  ]),
10847                  this.containers.push(o));
10848        for (i = u.length - 1; i >= 0; i--)
10849          for (a = u[i][1], r = u[i][0], s = 0, l = r.length; l > s; s++)
10850            (h = t(r[s])),
10851              h.data(this.widgetName + "-item", a),
10852              c.push({
10853                item: h,
10854                instance: a,
10855                width: 0,
10856                height: 0,
10857                left: 0,
10858                top: 0,
10859              });
10860      },
10861      refreshPositions: function (e) {
10862        (this.floating = this.items.length
10863          ? "x" === this.options.axis || this._isFloating(this.items[0].item)
10864          : !1),
10865          this.offsetParent &&
10866            this.helper &&
10867            (this.offset.parent = this._getParentOffset());
10868        var i, s, n, o;
10869        for (i = this.items.length - 1; i >= 0; i--)
10870          (s = this.items[i]),
10871            (s.instance !== this.currentContainer &&
10872              this.currentContainer &&
10873              s.item[0] !== this.currentItem[0]) ||
10874              ((n = this.options.toleranceElement
10875                ? t(this.options.toleranceElement, s.item)
10876                : s.item),
10877              e || ((s.width = n.outerWidth()), (s.height = n.outerHeight())),
10878              (o = n.offset()),
10879              (s.left = o.left),
10880              (s.top = o.top));
10881        if (this.options.custom && this.options.custom.refreshContainers
10881)
10882          this.options.custom.refreshContainers.call(this);
10883        else
10884          for (i = this.containers.length - 1; i >= 0; i--)
10885            (o = this.containers[i].element.offset()),
10886              (this.containers[i].containerCache.left = o.left),
10887              (this.containers[i].containerCache.top = o.top),
10888              (this.containers[i].containerCache.width =
10889                this.containers[i].element.outerWidth()),
10890              (this.containers[i].containerCache.height =
10891                this.containers[i].element.outerHeight());
10892        return this;
10893      },
10894      _createPlaceholder: function (e) {
10895        e = e || this;
10896        var i,
10897          s = e.options;
10898        (s.placeholder && s.placeholder.constructor !== String) ||
10899          ((i = s.placeholder),
10900          (s.placeholder = {
10901            element: function () {
10902              var s = e.currentItem[0].nodeName.toLowerCase(),
10903                n = t("<" + s + ">", e.document[0]);
10904              return (
10905                e
10906                  ._addClass(
10907                    n,
10908                    "ui-sortable-placeholder",
10909                    i || e.currentItem[0].className,
10910                  )
10911                  ._removeClass(n, "ui-sortable-helper"),
10912                "tbody" === s
10913                  ? e._createTrPlaceholder(
10914                      e.currentItem.find("tr").eq(0),
10915                      t("<tr>", e.document[0]).appendTo(n),
10916                    )
10917                  : "tr" === s
10918                    ? e._createTrPlaceholder(e.currentItem, n)
10919                    : "img" === s && n.attr("src", e.currentItem.attr("src")),
10920                i || n.css("visibility", "hidden"),
10921                n
10922              );
10923            },
10924            update: function (t, n) {
10925              (!i || s.forcePlaceholderSize) &&
10926                (n.height() ||
10927                  n.height(
10928                    e.currentItem.innerHeight() -
10929                      parseInt(e.currentItem.css("paddingTop") || 0, 10) -
10930                      parseInt(e.currentItem.css("paddingBottom") || 0, 10),
10931                  ),
10932                n.width() ||
10933                  n.width(
10934                    e.currentItem.innerWidth() -
10935                      parseInt(e.currentItem.css("paddingLeft") || 0, 10) -
10936                      parseInt(e.currentItem.css("paddingRight") || 0, 10),
10937                  ));
10938            },
10939          })),
10940          (e.placeholder = t(
10941            s.placeholder.element.call(e.element, e.currentItem),
10942          )),
10943          e.currentItem.after(e.placeholder),
10944          s.placeholder.update(e, e.placeholder);
10945      },
10946      _createTrPlaceholder: function (e, i) {
10947        var s = this;
10948        e.children().each(function () {
10949          t("<td>&#160;</td>", s.document[0])
10950            .attr("colspan", t(this).attr("colspan") || 1)
10951            .appendTo(i);
10952        });
10953      },
10954      _contactContainers: function (e) {
10955        var i,
10956          s,
10957          n,
10958          o,
10959          a,
10960          r,
10961          h,
10962          l,
10963          c,
10964          u,
10965          d = null,
10966          p = null;
10967        for (i = this.containers.length - 1; i >= 0; i--)
10968          if (!t.contains(this.currentItem[0], this.containers[i].element[0]))
10969            if (this._intersectsWith(this.containers[i].containerCache)) {
10970              if (d && t.contains(this.containers[i].element[0], d.element[0]))
10971                continue;
10972              (d = this.containers[i]), (p = i);
10973            } else
10974              this.containers[i].containerCache.over &&
10975                (this.containers[i]._trigger("out", e, this._uiHash(this)),
10976                (this.containers[i].containerCache.over = 0));
10977        if (d)
10978          if (1 === this.containers.length)
10979            this.containers[p].containerCache.over ||
10980              (this.containers[p]._trigger("over", e, this._uiHash(this)),
10981              (this.containers[p].containerCache.over = 1));
10982          else {
10983            for (
10984              n = 1e4,
10985                o = null,
10986                c = d.floating || this._isFloating(this.currentItem),
10987                a = c ? "left" : "top",
10988                r = c ? "width" : "height",
10989                u = c ? "pageX" : "pageY",
10990                s = this.items.length - 1;
10991              s >= 0;
10992              s--
10993            )
10994              t.contains(
10995                this.containers[p].element[0],
10996                this.items[s].item[0],
10997              ) &&
10998                this.items[s].item[0] !== this.currentItem[0] &&
10999                ((h = this.items[s].item.offset()[a]),
11000                (l = !1),
11001                e[u] - h > this.items[s][r] / 2 && (l = !0),
11002                n > Math.abs(e[u] - h) &&
11003                  ((n = Math.abs(e[u] - h)),
11004                  (o = this.items[s]),
11005                  (this.direction = l ? "up" : "down")));
11006            if (!o && !this.options.dropOnEmpty) return;
11007            if (this.currentContainer === this.containers[p])
11008              return (
11009                this.currentContainer.containerCache.over ||
11010                  (this.containers[p]._trigger("over", e, this._uiHash()),
11011                  (this.currentContainer.containerCache.over = 1)),
11012                void 0
11013              );
11014            o
11015              ? this._rearrange(e, o, null, !0)
11016              : this._rearrange(e, null, this.containers[p].element, !0),
11017              this._trigger("change", e, this._uiHash()),
11018              this.containers[p]._trigger("change", e, this._uiHash(this)),
11019              (this.currentContainer = this.containers[p]),
11020              this.options.placeholder.update(
11021                this.currentContainer,
11022                this.placeholder,
11023              ),
11024              this.containers[p]._trigger("over", e, this._uiHash(this)),
11025              (this.containers[p].containerCache.over = 1);
11026          }
11027      },
11028      _createHelper: function (e) {
11029        var i = this.options,
11030          s = t.isFunction(i.helper)
11031            ? t(i.helper.apply(this.element[0], [e, this.currentItem]))
11032            : "clone" === i.helper
11033              ? this.currentItem.clone()
11034              : this.currentItem;
11035        return (
11036          s.parents("body").length ||
11037            t(
11038              "parent" !== i.appendTo
11039                ? i.appendTo
11040                : this.currentItem[0].parentNode,
11041            )[0].appendChild(s[0]),
11042          s[0] === this.currentItem[0] &&
11043            (this._storedCSS = {
11044              width: this.currentItem[0].style.width,
11045              height: this.currentItem[0].style.height,
11046              position: this.currentItem.css("position"),
11047              top: this.currentItem.css("top"),
11048              left: this.currentItem.css("left"),
11049            }),
11050          (!s[0].style.width || i.forceHelperSize) &&
11051            s.width(this.currentItem.width()),
11052          (!s[0].style.height || i.forceHelperSize) &&
11053            s.height(this.currentItem.height()),
11054          s
11055        );
11056      },
11057      _adjustOffsetFromHelper: function (e) {
11058        "string" == typeof e && (e = e.split(" ")),
11059          t.isArray(e) && (e = { left: +e[0], top: +e[1] || 0 }),
11060          "left" in e && (this.offset.click.left = e.left + this.margins.left),
11061          "right" in e &&
11062            (this.offset.click.left =
11063              this.helperProportions.width - e.right + this.margins.left),
11064          "top" in e && (this.offset.click.top = e.top + this.margins.top),
11065          "bottom" in e &&
11066            (this.offset.click.top =
11067              this.helperProportions.height - e.bottom + this.margins.top);
11068      },
11069      _getParentOffset: function () {
11070        this.offsetParent = this.helper.offsetParent();
11071        var e = this.offsetParent.offset();
11072        return (
11073          "absolute" === this.cssPosition &&
11074            this.scrollParent[0] !== this.document[0] &&
11075            t.contains(this.scrollParent[0], this.offsetParent[0]) &&
11076            ((e.left += this.scrollParent.scrollLeft()),
11077            (e.top += this.scrollParent.scrollTop())),
11078          (this.offsetParent[0] === this.document[0].body ||
11079            (this.offsetParent[0].tagName &&
11080              "html" === this.offsetParent[0].tagName.toLowerCase() &&
11081              t.ui.ie)) &&
11082            (e = { top: 0, left: 0 }),
11083          {
11084            top:
11085              e.top +
11086              (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
11087            left:
11088              e.left +
11089              (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0),
11090          }
11091        );
11092      },
11093      _getRelativeOffset: function () {
11094        if ("relative" === this.cssPosition) {
11095          var t = this.currentItem.position();
11096          return {
11097            top:
11098              t.top -
11099              (parseInt(this.helper.css("top"), 10) || 0) +
11100              this.scrollParent.scrollTop(),
11101            left:
11102              t.left -
11103              (parseInt(this.helper.css("left"), 10) || 0) +
11104              this.scrollParent.scrollLeft(),
11105          };
11106        }
11107        return { top: 0, left: 0 };
11108      },
11109      _cacheMargins: function () {
11110        this.margins = {
11111          left: parseInt(this.currentItem.css("marginLeft"), 10) || 0,
11112          top: parseInt(this.currentItem.css("marginTop"), 10) || 0,
11113        };
11114      },
11115      _cacheHelperProportions: function () {
11116        this.helperProportions = {
11117          width: this.helper.outerWidth(),
11118          height: this.helper.outerHeight(),
11119        };
11120      },
11121      _setContainment: function () {
11122        var e,
11123          i,
11124          s,
11125          n = this.options;
11126        "parent" === n.containment &&
11127          (n.containment = this.helper[0].parentNode),
11128          ("document" === n.containment || "window" === n.containment) &&
11129            (this.containment = [
11130              0 - this.offset.relative.left - this.offset.parent.left,
11131              0 - this.offset.relative.top - this.offset.parent.top,
11132              "document" === n.containment
11133                ? this.document.width()
11134                : this.window.width() -
11135                  this.helperProportions.width -
11136                  this.margins.left,
11137              ("document" === n.containment
11138                ? this.document.height() ||
11139                  document.body.parentNode.scrollHeight
11140                : this.window.height() ||
11141                  this.document[0].body.parentNode.scrollHeight) -
11142                this.helperProportions.height -
11143                this.margins.top,
11144            ]),
11145          /^(document|window|parent)$/.test(n.containment) ||
11146            ((e = t(n.containment)[0]),
11147            (i = t(n.containment).offset()),
11148            (s = "hidden" !== t(e).css("overflow")),
11149            (this.containment = [
11150              i.left +
11151                (parseInt(t(e).css("borderLeftWidth"), 10) || 0) +
11152                (parseInt(t(e).css("paddingLeft"), 10) || 0) -
11153                this.margins.left,
11154              i.top +
11155                (parseInt(t(e).css("borderTopWidth"), 10) || 0) +
11156                (parseInt(t(e).css("paddingTop"), 10) || 0) -
11157                this.margins.top,
11158              i.left +
11159                (s ? Math.max(e.scrollWidth, e.offsetWidth) : e.offsetWidth) -
11160                (parseInt(t(e).css("borderLeftWidth"), 10) || 0) -
11161                (parseInt(t(e).css("paddingRight"), 10) || 0) -
11162                this.helperProportions.width -
11163                this.margins.left,
11164              i.top +
11165                (s
11166                  ? Math.max(e.scrollHeight, e.offsetHeight)
11167                  : e.offsetHeight) -
11168                (parseInt(t(e).css("borderTopWidth"), 10) || 0) -
11169                (parseInt(t(e).css("paddingBottom"), 10) || 0) -
11170                this.helperProportions.height -
11171                this.margins.top,
11172            ]));
11173      },
11174      _convertPositionTo: function (e, i) {
11175        i || (i = this.position);
11176        var s = "absolute" === e ? 1 : -1,
11177          n =
11178            "absolute" !== this.cssPosition ||
11179            (this.scrollParent[0] !== this.document[0] &&
11180              t.contains(this.scrollParent[0], this.offsetParent[0]))
11181              ? this.scrollParent
11182              : this.offsetParent,
11183          o = /(html|body)/i.test(n[0].tagName);
11184        return {
11185          top:
11186            i.top +
11187            this.offset.relative.top * s +
11188            this.offset.parent.top * s -
11189            ("fixed" === this.cssPosition
11190              ? -this.scrollParent.scrollTop()
11191              : o
11192                ? 0
11193                : n.scrollTop()) *
11194              s,
11195          left:
11196            i.left +
11197            this.offset.relative.left * s +
11198            this.offset.parent.left * s -
11199            ("fixed" === this.cssPosition
11200              ? -this.scrollParent.scrollLeft()
11201              : o
11202                ? 0
11203                : n.scrollLeft()) *
11204              s,
11205        };
11206      },
11207      _generatePosition: function (e) {
11208        var i,
11209          s,
11210          n = this.options,
11211          o = e.pageX,
11212          a = e.pageY,
11213          r =
11214            "absolute" !== this.cssPosition ||
11215            (this.scrollParent[0] !== this.document[0] &&
11216              t.contains(this.scrollParent[0], this.offsetParent[0]))
11217              ? this.scrollParent
11218              : this.offsetParent,
11219          h = /(html|body)/i.test(r[0].tagName);
11220        return (
11221          "relative" !== this.cssPosition ||
11222            (this.scrollParent[0] !== this.document[0] &&
11223              this.scrollParent[0] !== this.offsetParent[0]) ||
11224            (this.offset.relative = this._getRelativeOffset()),
11225          this.originalPosition &&
11226            (this.containment &&
11227              (e.pageX - this.offset.click.left < this.containment[0] &&
11228                (o = this.containment[0] + this.offset.click.left),
11229              e.pageY - this.offset.click.top < this.containment[1] &&
11230                (a = this.containment[1] + this.offset.click.top),
11231              e.pageX - this.offset.click.left > this.containment[2] &&
11232                (o = this.containment[2] + this.offset.click.left),
11233              e.pageY - this.offset.click.top > this.containment[3] &&
11234                (a = this.containment[3] + this.offset.click.top)),
11235            n.grid &&
11236              ((i =
11237                this.originalPageY +
11238                Math.round((a - this.originalPageY) / n.grid[1]) * n.grid[1]),
11239              (a = this.containment
11240                ? i - this.offset.click.top >= this.containment[1] &&
11241                  i - this.offset.click.top <= this.containment[3]
11242                  ? i
11243                  : i - this.offset.click.top >= this.containment[1]
11244                    ? i - n.grid[1]
11245                    : i + n.grid[1]
11246                : i),
11247              (s =
11248                this.originalPageX +
11249                Math.round((o - this.originalPageX) / n.grid[0]) * n.grid[0]),
11250              (o = this.containment
11251                ? s - this.offset.click.left >= this.containment[0] &&
11252                  s - this.offset.click.left <= this.containment[2]
11253                  ? s
11254                  : s - this.offset.click.left >= this.containment[0]
11255                    ? s - n.grid[0]
11256                    : s + n.grid[0]
11257                : s))),
11258          {
11259            top:
11260              a -
11261              this.offset.click.top -
11262              this.offset.relative.top -
11263              this.offset.parent.top +
11264              ("fixed" === this.cssPosition
11265                ? -this.scrollParent.scrollTop()
11266                : h
11267                  ? 0
11268                  : r.scrollTop()),
11269            left:
11270              o -
11271              this.offset.click.left -
11272              this.offset.relative.left -
11273              this.offset.parent.left +
11274              ("fixed" === this.cssPosition
11275                ? -this.scrollParent.scrollLeft()
11276                : h
11277                  ? 0
11278                  : r.scrollLeft()),
11279          }
11280        );
11281      },
11282      _rearrange: function (t, e, i, s) {
11283        i
11284          ? i[0].appendChild(this.placeholder[0])
11285          : e.item[0].parentNode.insertBefore(
11286              this.placeholder[0],
11287              "down" === this.direction ? e.item[0] : e.item[0].nextSibling,
11288            ),
11289          (this.counter = this.counter ? ++this.counter : 1);
11290        var n = this.counter;
11291        this._delay(function () {
11292          n === this.counter && this.refreshPositions(!s);
11293        });
11294      },
11295      _clear: function (t, e) {
11296        function i(t, e, i) {
11297          return function (s) {
11298            i._trigger(t, s, e._uiHash(e));
11299          };
11300        }
11301        this.reverting = !1;
11302        var s,
11303          n = [];
11304        if (
11305          (!this._noFinalSort &&
11306            this.currentItem.parent().length &&
11307            this.placeholder.before(this.currentItem),
11308          (this._noFinalSort = null),
11309          this.helper[0] === this.currentItem[0])
11310        ) {
11311          for (s in this._storedCSS)
11312            ("auto" === this._storedCSS[s] ||
11313              "static" === this._storedCSS[s]) &&
11314              (this._storedCSS[s] = "");
11315          this.currentItem.css(this._storedCSS),
11316            this._removeClass(this.currentItem, "ui-sortable-helper");
11317        } else this.currentItem.show();
11318        for (
11319          this.fromOutside &&
11320            !e &&
11321            n.push(function (t) {
11322              this._trigger("receive", t, this._uiHash(this.fromOutside));
11323            }),
11324            (!this.fromOutside &&
11325              this.domPosition.prev ===
11326                this.currentItem.prev().not(".ui-sortable-helper")[0] &&
11327              this.domPosition.parent === this.currentItem.parent()[0]) ||
11328              e ||
11329              n.push(function (t) {
11330                this._trigger("update", t, this._uiHash());
11331              }),
11332            this !== this.currentContainer &&
11333              (e ||
11334                (n.push(function (t) {
11335                  this._trigger("remove", t, this._uiHash());
11336                }),
11337                n.push(
11338                  function (t) {
11339                    return function (e) {
11340                      t._trigger("receive", e, this._uiHash(this));
11341                    };
11342                  }.call(this, this.currentContainer),
11343                ),
11344                n.push(
11345                  function (t) {
11346                    return function (e) {
11347                      t._trigger("update", e, this._uiHash(this));
11348                    };
11349                  }.call(this, this.currentContainer),
11350                ))),
11351            s = this.containers.length - 1;
11352          s >= 0;
11353          s--
11354        )
11355          e || n.push(i("deactivate", this, this.containers[s])),
11356            this.containers[s].containerCache.over &&
11357              (n.push(i("out", this, this.containers[s])),
11358              (this.containers[s].containerCache.over = 0));
11359        if (
11360          (this.storedCursor &&
11361            (this.document.find("body").css("cursor", this.storedCursor),
11362            this.storedStylesheet.remove()),
11363          this._storedOpacity &&
11364            this.helper.css("opacity", this._storedOpacity),
11365          this._storedZIndex &&
11366            this.helper.css(
11367              "zIndex",
11368              "auto" === this._storedZIndex ? "" : this._storedZIndex,
11369            ),
11370          (this.dragging = !1),
11371          e || this._trigger("beforeStop", t, this._uiHash()),
11372          this.placeholder[0].parentNode.removeChild(this.placeholder[0]),
11373          this.cancelHelperRemoval ||
11374            (this.helper[0] !== this.currentItem[0] && this.helper.remove(),
11375            (this.helper = null)),
11376          !e)
11377        ) {
11378          for (s = 0; n.length > s; s++) n[s].call(this, t);
11379          this._trigger("stop", t, this._uiHash());
11380        }
11381        return (this.fromOutside = !1), !this.cancelHelperRemoval;
11382      },
11383      _trigger: function () {
11384        t.Widget.prototype._trigger.apply(this, arguments) === !1 &&
11385          this.cancel();
11386      },
11387      _uiHash: function (e) {
11388        var i = e || this;
11389        return {
11390          helper: i.helper,
11391          placeholder: i.placeholder || t([]),
11392          position: i.position,
11393          originalPosition: i.originalPosition,
11394          offset: i.positionAbs,
11395          item: i.currentItem,
11396          sender: e ? e.element : null,
11397        };
11398      },
11399    }),
11400    t.widget("ui.spinner", {
11401      version: "1.12.1",
11402      defaultElement: "<input>",
11403      widgetEventPrefix: "spin",
11404      options: {
11405        classes: {
11406          "ui-spinner": "ui-corner-all",
11407          "ui-spinner-down": "ui-corner-br",
11408          "ui-spinner-up": "ui-corner-tr",
11409        },
11410        culture: null,
11411        icons: { down: "ui-icon-triangle-1-s", up: "ui-icon-triangle-1-n" },
11412        incremental: !0,
11413        max: null,
11414        min: null,
11415        numberFormat: null,
11416        page: 10,
11417        step: 1,
11418        change: null,
11419        spin: null,
11420        start: null,
11421        stop: null,
11422      },
11423      _create: function () {
11424        this._setOption("max", this.options.max),
11425          this._setOption("min", this.options.min),
11426          this._setOption("step", this.options.step),
11427          "" !== this.value() && this._value(this.element.val(), !0),
11428          this._draw(),
11429          this._on(this._events),
11430          this._refresh(),
11431          this._on(this.window, {
11432            beforeunload: function () {
11433              this.element.removeAttr("autocomplete");
11434            },
11435          });
11436      },
11437      _getCreateOptions: function () {
11438        var e = this._super(),
11439          i = this.element;
11440        return (
11441          t.each(["min", "max", "step"], function (t, s) {
11442            var n = i.attr(s);
11443            null != n && n.length && (e[s] = n);
11444          }),
11445          e
11446        );
11447      },
11448      _events: {
11449        keydown: function (t) {
11450          this._start(t) && this._keydown(t) && t.preventDefault();
11451        },
11452        keyup: "_stop",
11453        focus: function () {
11454          this.previous = this.element.val();
11455        },
11456        blur: function (t) {
11457          return this.cancelBlur
11458            ? (delete this.cancelBlur, void 0)
11459            : (this._stop(),
11460              this._refresh(),
11461              this.previous !== this.element.val() &&
11462                this._trigger("change", t),
11463              void 0);
11464        },
11465        mousewheel: function (t, e) {
11466          if (e) {
11467            if (!this.spinning && !this._start(t)) return !1;
11468            this._spin((e > 0 ? 1 : -1) * this.options.step, t),
11469              clearTimeout(this.mousewheelTimer),
11470              (this.mousewheelTimer = this._delay(function () {
11471                this.spinning && this._stop(t);
11472              }, 100)),
11473              t.preventDefault();
11474          }
11475        },
11476        "mousedown .ui-spinner-button": function (e) {
11477          function i() {
11478            var e =
11479              this.element[0] === t.ui.safeActiveElement(this.document[0]);
11480            e ||
11481              (this.element.trigger("focus"),
11482              (this.previous = s),
11483              this._delay(function () {
11484                this.previous = s;
11485              }));
11486          }
11487          var s;
11488          (s =
11489            this.element[0] === t.ui.safeActiveElement(this.document[0])
11490              ? this.previous
11491              : this.element.val()),
11492            e.preventDefault(),
11493            i.call(this),
11494            (this.cancelBlur = !0),
11495            this._delay(function () {
11496              delete this.cancelBlur, i.call(this);
11497            }),
11498            this._start(e) !== !1 &&
11499              this._repeat(
11500                null,
11501                t(e.currentTarget).hasClass("ui-spinner-up") ? 1 : -1,
11502                e,
11503              );
11504        },
11505        "mouseup .ui-spinner-button": "_stop",
11506        "mouseenter .ui-spinner-button": function (e) {
11507          return t(e.currentTarget).hasClass("ui-state-active")
11508            ? this._start(e) === !1
11509              ? !1
11510              : (this._repeat(
11511                  null,
11512                  t(e.currentTarget).hasClass("ui-spinner-up") ? 1 : -1,
11513                  e,
11514                ),
11515                void 0)
11516            : void 0;
11517        },
11518        "mouseleave .ui-spinner-button": "_stop",
11519      },
11520      _enhance: function () {
11521        this.uiSpinner = this.element
11522          .attr("autocomplete", "off")
11523          .wrap("<span>")
11524          .parent()
11525          .append("<a></a><a></a>");
11526      },
11527      _draw: function () {
11528        this._enhance(),
11529          this._addClass(
11530            this.uiSpinner,
11531            "ui-spinner",
11532            "ui-widget ui-widget-content",
11533          ),
11534          this._addClass("ui-spinner-input"),
11535          this.element.attr("role", "spinbutton"),
11536          (this.buttons = this.uiSpinner
11537            .children("a")
11538            .attr("tabIndex", -1)
11539            .attr("aria-hidden", !0)
11540            .button({ classes: { "ui-button": "" } })),
11541          this._removeClass(this.buttons, "ui-corner-all"),
11542          this._addClass(
11543            this.buttons.first(),
11544            "ui-spinner-button ui-spinner-up",
11545          ),
11546          this._addClass(
11547            this.buttons.last(),
11548            "ui-spinner-button ui-spinner-down",
11549          ),
11550          this.buttons
11551            .first()
11552            .button({ icon: this.options.icons.up, showLabel: !1 }),
11553          this.buttons
11554            .last()
11555            .button({ icon: this.options.icons.down, showLabel: !1 }),
11556          this.buttons.height() > Math.ceil(0.5 * this.uiSpinner.height()) &&
11557            this.uiSpinner.height() > 0 &&
11558            this.uiSpinner.height(this.uiSpinner.height());
11559      },
11560      _keydown: function (e) {
11561        var i = this.options,
11562          s = t.ui.keyCode;
11563        switch (e.keyCode) {
11564          case s.UP:
11565            return this._repeat(null, 1, e), !0;
11566          case s.DOWN:
11567            return this._repeat(null, -1, e), !0;
11568          case s.PAGE_UP:
11569            return this._repeat(null, i.page, e), !0;
11570          case s.PAGE_DOWN:
11571            return this._repeat(null, -i.page, e), !0;
11572        }
11573        return !1;
11574      },
11575      _start: function (t) {
11576        return this.spinning || this._trigger("start", t) !== !1
11577          ? (this.counter || (this.counter = 1), (this.spinning = !0), !0)
11578          : !1;
11579      },
11580      _repeat: function (t, e, i) {
11581        (t = t || 500),
11582          clearTimeout(this.timer),
11583          (this.timer = this._delay(function () {
11584            this._repeat(40, e, i);
11585          }, t)),
11586          this._spin(e * this.options.step, i);
11587      },
11588      _spin: function (t, e) {
11589        var i = this.value() || 0;
11590        this.counter || (this.counter = 1),
11591          (i = this._adjustValue(i + t * this._increment(this.counter))),
11592          (this.spinning && this._trigger("spin", e, { value: i }) === !1) ||
11593            (this._value(i), this.counter++);
11594      },
11595      _increment: function (e) {
11596        var i = this.options.incremental;
11597        return i
11598          ? t.isFunction(i)
11599            ? i(e)
11600            : Math.floor((e * e * e) / 5e4 - (e * e) / 500 + (17 * e) / 200 + 1)
11601          : 1;
11602      },
11603      _precision: function () {
11604        var t = this._precisionOf(this.options.step);
11605        return (
11606          null !== this.options.min &&
11607            (t = Math.max(t, this._precisionOf(this.options.min))),
11608          t
11609        );
11610      },
11611      _precisionOf: function (t) {
11612        var e = "" + t,
11613          i = e.indexOf(".");
11614        return -1 === i ? 0 : e.length - i - 1;
11615      },
11616      _adjustValue: function (t) {
11617        var e,
11618          i,
11619          s = this.options;
11620        return (
11621          (e = null !== s.min ? s.min : 0),
11622          (i = t - e),
11623          (i = Math.round(i / s.step) * s.step),
11624          (t = e + i),
11625          (t = parseFloat(t.toFixed(this._precision()))),
11626          null !== s.max && t > s.max
11627            ? s.max
11628            : null !== s.min && s.min > t
11629              ? s.min
11630              : t
11631        );
11632      },
11633      _stop: function (t) {
11634        this.spinning &&
11635          (clearTimeout(this.timer),
11636          clearTimeout(this.mousewheelTimer),
11637          (this.counter = 0),
11638          (this.spinning = !1),
11639          this._trigger("stop", t));
11640      },
11641      _setOption: function (t, e) {
11642        var i, s, n;
11643        return "culture" === t || "numberFormat" === t
11644          ? ((i = this._parse(this.element.val())),
11645            (this.options[t] = e),
11646            this.element.val(this._format(i)),
11647            void 0)
11648          : (("max" === t || "min" === t || "step" === t) &&
11649              "string" == typeof e &&
11650              (e = this._parse(e)),
11651            "icons" === t &&
11652              ((s = this.buttons.first().find(".ui-icon")),
11653              this._removeClass(s, null, this.options.icons.up),
11654              this._addClass(s, null, e.up),
11655              (n = this.buttons.last().find(".ui-icon")),
11656              this._removeClass(n, null, this.options.icons.down),
11657              this._addClass(n, null, e.down)),
11658            this._super(t, e),
11659            void 0);
11660      },
11661      _setOptionDisabled: function (t) {
11662        this._super(t),
11663          this._toggleClass(this.uiSpinner, null, "ui-state-disabled", !!t),
11664          this.element.prop("disabled", !!t),
11665          this.buttons.button(t ? "disable" : "enable");
11666      },
11667      _setOptions: r(function (t) {
11668        this._super(t);
11669      }),
11670      _parse: function (t) {
11671        return (
11672          "string" == typeof t &&
11673            "" !== t &&
11674            (t =
11675              window.Globalize && this.options.numberFormat
11676                ? Globalize.parseFloat(t, 10, this.options.culture)
11677                : +t),
11678          "" === t || isNaN(t) ? null : t
11679        );
11680      },
11681      _format: function (t) {
11682        return "" === t
11683          ? ""
11684          : window.Globalize && this.options.numberFormat
11685            ? Globalize.format(
11686                t,
11687                this.options.numberFormat,
11688                this.options.culture,
11689              )
11690            : t;
11691      },
11692      _refresh: function () {
11693        this.element.attr({
11694          "aria-valuemin": this.options.min,
11695          "aria-valuemax": this.options.max,
11696          "aria-valuenow": this._parse(this.element.val()),
11697        });
11698      },
11699      isValid: function () {
11700        var t = this.value();
11701        return null === t ? !1 : t === this._adjustValue(t);
11702      },
11703      _value: function (t, e) {
11704        var i;
11705        "" !== t &&
11706          ((i = this._parse(t)),
11707          null !== i &&
11708            (e || (i = this._adjustValue(i)), (t = this._format(i)))),
11709          this.element.val(t),
11710          this._refresh();
11711      },
11712      _destroy: function () {
11713        this.element
11714          .prop("disabled", !1)
11715          .removeAttr(
11716            "autocomplete role aria-valuemin aria-valuemax aria-valuenow",
11717          ),
11718          this.uiSpinner.replaceWith(this.element);
11719      },
11720      stepUp: r(function (t) {
11721        this._stepUp(t);
11722      }),
11723      _stepUp: function (t) {
11724        this._start() &&
11725          (this._spin((t || 1) * this.options.step), this._stop());
11726      },
11727      stepDown: r(function (t) {
11728        this._stepDown(t);
11729      }),
11730      _stepDown: function (t) {
11731        this._start() &&
11732          (this._spin((t || 1) * -this.options.step), this._stop());
11733      },
11734      pageUp: r(function (t) {
11735        this._stepUp((t || 1) * this.options.page);
11736      }),
11737      pageDown: r(function (t) {
11738        this._stepDown((t || 1) * this.options.page);
11739      }),
11740      value: function (t) {
11741        return arguments.length
11742          ? (r(this._value).call(this, t), void 0)
11743          : this._parse(this.element.val());
11744      },
11745      widget: function () {
11746        return this.uiSpinner;
11747      },
11748    }),
11749    t.uiBackCompat !== !1 &&
11750      t.widget("ui.spinner", t.ui.spinner, {
11751        _enhance: function () {
11752          this.uiSpinner = this.element
11753            .attr("autocomplete", "off")
11754            .wrap(this._uiSpinnerHtml())
11755            .parent()
11756            .append(this._buttonHtml());
11757        },
11758        _uiSpinnerHtml: function () {
11759          return "<span>";
11760        },
11761        _buttonHtml: function () {
11762          return "<a></a><a></a>";
11763        },
11764      }),
11765    t.ui.spinner,
11766    t.widget("ui.tabs", {
11767      version: "1.12.1",
11768      delay: 300,
11769      options: {
11770        active: null,
11771        classes: {
11772          "ui-tabs": "ui-corner-all",
11773          "ui-tabs-nav": "ui-corner-all",
11774          "ui-tabs-panel": "ui-corner-bottom",
11775          "ui-tabs-tab": "ui-corner-top",
11776        },
11777        collapsible: !1,
11778        event: "click",
11779        heightStyle: "content",
11780        hide: null,
11781        show: null,
11782        activate: null,
11783        beforeActivate: null,
11784        beforeLoad: null,
11785        load: null,
11786      },
11787      _isLocal: (function () {
11788        var t = /#.*$/;
11789        return function (e) {
11790          var i, s;
11791          (i = e.href.replace(t, "")), (s = location.href.replace(t, ""));
11792          try {
11793            i = decodeURIComponent(i);
11794          } catch (n) {}
11795          try {
11796            s = decodeURIComponent(s);
11797          } catch (n) {}
11798          return e.hash.length > 1 && i === s;
11799        };
11800      })(),
11801      _create: function () {
11802        var e = this,
11803          i = this.options;
11804        (this.running = !1),
11805          this._addClass("ui-tabs", "ui-widget ui-widget-content"),
11806          this._toggleClass("ui-tabs-collapsible", null, i.collapsible),
11807          this._processTabs(),
11808          (i.active = this._initialActive()),
11809          t.isArray(i.disabled) &&
11810            (i.disabled = t
11811              .unique(
11812                i.disabled.concat(
11813                  t.map(this.tabs.filter(".ui-state-disabled"), function (t) {
11814                    return e.tabs.index(t);
11815                  }),
11816                ),
11817              )
11818              .sort()),
11819          (this.active =
11820            this.options.active !== !1 && this.anchors.length
11821              ? this._findActive(i.active)
11822              : t()),
11823          this._refresh(),
11824          this.active.length && this.load(i.active);
11825      },
11826      _initialActive: function () {
11827        var e = this.options.active,
11828          i = this.options.collapsible,
11829          s = location.hash.substring(1);
11830        return (
11831          null === e &&
11832            (s &&
11833              this.tabs.each(function (i, n) {
11834                return t(n).attr("aria-controls") === s
11835                  ? ((e = i), !1)
11836                  : void 0;
11837              }),
11838            null === e &&
11839              (e = this.tabs.index(this.tabs.filter(".ui-tabs-active"))),
11840            (null === e || -1 === e) && (e = this.tabs.length ? 0 : !1)),
11841          e !== !1 &&
11842            ((e = this.tabs.index(this.tabs.eq(e))),
11843            -1 === e && (e = i ? !1 : 0)),
11844          !i && e === !1 && this.anchors.length && (e = 0),
11845          e
11846        );
11847      },
11848      _getCreateEventData: function () {
11849        return {
11850          tab: this.active,
11851          panel: this.active.length ? this._getPanelForTab(this.active) : t(),
11852        };
11853      },
11854      _tabKeydown: function (e) {
11855        var i = t(t.ui.safeActiveElement(this.document[0])).closest("li"),
11856          s = this.tabs.index(i),
11857          n = !0;
11858        if (!this._handlePageNav(e)) {
11859          switch (e.keyCode) {
11860            case t.ui.keyCode.RIGHT:
11861            case t.ui.keyCode.DOWN:
11862              s++;
11863              break;
11864            case t.ui.keyCode.UP:
11865            case t.ui.keyCode.LEFT:
11866              (n = !1), s--;
11867              break;
11868            case t.ui.keyCode.END:
11869              s = this.anchors.length - 1;
11870              break;
11871            case t.ui.keyCode.HOME:
11872              s = 0;
11873              break;
11874            case t.ui.keyCode.SPACE:
11875              return (
11876                e.preventDefault(),
11877                clearTimeout(this.activating),
11878                this._activate(s),
11879                void 0
11880              );
11881            case t.ui.keyCode.ENTER:
11882              return (
11883                e.preventDefault(),
11884                clearTimeout(this.activating),
11885                this._activate(s === this.options.active ? !1 : s),
11886                void 0
11887              );
11888            default:
11889              return;
11890          }
11891          e.preventDefault(),
11892            clearTimeout(this.activating),
11893            (s = this._focusNextTab(s, n)),
11894            e.ctrlKey ||
11895              e.metaKey ||
11896              (i.attr("aria-selected", "false"),
11897              this.tabs.eq(s).attr("aria-selected", "true"),
11898              (this.activating = this._delay(function () {
11899                this.option("active", s);
11900              }, this.delay)));
11901        }
11902      },
11903      _panelKeydown: function (e) {
11904        this._handlePageNav(e) ||
11905          (e.ctrlKey &&
11906            e.keyCode === t.ui.keyCode.UP &&
11907            (e.preventDefault(), this.active.trigger("focus")));
11908      },
11909      _handlePageNav: function (e) {
11910        return e.altKey && e.keyCode === t.ui.keyCode.PAGE_UP
11911          ? (this._activate(this._focusNextTab(this.options.active - 1, !1)),
11912            !0)
11913          : e.altKey && e.keyCode === t.ui.keyCode.PAGE_DOWN
11914            ? (this._activate(this._focusNextTab(this.options.active + 1, !0)),
11915              !0)
11916            : void 0;
11917      },
11918      _findNextTab: function (e, i) {
11919        function s() {
11920          return e > n && (e = 0), 0 > e && (e = n), e;
11921        }
11922        for (
11923          var n = this.tabs.length - 1;
11924          -1 !== t.inArray(s(), this.options.disabled);
11925
11926        )
11927          e = i ? e + 1 : e - 1;
11928        return e;
11929      },
11930      _focusNextTab: function (t, e) {
11931        return (
11932          (t = this._findNextTab(t, e)), this.tabs.eq(t).trigger("focus"), t
11933        );
11934      },
11935      _setOption: function (t, e) {
11936        return "active" === t
11937          ? (this._activate(e), void 0)
11938          : (this._super(t, e),
11939            "collapsible" === t &&
11940              (this._toggleClass("ui-tabs-collapsible", null, e),
11941              e || this.options.active !== !1 || this._activate(0)),
11942            "event" === t && this._setupEvents(e),
11943            "heightStyle" === t && this._setupHeightStyle(e),
11944            void 0);
11945      },
11946      _sanitizeSelector: function (t) {
11947        return t
11948          ? t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&")
11949          : "";
11950      },
11951      refresh: function () {
11952        var e = this.options,
11953          i = this.tablist.children(":has(a[href])");
11954        (e.disabled = t.map(i.filter(".ui-state-disabled"), function (t) {
11955          return i.index(t);
11956        })),
11957          this._processTabs(),
11958          e.active !== !1 && this.anchors.length
11959            ? this.active.length && !t.contains(this.tablist[0], this.active[0])
11960              ? this.tabs.length === e.disabled.length
11961                ? ((e.active = !1), (this.active = t()))
11962                : this._activate(
11963                    this._findNextTab(Math.max(0, e.active - 1), !1),
11964                  )
11965              : (e.active = this.tabs.index(this.active))
11966            : ((e.active = !1), (this.active = t())),
11967          this._refresh();
11968      },
11969      _refresh: function () {
11970        this._setOptionDisabled(this.options.disabled),
11971          this._setupEvents(this.options.event),
11972          this._setupHeightStyle(this.options.heightStyle),
11973          this.tabs.not(this.active).attr({
11974            "aria-selected": "false",
11975            "aria-expanded": "false",
11976            tabIndex: -1,
11977          }),
11978          this.panels
11979            .not(this._getPanelForTab(this.active))
11980            .hide()
11981            .attr({ "aria-hidden": "true" }),
11982          this.active.length
11983            ? (this.active.attr({
11984                "aria-selected": "true",
11985                "aria-expanded": "true",
11986                tabIndex: 0,
11987              }),
11988              this._addClass(this.active, "ui-tabs-active", "ui-state-active"),
11989              this._getPanelForTab(this.active)
11990                .show()
11991                .attr({ "aria-hidden": "false" }))
11992            : this.tabs.eq(0).attr("tabIndex", 0);
11993      },
11994      _processTabs: function () {
11995        var e = this,
11996          i = this.tabs,
11997          s = this.anchors,
11998          n = this.panels;
11999        (this.tablist = this._getList().attr("role", "tablist")),
12000          this._addClass(
12001            this.tablist,
12002            "ui-tabs-nav",
12003            "ui-helper-reset ui-helper-clearfix ui-widget-header",
12004          ),
12005          this.tablist
12006            .on("mousedown" + this.eventNamespace, "> li", function (e) {
12007              t(this).is(".ui-state-disabled") && e.preventDefault();
12008            })
12009            .on("focus" + this.eventNamespace, ".ui-tabs-anchor", function () {
12010              t(this).closest("li").is(".ui-state-disabled") && this.blur();
12011            }),
12012          (this.tabs = this.tablist
12013            .find("> li:has(a[href])")
12014            .attr({ role: "tab", tabIndex: -1 })),
12015          this._addClass(this.tabs, "ui-tabs-tab", "ui-state-default"),
12016          (this.anchors = this.tabs
12017            .map(function () {
12018              return t("a", this)[0];
12019            })
12020            .attr({ role: "presentation", tabIndex: -1 })),
12021          this._addClass(this.anchors, "ui-tabs-anchor"),
12022          (this.panels = t()),
12023          this.anchors.each(function (i, s) {
12024            var n,
12025              o,
12026              a,
12027              r = t(s).uniqueId().attr("id"),
12028              h = t(s).closest("li"),
12029              l = h.attr("aria-controls");
12030            e._isLocal(s)
12031              ? ((n = s.hash),
12032                (a = n.substring(1)),
12033                (o = e.element.find(e._sanitizeSelector(n))))
12034              : ((a = h.attr("aria-controls") || t({}).uniqueId()[0].id),
12035                (n = "#" + a),
12036                (o = e.element.find(n)),
12037                o.length ||
12038                  ((o = e._createPanel(a)),
12039                  o.insertAfter(e.panels[i - 1] || e.tablist)),
12040                o.attr("aria-live", "polite")),
12041              o.length && (e.panels = e.panels.add(o)),
12042              l && h.data("ui-tabs-aria-controls", l),
12043              h.attr({ "aria-controls": a, "aria-labelledby": r }),
12044              o.attr("aria-labelledby", r);
12045          }),
12046          this.panels.attr("role", "tabpanel"),
12047          this._addClass(this.panels, "ui-tabs-panel", "ui-widget-content"),
12048          i &&
12049            (this._off(i.not(this.tabs)),
12050            this._off(s.not(this.anchors)),
12051            this._off(n.not(this.panels)));
12052      },
12053      _getList: function () {
12054        return this.tablist || this.element.find("ol, ul").eq(0);
12055      },
12056      _createPanel: function (e) {
12057        return t("<div>").attr("id", e).data("ui-tabs-destroy", !0);
12058      },
12059      _setOptionDisabled: function (e) {
12060        var i, s, n;
12061        for (
12062          t.isArray(e) &&
12063            (e.length
12064              ? e.length === this.anchors.length && (e = !0)
12065              : (e = !1)),
12066            n = 0;
12067          (s = this.tabs[n]);
12068          n++
12069        )
12070          (i = t(s)),
12071            e === !0 || -1 !== t.inArray(n, e)
12072              ? (i.attr("aria-disabled", "true"),
12073                this._addClass(i, null, "ui-state-disabled"))
12074              : (i.removeAttr("aria-disabled"),
12075                this._removeClass(i, null, "ui-state-disabled"));
12076        (this.options.disabled = e),
12077          this._toggleClass(
12078            this.widget(),
12079            this.widgetFullName + "-disabled",
12080            null,
12081            e === !0,
12082          );
12083      },
12084      _setupEvents: function (e) {
12085        var i = {};
12086        e &&
12087          t.each(e.split(" "), function (t, e) {
12088            i[e] = "_eventHandler";
12089          }),
12090          this._off(this.anchors.add(this.tabs).add(this.panels)),
12091          this._on(!0, this.anchors, {
12092            click: function (t) {
12093              t.preventDefault();
12094            },
12095          }),
12096          this._on(this.anchors, i),
12097          this._on(this.tabs, { keydown: "_tabKeydown" }),
12098          this._on(this.panels, { keydown: "_panelKeydown" }),
12099          this._focusable(this.tabs),
12100          this._hoverable(this.tabs);
12101      },
12102      _setupHeightStyle: function (e) {
12103        var i,
12104          s = this.element.parent();
12105        "fill" === e
12106          ? ((i = s.height()),
12107            (i -= this.element.outerHeight() - this.element.height()),
12108            this.element.siblings(":visible").each(function () {
12109              var e = t(this),
12110                s = e.css("position");
12111              "absolute" !== s && "fixed" !== s && (i -= e.outerHeight(!0));
12112            }),
12113            this.element
12114              .children()
12115              .not(this.panels)
12116              .each(function () {
12117                i -= t(this).outerHeight(!0);
12118              }),
12119            this.panels
12120              .each(function () {
12121                t(this).height(
12122                  Math.max(0, i - t(this).innerHeight() + t(this).height()),
12123                );
12124              })
12125              .css("overflow", "auto"))
12126          : "auto" === e &&
12127            ((i = 0),
12128            this.panels
12129              .each(function () {
12130                i = Math.max(i, t(this).height("").height());
12131              })
12132              .height(i));
12133      },
12134      _eventHandler: function (e) {
12135        var i = this.options,
12136          s = this.active,
12137          n = t(e.currentTarget),
12138          o = n.closest("li"),
12139          a = o[0] === s[0],
12140          r = a && i.collapsible,
12141          h = r ? t() : this._getPanelForTab(o),
12142          l = s.length ? this._getPanelForTab(s) : t(),
12143          c = { oldTab: s, oldPanel: l, newTab: r ? t() : o, newPanel: h };
12144        e.preventDefault(),
12145          o.hasClass("ui-state-disabled") ||
12146            o.hasClass("ui-tabs-loading") ||
12147            this.running ||
12148            (a && !i.collapsible) ||
12149            this._trigger("beforeActivate", e, c) === !1 ||
12150            ((i.active = r ? !1 : this.tabs.index(o)),
12151            (this.active = a ? t() : o),
12152            this.xhr && this.xhr.abort(),
12153            l.length ||
12154              h.length ||
12155              t.error("jQuery UI Tabs: Mismatching fragment identifier."),
12156            h.length && this.load(this.tabs.index(o), e),
12157            this._toggle(e, c));
12158      },
12159      _toggle: function (e, i) {
12160        function s() {
12161          (o.running = !1), o._trigger("activate", e, i);
12162        }
12163        function n() {
12164          o._addClass(
12165            i.newTab.closest("li"),
12166            "ui-tabs-active",
12167            "ui-state-active",
12168          ),
12169            a.length && o.options.show
12170              ? o._show(a, o.options.show, s)
12171              : (a.show(), s());
12172        }
12173        var o = this,
12174          a = i.newPanel,
12175          r = i.oldPanel;
12176        (this.running = !0),
12177          r.length && this.options.hide
12178            ? this._hide(r, this.options.hide, function () {
12179                o._removeClass(
12180                  i.oldTab.closest("li"),
12181                  "ui-tabs-active",
12182                  "ui-state-active",
12183                ),
12184                  n();
12185              })
12186            : (this._removeClass(
12187                i.oldTab.closest("li"),
12188                "ui-tabs-active",
12189                "ui-state-active",
12190              ),
12191              r.hide(),
12192              n()),
12193          r.attr("aria-hidden", "true"),
12194          i.oldTab.attr({ "aria-selected": "false", "aria-expanded": "false" }),
12195          a.length && r.length
12196            ? i.oldTab.attr("tabIndex", -1)
12197            : a.length &&
12198              this.tabs
12199                .filter(function () {
12200                  return 0 === t(this).attr("tabIndex");
12201                })
12202                .attr("tabIndex", -1),
12203          a.attr("aria-hidden", "false"),
12204          i.newTab.attr({
12205            "aria-selected": "true",
12206            "aria-expanded": "true",
12207            tabIndex: 0,
12208          });
12209      },
12210      _activate: function (e) {
12211        var i,
12212          s = this._findActive(e);
12213        s[0] !== this.active[0] &&
12214          (s.length || (s = this.active),
12215          (i = s.find(".ui-tabs-anchor")[0]),
12216          this._eventHandler({
12217            target: i,
12218            currentTarget: i,
12219            preventDefault: t.noop,
12220          }));
12221      },
12222      _findActive: function (e) {
12223        return e === !1 ? t() : this.tabs.eq(e);
12224      },
12225      _getIndex: function (e) {
12226        return (
12227          "string" == typeof e &&
12228            (e = this.anchors.index(
12229              this.anchors.filter("[href$='" + t.ui.escapeSelector(e) + "']"),
12230            )),
12231          e
12232        );
12233      },
12234      _destroy: function () {
12235        this.xhr && this.xhr.abort(),
12236          this.tablist.removeAttr("role").off(this.eventNamespace),
12237          this.anchors.removeAttr("role tabIndex").removeUniqueId(),
12238          this.tabs.add(this.panels).each(function () {
12239            t.data(this, "ui-tabs-destroy")
12240              ? t(this).remove()
12241              : t(this).removeAttr(
12242                  "role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded",
12243                );
12244          }),
12245          this.tabs.each(function () {
12246            var e = t(this),
12247              i = e.data("ui-tabs-aria-controls");
12248            i
12249              ? e.attr("aria-controls", i).removeData("ui-tabs-aria-controls")
12250              : e.removeAttr("aria-controls");
12251          }),
12252          this.panels.show(),
12253          "content" !== this.options.heightStyle &&
12254            this.panels.css("height", "");
12255      },
12256      enable: function (e) {
12257        var i = this.options.disabled;
12258        i !== !1 &&
12259          (void 0 === e
12260            ? (i = !1)
12261            : ((e = this._getIndex(e)),
12262              (i = t.isArray(i)
12263                ? t.map(i, function (t) {
12264                    return t !== e ? t : null;
12265                  })
12266                : t.map(this.tabs, function (t, i) {
12267                    return i !== e ? i : null;
12268                  }))),
12269          this._setOptionDisabled(i));
12270      },
12271      disable: function (e) {
12272        var i = this.options.disabled;
12273        if (i !== !0) {
12274          if (void 0 === e) i = !0;
12275          else {
12276            if (((e = this._getIndex(e)), -1 !== t.inArray(e, i))) return;
12277            i = t.isArray(i) ? t.merge([e], i).sort() : [e];
12278          }
12279          this._setOptionDisabled(i);
12280        }
12281      },
12282      load: function (e, i) {
12283        e = this._getIndex(e);
12284        var s = this,
12285          n = this.tabs.eq(e),
12286          o = n.find(".ui-tabs-anchor"),
12287          a = this._getPanelForTab(n),
12288          r = { tab: n, panel: a },
12289          h = function (t, e) {
12290            "abort" === e && s.panels.stop(!1, !0),
12291              s._removeClass(n, "ui-tabs-loading"),
12292              a.removeAttr("aria-busy"),
12293              t === s.xhr && delete s.xhr;
12294          };
12295        this._isLocal(o[0]) ||
12296          ((this.xhr = t.ajax(this._ajaxSettings(o, i, r))),
12297          this.xhr &&
12298            "canceled" !== this.xhr.statusText &&
12299            (this._addClass(n, "ui-tabs-loading"),
12300            a.attr("aria-busy", "true"),
12301            this.xhr
12302              .done(function (t, e, n) {
12303                setTimeout(function () {
12304                  a.html(t), s._trigger("load", i, r), h(n, e);
12305                }, 1);
12306              })
12307              .fail(function (t, e) {
12308                setTimeout(function () {
12309                  h(t, e);
12310                }, 1);
12311              })));
12312      },
12313      _ajaxSettings: function (e, i, s) {
12314        var n = this;
12315        return {
12316          url: e.attr("href").replace(/#.*$/, ""),
12317          beforeSend: function (e, o) {
12318            return n._trigger(
12319              "beforeLoad",
12320              i,
12321              t.extend({ jqXHR: e, ajaxSettings: o }, s),
12322            );
12323          },
12324        };
12325      },
12326      _getPanelForTab: function (e) {
12327        var i = t(e).attr("aria-controls");
12328        return this.element.find(this._sanitizeSelector("#" + i));
12329      },
12330    }),
12331    t.uiBackCompat !== !1 &&
12332      t.widget("ui.tabs", t.ui.tabs, {
12333        _processTabs: function () {
12334          this._superApply(arguments), this._addClass(this.tabs, "ui-tab");
12335        },
12336      }),
12337    t.ui.tabs,
12338    t.widget("ui.tooltip", {
12339      version: "1.12.1",
12340      options: {
12341        classes: { "ui-tooltip": "ui-corner-all ui-widget-shadow" },
12342        content: function () {
12343          var e = t(this).attr("title") || "";
12344          return t("<a>").text(e).html();
12345        },
12346        hide: !0,
12347        items: "[title]:not([disabled])",
12348        position: {
12349          my: "left top+15",
12350          at: "left bottom",
12351          collision: "flipfit flip",
12352        },
12353        show: !0,
12354        track: !1,
12355        close: null,
12356        open: null,
12357      },
12358      _addDescribedBy: function (e, i) {
12359        var s = (e.attr("aria-describedby") || "").split(/\s+/);
12360        s.push(i),
12361          e
12362            .data("ui-tooltip-id", i)
12363            .attr("aria-describedby", t.trim(s.join(" ")));
12364      },
12365      _removeDescribedBy: function (e) {
12366        var i = e.data("ui-tooltip-id"),
12367          s = (e.attr("aria-describedby") || "").split(/\s+/),
12368          n = t.inArray(i, s);
12369        -1 !== n && s.splice(n, 1),
12370          e.removeData("ui-tooltip-id"),
12371          (s = t.trim(s.join(" "))),
12372          s ? e.attr("aria-describedby", s) : e.removeAttr("aria-describedby");
12373      },
12374      _create: function () {
12375        this._on({ mouseover: "open", focusin: "open" }),
12376          (this.tooltips = {}),
12377          (this.parents = {}),
12378          (this.liveRegion = t("<div>")
12379            .attr({
12380              role: "log",
12381              "aria-live": "assertive",
12382              "aria-relevant": "additions",
12383            })
12384            .appendTo(this.document[0].body)),
12385          this._addClass(this.liveRegion, null, "ui-helper-hidden-accessible"),
12386          (this.disabledTitles = t([]));
12387      },
12388      _setOption: function (e, i) {
12389        var s = this;
12390        this._super(e, i),
12391          "content" === e &&
12392            t.each(this.tooltips, function (t, e) {
12393              s._updateContent(e.element);
12394            });
12395      },
12396      _setOptionDisabled: function (t) {
12397        this[t ? "_disable" : "_enable"]();
12398      },
12399      _disable: function () {
12400        var e = this;
12401        t.each(this.tooltips, function (i, s) {
12402          var n = t.Event("blur");
12403          (n.target = n.currentTarget = s.element[0]), e.close(n, !0);
12404        }),
12405          (this.disabledTitles = this.disabledTitles.add(
12406            this.element
12407              .find(this.options.items)
12408              .addBack()
12409              .filter(function () {
12410                var e = t(this);
12411                return e.is("[title]")
12412                  ? e
12413                      .data("ui-tooltip-title", e.attr("title"))
12414                      .removeAttr("title")
12415                  : void 0;
12416              }),
12417          ));
12418      },
12419      _enable: function () {
12420        this.disabledTitles.each(function () {
12421          var e = t(this);
12422          e.data("ui-tooltip-title") &&
12423            e.attr("title", e.data("ui-tooltip-title"));
12424        }),
12425          (this.disabledTitles = t([]));
12426      },
12427      open: function (e) {
12428        var i = this,
12429          s = t(e ? e.target : this.element).closest(this.options.items);
12430        s.length &&
12431          !s.data("ui-tooltip-id") &&
12432          (s.attr("title") && s.data("ui-tooltip-title", s.attr("title")),
12433          s.data("ui-tooltip-open", !0),
12434          e &&
12435            "mouseover" === e.type &&
12436            s.parents().each(function () {
12437              var e,
12438                s = t(this);
12439              s.data("ui-tooltip-open") &&
12440                ((e = t.Event("blur")),
12441                (e.target = e.currentTarget = this),
12442                i.close(e, !0)),
12443                s.attr("title") &&
12444                  (s.uniqueId(),
12445                  (i.parents[this.id] = {
12446                    element: this,
12447                    title: s.attr("title"),
12448                  }),
12449                  s.attr("title", ""));
12450            }),
12451          this._registerCloseHandlers(e, s),
12452          this._updateContent(s, e));
12453      },
12454      _updateContent: function (t, e) {
12455        var i,
12456          s = this.options.content,
12457          n = this,
12458          o = e ? e.type : null;
12459        return "string" == typeof s || s.nodeType || s.jquery
12460          ? this._open(e, t, s)
12461          : ((i = s.call(t[0], function (i) {
12462              n._delay(function () {
12463                t.data("ui-tooltip-open") &&
12464                  (e && (e.type = o), this._open(e, t, i));
12465              });
12466            })),
12467            i && this._open(e, t, i),
12468            void 0);
12469      },
12470      _open: function (e, i, s) {
12471        function n(t) {
12472          (l.of = t), a.is(":hidden") || a.position(l);
12473        }
12474        var o,
12475          a,
12476          r,
12477          h,
12478          l = t.extend({}, this.options.position);
12479        if (s) {
12480          if ((o = this._find(i)))
12481            return o.tooltip.find(".ui-tooltip-content").html(s), void 0;
12482          i.is("[title]") &&
12483            (e && "mouseover" === e.type
12484              ? i.attr("title", "")
12485              : i.removeAttr("title")),
12486            (o = this._tooltip(i)),
12487            (a = o.tooltip),
12488            this._addDescribedBy(i, a.attr("id")),
12489            a.find(".ui-tooltip-content").html(s),
12490            this.liveRegion.children().hide(),
12491            (h = t("<div>").html(a.find(".ui-tooltip-content").html())),
12492            h.removeAttr("name").find("[name]").removeAttr("name"),
12493            h.removeAttr("id").find("[id]").removeAttr("id"),
12494            h.appendTo(this.liveRegion),
12495            this.options.track && e && /^mouse/.test(e.type)
12496              ? (this._on(this.document, { mousemove: n }), n(e))
12497              : a.position(t.extend({ of: i }, this.options.position)),
12498            a.hide(),
12499            this._show(a, this.options.show),
12500            this.options.track &&
12501              this.options.show &&
12502              this.options.show.delay &&
12503              (r = this.delayedShow =
12504                setInterval(function () {
12505                  a.is(":visible") && (n(l.of), clearInterval(r));
12506                }, t.fx.interval)),
12507            this._trigger("open", e, { tooltip: a });
12508        }
12509      },
12510      _registerCloseHandlers: function (e, i) {
12511        var s = {
12512          keyup: function (e) {
12513            if (e.keyCode === t.ui.keyCode.ESCAPE) {
12514              var s = t.Event(e);
12515              (s.currentTarget = i[0]), this.close(s, !0);
12516            }
12517          },
12518        };
12519        i[0] !== this.element[0] &&
12520          (s.remove = function () {
12521            this._removeTooltip(this._find(i).tooltip);
12522          }),
12523          (e && "mouseover" !== e.type) || (s.mouseleave = "close"),
12524          (e && "focusin" !== e.type) || (s.focusout = "close"),
12525          this._on(!0, i, s);
12526      },
12527      close: function (e) {
12528        var i,
12529          s = this,
12530          n = t(e ? e.currentTarget : this.element),
12531          o = this._find(n);
12532        return o
12533          ? ((i = o.tooltip),
12534            o.closing ||
12535              (clearInterval(this.delayedShow),
12536              n.data("ui-tooltip-title") &&
12537                !n.attr("title") &&
12538                n.attr("title", n.data("ui-tooltip-title")),
12539              this._removeDescribedBy(n),
12540              (o.hiding = !0),
12541              i.stop(!0),
12542              this._hide(i, this.options.hide, function () {
12543                s._removeTooltip(t(this));
12544              }),
12545              n.removeData("ui-tooltip-open"),
12546              this._off(n, "mouseleave focusout keyup"),
12547              n[0] !== this.element[0] && this._off(n, "remove"),
12548              this._off(this.document, "mousemove"),
12549              e &&
12550                "mouseleave" === e.type &&
12551                t.each(this.parents, function (e, i) {
12552                  t(i.element).attr("title", i.title), delete s.parents[e];
12553                }),
12554              (o.closing = !0),
12555              this._trigger("close", e, { tooltip: i }),
12556              o.hiding || (o.closing = !1)),
12557            void 0)
12558          : (n.removeData("ui-tooltip-open"), void 0);
12559      },
12560      _tooltip: function (e) {
12561        var i = t("<div>").attr("role", "tooltip"),
12562          s = t("<div>").appendTo(i),
12563          n = i.uniqueId().attr("id");
12564        return (
12565          this._addClass(s, "ui-tooltip-content"),
12566          this._addClass(i, "ui-tooltip", "ui-widget ui-widget-content"),
12567          i.appendTo(this._appendTo(e)),
12568          (this.tooltips[n] = { element: e, tooltip: i })
12569        );
12570      },
12571      _find: function (t) {
12572        var e = t.data("ui-tooltip-id");
12573        return e ? this.tooltips[e] : null;
12574      },
12575      _removeTooltip: function (t) {
12576        t.remove(), delete this.tooltips[t.attr("id")];
12577      },
12578      _appendTo: function (t) {
12579        var e = t.closest(".ui-front, dialog");
12580        return e.length || (e = this.document[0].body), e;
12581      },
12582      _destroy: function () {
12583        var e = this;
12584        t.each(this.tooltips, function (i, s) {
12585          var n = t.Event("blur"),
12586            o = s.element;
12587          (n.target = n.currentTarget = o[0]),
12588            e.close(n, !0),
12589            t("#" + i).remove(),
12590            o.data("ui-tooltip-title") &&
12591              (o.attr("title") || o.attr("title", o.data("ui-tooltip-title")),
12592              o.removeData("ui-tooltip-title"));
12593        }),
12594          this.liveRegion.remove();
12595      },
12596    }),
12597    t.uiBackCompat !== !1 &&
12598      t.widget("ui.tooltip", t.ui.tooltip, {
12599        options: { tooltipClass: null },
12600        _tooltip: function () {
12601          var t = this._superApply(arguments);
12602          return (
12603            this.options.tooltipClass &&
12604              t.tooltip.addClass(this.options.tooltipClass),
12605            t
12606          );
12607        },
12608      }),
12609    t.ui.tooltip;
12610});
12611
12612/*!
12613 * Flickity PACKAGED v2.0.10
12614 * Touch, responsive, flickable carousels
12615 *
12616 * Licensed GPLv3 for open source use
12617 * or Flickity Commercial License for commercial use
12618 *
12619 * http://flickity.metafizzy.co
12620 * Copyright 2017 Metafizzy
12621 */
12622
12623!(function (t, e) {
12624  "function" == typeof define && define.amd
12625    ? define("jquery-bridget/jquery-bridget", ["jquery"], function (i) {
12626        return e(t, i);
12627      })
12628    : "object" == typeof module && module.exports
12629      ? (module.exports = e(t, require("jquery")))
12630      : (t.jQueryBridget = e(t, t.jQuery));
12631})(window, function (t, e) {
12632  "use strict";
12633  function i(i, o, a) {
12634    function h(t, e, n) {
12635      var s,
12636        o = "$()." + i + '("' + e + '")';
12637      return (
12638        t.each(function (t, h) {
12639          var l = a.data(h, i);
12640          if (!l)
12641            return void r(
12642              i + " not initialized. Cannot call methods, i.e. " + o,
12643            );
12644          var c = l[e];
12645          if (!c || "_" == e.charAt(0))
12646            return void r(o + " is not a valid method");
12647          var d = c.apply(l, n);
12648          s = void 0 === s ? d : s;
12649        }),
12650        void 0 !== s ? s : t
12651      );
12652    }
12653    function l(t, e) {
12654      t.each(function (t, n) {
12655        var s = a.data(n, i);
12656        s ? (s.option(e), s._init()) : ((s = new o(n, e)), a.data(n, i, s));
12657      });
12658    }
12659    (a = a || e || t.jQuery),
12660      a &&
12661        (o.prototype.option ||
12662          (o.prototype.option = function (t) {
12663            a.isPlainObject(t) &&
12664              (this.options = a.extend(!0, this.options, t));
12665          }),
12666        (a.fn[i] = function (t) {
12667          if ("string" == typeof t) {
12668            var e = s.call(arguments, 1);
12669            return h(this, t, e);
12670          }
12671          return l(this, t), this;
12672        }),
12673        n(a));
12674  }
12675  function n(t) {
12676    !t || (t && t.bridget) || (t.bridget = i);
12677  }
12678  var s = Array.prototype.slice,
12679    o = t.console,
12680    r =
12681      "undefined" == typeof o
12682        ? function () {}
12683        : function (t) {
12684            o.error(t);
12685          };
12686  return n(e || t.jQuery), i;
12687}),
12688  (function (t, e) {
12689    "function" == typeof define && define.amd
12690      ? define("ev-emitter/ev-emitter", e)
12691      : "object" == typeof module && module.exports
12692        ? (module.exports = e())
12693        : (t.EvEmitter = e());
12694  })("undefined" != typeof window ? window : this, function () {
12695    function t() {}
12696    var e = t.prototype;
12697    return (
12698      (e.on = function (t, e) {
12699        if (t && e) {
12700          var i = (this._events = this._events || {}),
12701            n = (i[t] = i[t] || []);
12702          return n.indexOf(e) == -1 && n.push(e), this;
12703        }
12704      }),
12705      (e.once = function (t, e) {
12706        if (t && e) {
12707          this.on(t, e);
12708          var i = (this._onceEvents = this._onceEvents || {}),
12709            n = (i[t] = i[t] || {});
12710          return (n[e] = !0), this;
12711        }
12712      }),
12713      (e.off = function (t, e) {
12714        var i = this._events && this._events[t];
12715        if (i && i.length) {
12716          var n = i.indexOf(e);
12717          return n != -1 && i.splice(n, 1), this;
12718        }
12719      }),
12720      (e.emitEvent = function (t, e) {
12721        var i = this._events && this._events[t];
12722        if (i && i.length) {
12723          (i = i.slice(0)), (e = e || []);
12724          for (
12725            var n = this._onceEvents && this._onceEvents[t], s = 0;
12726            s < i.length;
12727            s++
12728          ) {
12729            var o = i[s],
12730              r = n && n[o];
12731            r && (this.off(t, o), delete n[o]), o.apply(this, e);
12732          }
12733          return this;
12734        }
12735      }),
12736      (e.allOff = function () {
12737        delete this._events, delete this._onceEvents;
12738      }),
12739      t
12740    );
12741  }),
12742  (function (t, e) {
12743    "use strict";
12744    "function" == typeof define && define.amd
12745      ? define("get-size/get-size", [], function () {
12746          return e();
12747        })
12748      : "object" == typeof module && module.exports
12749        ? (module.exports = e())
12750        : (t.getSize = e());
12751  })(window, function () {
12752    "use strict";
12753    function t(t) {
12754      var e = parseFloat(t),
12755        i = t.indexOf("%") == -1 && !isNaN(e);
12756      return i && e;
12757    }
12758    function e() {}
12759    function i() {
12760      for (
12761        var t = {
12762            width: 0,
12763            height: 0,
12764            innerWidth: 0,
12765            innerHeight: 0,
12766            outerWidth: 0,
12767            outerHeight: 0,
12768          },
12769          e = 0;
12770        e < l;
12771        e++
12772      ) {
12773        var i = h[e];
12774        t[i] = 0;
12775      }
12776      return t;
12777    }
12778    function n(t) {
12779      var e = getComputedStyle(t);
12780      return (
12781        e ||
12782          a(
12783            "Style returned " +
12784              e +
12785              ". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1",
12786          ),
12787        e
12788      );
12789    }
12790    function s() {
12791      if (!c) {
12792        c = !0;
12793        var e = document.createElement("div");
12794        (e.style.width = "200px"),
12795          (e.style.padding = "1px 2px 3px 4px"),
12796          (e.style.borderStyle = "solid"),
12797          (e.style.borderWidth = "1px 2px 3px 4px"),
12798          (e.style.boxSizing = "border-box");
12799        var i = document.body || document.documentElement;
12800        i.appendChild(e);
12801        var s = n(e);
12802        (o.isBoxSizeOuter = r = 200 == t(s.width)), i.removeChild(e);
12803      }
12804    }
12805    function o(e) {
12806      if (
12807        (s(),
12808        "string" == typeof e && (e = document.querySelector(e)),
12809        e && "object" == typeof e && e.nodeType)
12810      ) {
12811        var o = n(e);
12812        if ("none" == o.display) return i();
12813        var a = {};
12814        (a.width = e.offsetWidth), (a.height = e.offsetHeight);
12815        for (
12816          var c = (a.isBorderBox = "border-box" == o.boxSizing), d = 0;
12817          d < l;
12818          d++
12819        ) {
12820          var u = h[d],
12821            f = o[u],
12822            p = parseFloat(f);
12823          a[u] = isNaN(p) ? 0 : p;
12824        }
12825        var v = a.paddingLeft + a.paddingRight,
12826          g = a.paddingTop + a.paddingBottom,
12827          m = a.marginLeft + a.marginRight,
12828          y = a.marginTop + a.marginBottom,
12829          E = a.borderLeftWidth + a.borderRightWidth,
12830          S = a.borderTopWidth + a.borderBottomWidth,
12831          b = c && r,
12832          x = t(o.width);
12833        x !== !1 && (a.width = x + (b ? 0 : v + E));
12834        var C = t(o.height);
12835        return (
12836          C !== !1 && (a.height = C + (b ? 0 : g + S)),
12837          (a.innerWidth = a.width - (v + E)),
12838          (a.innerHeight = a.height - (g + S)),
12839          (a.outerWidth = a.width + m),
12840          (a.outerHeight = a.height + y),
12841          a
12842        );
12843      }
12844    }
12845    var r,
12846      a =
12847        "undefined" == typeof console
12848          ? e
12849          : function (t) {
12850              console.error(t);
12851            },
12852      h = [
12853        "paddingLeft",
12854        "paddingRight",
12855        "paddingTop",
12856        "paddingBottom",
12857        "marginLeft",
12858        "marginRight",
12859        "marginTop",
12860        "marginBottom",
12861        "borderLeftWidth",
12862        "borderRightWidth",
12863        "borderTopWidth",
12864        "borderBottomWidth",
12865      ],
12866      l = h.length,
12867      c = !1;
12868    return o;
12869  }),
12870  (function (t, e) {
12871    "use strict";
12872    "function" == typeof define && define.amd
12873      ? define("desandro-matches-selector/matches-selector", e)
12874      : "object" == typeof module && module.exports
12875        ? (module.exports = e())
12876        : (t.matchesSelector = e());
12877  })(window, function () {
12878    "use strict";
12879    var t = (function () {
12880      var t = window.Element.prototype;
12881      if (t.matches) return "matches";
12882      if (t.matchesSelector) return "matchesSelector";
12883      for (var e = ["webkit", "moz", "ms", "o"], i = 0; i < e.length; i++) {
12884        var n = e[i],
12885          s = n + "MatchesSelector";
12886        if (t[s]) return s;
12887      }
12888    })();
12889    return function (e, i) {
12890      return e[t](i);
12891    };
12892  }),
12893  (function (t, e) {
12894    "function" == typeof define && define.amd
12895      ? define(
12896          "fizzy-ui-utils/utils",
12897          ["desandro-matches-selector/matches-selector"],
12898          function (i) {
12899            return e(t, i);
12900          },
12901        )
12902      : "object" == typeof module && module.exports
12903        ? (module.exports = e(t, require("desandro-matches-selector")))
12904        : (t.fizzyUIUtils = e(t, t.matchesSelector));
12905  })(window, function (t, e) {
12906    var i = {};
12907    (i.extend = function (t, e) {
12908      for (var i in e) t[i] = e[i];
12909      return t;
12910    }),
12911      (i.modulo = function (t, e) {
12912        return ((t % e) + e) % e;
12913      }),
12914      (i.makeArray = function (t) {
12915        var e = [];
12916        if (Array.isArray(t)) e = t;
12917        else if (t && "object" == typeof t && "number" == typeof t.length)
12918          for (var i = 0; i < t.length; i++) e.push(t[i]);
12919        else e.push(t);
12920        return e;
12921      }),
12922      (i.removeFrom = function (t, e) {
12923        var i = t.indexOf(e);
12924        i != -1 && t.splice(i, 1);
12925      }),
12926      (i.getParent = function (t, i) {
12927        for (; t.parentNode && t != document.body; )
12928          if (((t = t.parentNode), e(t, i))) return t;
12929      }),
12930      (i.getQueryElement = function (t) {
12931        return "string" == typeof t ? document.querySelector(t) : t;
12932      }),
12933      (i.handleEvent = function (t) {
12934        var e = "on" + t.type;
12935        this[e] && this[e](t);
12936      }),
12937      (i.filterFindElements = function (t, n) {
12938        t = i.makeArray(t);
12939        var s = [];
12940        return (
12941          t.forEach(function (t) {
12942            if (t instanceof HTMLElement) {
12943              if (!n) return void s.push(t);
12944              e(t, n) && s.push(t);
12945              for (var i = t.querySelectorAll(n), o = 0; o < i.length; o++)
12946                s.push(i[o]);
12947            }
12948          }),
12949          s
12950        );
12951      }),
12952      (i.debounceMethod = function (t, e, i) {
12953        var n = t.prototype[e],
12954          s = e + "Timeout";
12955        t.prototype[e] = function () {
12956          var t = this[s];
12957          t && clearTimeout(t);
12958          var e = arguments,
12959            o = this;
12960          this[s] = setTimeout(function () {
12961            n.apply(o, e), delete o[s];
12962          }, i || 100);
12963        };
12964      }),
12965      (i.docReady = function (t) {
12966        var e = document.readyState;
12967        "complete" == e || "interactive" == e
12968          ? setTimeout(t)
12969          : document.addEventListener("DOMContentLoaded", t);
12970      }),
12971      (i.toDashed = function (t) {
12972        return t
12973          .replace(/(.)([A-Z])/g, function (t, e, i) {
12974            return e + "-" + i;
12975          })
12976          .toLowerCase();
12977      });
12978    var n = t.console;
12979    return (
12980      (i.htmlInit = function (e, s) {
12981        i.docReady(function () {
12982          var o = i.toDashed(s),
12983            r = "data-" + o,
12984            a = document.querySelectorAll("[" + r + "]"),
12985            h = document.querySelectorAll(".js-" + o),
12986            l = i.makeArray(a).concat(i.makeArray(h)),
12987            c = r + "-options",
12988            d = t.jQuery;
12989          l.forEach(function (t) {
12990            var i,
12991              o = t.getAttribute(r) || t.getAttribute(c);
12992            try {
12993              i = o && JSON.parse(o);
12994            } catch (a) {
12995              return void (
12996                n &&
12997                n.error("Error parsing " + r + " on " + t.className + ": " + a)
12998              );
12999            }
13000            var h = new e(t, i);
13001            d && d.data(t, s, h);
13002          });
13003        });
13004      }),
13005      i
13006    );
13007  }),
13008  (function (t, e) {
13009    "function" == typeof define && define.amd
13010      ? define("flickity/js/cell", ["get-size/get-size"], function (i) {
13011          return e(t, i);
13012        })
13013      : "object" == typeof module && module.exports
13014        ? (module.exports = e(t, require("get-size")))
13015        : ((t.Flickity = t.Flickity || {}),
13016          (t.Flickity.Cell = e(t, t.getSize)));
13017  })(window, function (t, e) {
13018    function i(t, e) {
13019      (this.element = t), (this.parent = e), this.create();
13020    }
13021    var n = i.prototype;
13022    return (
13023      (n.create = function () {
13024        (this.element.style.position = "absolute"),
13025          (this.x = 0),
13026          (this.shift = 0);
13027      }),
13028      (n.destroy = function () {
13029        this.element.style.position = "";
13030        var t = this.parent.originSide;
13031        this.element.style[t] = "";
13032      }),
13033      (n.getSize = function () {
13034        this.size = e(this.element);
13035      }),
13036      (n.setPosition = function (t) {
13037        (this.x = t), this.updateTarget(), this.renderPosition(t);
13038      }),
13039      (n.updateTarget = n.setDefaultTarget =
13040        function () {
13041          var t =
13042            "left" == this.parent.originSide ? "marginLeft" : "marginRight";
13043          this.target =
13044            this.x + this.size[t] + this.size.width * this.parent.cellAlign;
13045        }),
13046      (n.renderPosition = function (t) {
13047        var e = this.parent.originSide;
13048        this.element.style[e] = this.parent.getPositionValue(t);
13049      }),
13050      (n.wrapShift = function (t) {
13051        (this.shift = t),
13052          this.renderPosition(this.x + this.parent.slideableWidth * t);
13053      }),
13054      (n.remove = function () {
13055        this.element.parentNode.removeChild(this.element);
13056      }),
13057      i
13058    );
13059  }),
13060  (function (t, e) {
13061    "function" == typeof define && define.amd
13062      ? define("flickity/js/slide", e)
13063      : "object" == typeof module && module.exports
13064        ? (module.exports = e())
13065        : ((t.Flickity = t.Flickity || {}), (t.Flickity.Slide = e()));
13066  })(window, function () {
13067    "use strict";
13068    function t(t) {
13069      (this.parent = t),
13070        (this.isOriginLeft = "left" == t.originSide),
13071        (this.cells = []),
13072        (this.outerWidth = 0),
13073        (this.height = 0);
13074    }
13075    var e = t.prototype;
13076    return (
13077      (e.addCell = function (t) {
13078        if (
13079          (this.cells.push(t),
13080          (this.outerWidth += t.size.outerWidth),
13081          (this.height = Math.max(t.size.outerHeight, this.height)),
13082          1 == this.cells.length)
13083        ) {
13084          this.x = t.x;
13085          var e = this.isOriginLeft ? "marginLeft" : "marginRight";
13086          this.firstMargin = t.size[e];
13087        }
13088      }),
13089      (e.updateTarget = function () {
13090        var t = this.isOriginLeft ? "marginRight" : "marginLeft",
13091          e = this.getLastCell(),
13092          i = e ? e.size[t] : 0,
13093          n = this.outerWidth - (this.firstMargin + i);
13094        this.target = this.x + this.firstMargin + n * this.parent.cellAlign;
13095      }),
13096      (e.getLastCell = function () {
13097        return this.cells[this.cells.length - 1];
13098      }),
13099      (e.select = function () {
13100        this.changeSelectedClass("add");
13101      }),
13102      (e.unselect = function () {
13103        this.changeSelectedClass("remove");
13104      }),
13105      (e.changeSelectedClass = function (t) {
13106        this.cells.forEach(function (e) {
13107          e.element.classList[t]("is-selected");
13108        });
13109      }),
13110      (e.getCellElements = function () {
13111        return this.cells.map(function (t) {
13112          return t.element;
13113        });
13114      }),
13115      t
13116    );
13117  }),
13118  (function (t, e) {
13119    "function" == typeof define && define.amd
13120      ? define("flickity/js/animate", ["fizzy-ui-utils/utils"], function (i) {
13121          return e(t, i);
13122        })
13123      : "object" == typeof module && module.exports
13124        ? (module.exports = e(t, require("fizzy-ui-utils")))
13125        : ((t.Flickity = t.Flickity || {}),
13126          (t.Flickity.animatePrototype = e(t, t.fizzyUIUtils)));
13127  })(window, function (t, e) {
13128    var i = t.requestAnimationFrame || t.webkitRequestAnimationFrame,
13129      n = 0;
13130    i ||
13131      (i = function (t) {
13132        var e = new Date().getTime(),
13133          i = Math.max(0, 16 - (e - n)),
13134          s = setTimeout(t, i);
13135        return (n = e + i), s;
13136      });
13137    var s = {};
13138    (s.startAnimation = function () {
13139      this.isAnimating ||
13140        ((this.isAnimating = !0), (this.restingFrames = 0), this.animate());
13141    }),
13142      (s.animate = function () {
13143        this.applyDragForce(), this.applySelectedAttraction();
13144        var t = this.x;
13145        if (
13146          (this.integratePhysics(),
13147          this.positionSlider(),
13148          this.settle(t),
13149          this.isAnimating)
13150        ) {
13151          var e = this;
13152          i(function () {
13153            e.animate();
13154          });
13155        }
13156      });
13157    var o = (function () {
13158      var t = document.documentElement.style;
13159      return "string" == typeof t.transform ? "transform" : "WebkitTransform";
13160    })();
13161    return (
13162      (s.positionSlider = function () {
13163        var t = this.x;
13164        this.options.wrapAround &&
13165          this.cells.length > 1 &&
13166          ((t = e.modulo(t, this.slideableWidth)),
13167          (t -= this.slideableWidth),
13168          this.shiftWrapCells(t)),
13169          (t += this.cursorPosition),
13170          (t = this.options.rightToLeft && o ? -t : t);
13171        var i = this.getPositionValue(t);
13172        this.slider.style[o] = this.isAnimating
13173          ? "translate3d(" + i + ",0,0)"
13174          : "translateX(" + i + ")";
13175        var n = this.slides[0];
13176        if (n) {
13177          var s = -this.x - n.target,
13178            r = s / this.slidesWidth;
13179          this.dispatchEvent("scroll", null, [r, s]);
13180        }
13181      }),
13182      (s.positionSliderAtSelected = function () {
13183        this.cells.length &&
13184          ((this.x = -this.selectedSlide.target), this.positionSlider());
13185      }),
13186      (s.getPositionValue = function (t) {
13187        return this.options.percentPosition
13188          ? 0.01 * Math.round((t / this.size.innerWidth) * 1e4) + "%"
13189          : Math.round(t) + "px";
13190      }),
13191      (s.settle = function (t) {
13192        this.isPointerDown ||
13193          Math.round(100 * this.x) != Math.round(100 * t) ||
13194          this.restingFrames++,
13195          this.restingFrames > 2 &&
13196            ((this.isAnimating = !1),
13197            delete this.isFreeScrolling,
13198            this.positionSlider(),
13199            this.dispatchEvent("settle"));
13200      }),
13201      (s.shiftWrapCells = function (t) {
13202        var e = this.cursorPosition + t;
13203        this._shiftCells(this.beforeShiftCells, e, -1);
13204        var i =
13205          this.size.innerWidth -
13206          (t + this.slideableWidth + this.cursorPosition);
13207        this._shiftCells(this.afterShiftCells, i, 1);
13208      }),
13209      (s._shiftCells = function (t, e, i) {
13210        for (var n = 0; n < t.length; n++) {
13211          var s = t[n],
13212            o = e > 0 ? i : 0;
13213          s.wrapShift(o), (e -= s.size.outerWidth);
13214        }
13215      }),
13216      (s._unshiftCells = function (t) {
13217        if (t && t.length) for (var e = 0; e < t.length; e++) t[e].wrapShift(0);
13218      }),
13219      (s.integratePhysics = function () {
13220        (this.x += this.velocity), (this.velocity *= this.getFrictionFactor());
13221      }),
13222      (s.applyForce = function (t) {
13223        this.velocity += t;
13224      }),
13225      (s.getFrictionFactor = function () {
13226        return (
13227          1 -
13228          this.options[this.isFreeScrolling ? "freeScrollFriction" : "friction"]
13229        );
13230      }),
13231      (s.getRestingPosition = function () {
13232        return this.x + this.velocity / (1 - this.getFrictionFactor());
13233      }),
13234      (s.applyDragForce = function () {
13235        if (this.isPointerDown) {
13236          var t = this.dragX - this.x,
13237            e = t - this.velocity;
13238          this.applyForce(e);
13239        }
13240      }),
13241      (s.applySelectedAttraction = function () {
13242        if (!this.isPointerDown && !this.isFreeScrolling && this.cells.length) {
13243          var t = this.selectedSlide.target * -1 - this.x,
13244            e = t * this.options.selectedAttraction;
13245          this.applyForce(e);
13246        }
13247      }),
13248      s
13249    );
13250  }),
13251  (function (t, e) {
13252    if ("function" == typeof define && define.amd)
13253      define("flickity/js/flickity", [
13254        "ev-emitter/ev-emitter",
13255        "get-size/get-size",
13256        "fizzy-ui-utils/utils",
13257        "./cell",
13258        "./slide",
13259        "./animate",
13260      ], function (i, n, s, o, r, a) {
13261        return e(t, i, n, s, o, r, a);
13262      });
13263    else if ("object" == typeof module && module.exports)
13264      module.exports = e(
13265        t,
13266        require("ev-emitter"),
13267        require("get-size"),
13268        require("fizzy-ui-utils"),
13269        require("./cell"),
13270        require("./slide"),
13271        require("./animate"),
13272      );
13273    else {
13274      var i = t.Flickity;
13275      t.Flickity = e(
13276        t,
13277        t.EvEmitter,
13278        t.getSize,
13279        t.fizzyUIUtils,
13280        i.Cell,
13281        i.Slide,
13282        i.animatePrototype,
13283      );
13284    }
13285  })(window, function (t, e, i, n, s, o, r) {
13286    function a(t, e) {
13287      for (t = n.makeArray(t); t.length; ) e.appendChild(t.shift());
13288    }
13289    function h(t, e) {
13290      var i = n.getQueryElement(t);
13291      if (!i)
13292        return void (d && d.error("Bad element for Flickity: " + (i || t)));
13293      if (((this.element = i), this.element.flickityGUID)) {
13294        var s = f[this.element.flickityGUID];
13295        return s.option(e), s;
13296      }
13297      l && (this.$element = l(this.element)),
13298        (this.options = n.extend({}, this.constructor.defaults)),
13299        this.option(e),
13300        this._create();
13301    }
13302    var l = t.jQuery,
13303      c = t.getComputedStyle,
13304      d = t.console,
13305      u = 0,
13306      f = {};
13307    (h.defaults = {
13308      accessibility: !0,
13309      cellAlign: "center",
13310      freeScrollFriction: 0.075,
13311      friction: 0.28,
13312      namespaceJQueryEvents: !0,
13313      percentPosition: !0,
13314      resize: !0,
13315      selectedAttraction: 0.025,
13316      setGallerySize: !0,
13317    }),
13318      (h.createMethods = []);
13319    var p = h.prototype;
13320    n.extend(p, e.prototype),
13321      (p._create = function () {
13322        var e = (this.guid = ++u);
13323        (this.element.flickityGUID = e),
13324          (f[e] = this),
13325          (this.selectedIndex = 0),
13326          (this.restingFrames = 0),
13327          (this.x = 0),
13328          (this.velocity = 0),
13329          (this.originSide = this.options.rightToLeft ? "right" : "left"),
13330          (this.viewport = document.createElement("div")),
13331          (this.viewport.className = "flickity-viewport"),
13332          this._createSlider(),
13333          (this.options.resize || this.options.watchCSS) &&
13334            t.addEventListener("resize", this),
13335          h.createMethods.forEach(function (t) {
13336            this[t]();
13337          }, this),
13338          this.options.watchCSS ? this.watchCSS() : this.activate();
13339      }),
13340      (p.option = function (t) {
13341        n.extend(this.options, t);
13342      }),
13343      (p.activate = function () {
13344        if (!this.isActive) {
13345          (this.isActive = !0),
13346            this.element.classList.add("flickity-enabled"),
13347            this.options.rightToLeft &&
13348              this.element.classList.add("flickity-rtl"),
13349            this.getSize();
13350          var t = this._filterFindCellElements(this.element.children);
13351          a(t, this.slider),
13352            this.viewport.appendChild(this.slider),
13353            this.element.appendChild(this.viewport),
13354            this.reloadCells(),
13355            this.options.accessibility &&
13356              ((this.element.tabIndex = 0),
13357              this.element.addEventListener("keydown", this)),
13358            this.emitEvent("activate");
13359          var e,
13360            i = this.options.initialIndex;
13361          (e = this.isInitActivated
13362            ? this.selectedIndex
13363            : void 0 !== i && this.cells[i]
13364              ? i
13365              : 0),
13366            this.select(e, !1, !0),
13367            (this.isInitActivated = !0);
13368        }
13369      }),
13370      (p._createSlider = function () {
13371        var t = document.createElement("div");
13372        (t.className = "flickity-slider"),
13373          (t.style[this.originSide] = 0),
13374          (this.slider = t);
13375      }),
13376      (p._filterFindCellElements = function (t) {
13377        return n.filterFindElements(t, this.options.cellSelector);
13378      }),
13379      (p.reloadCells = function () {
13380        (this.cells = this._makeCells(this.slider.children)),
13381          this.positionCells(),
13382          this._getWrapShiftCells(),
13383          this.setGallerySize();
13384      }),
13385      (p._makeCells = function (t) {
13386        var e = this._filterFindCellElements(t),
13387          i = e.map(function (t) {
13388            return new s(t, this);
13389          }, this);
13390        return i;
13391      }),
13392      (p.getLastCell = function () {
13393        return this.cells[this.cells.length - 1];
13394      }),
13395      (p.getLastSlide = function () {
13396        return this.slides[this.slides.length - 1];
13397      }),
13398      (p.positionCells = function () {
13399        this._sizeCells(this.cells), this._positionCells(0);
13400      }),
13401      (p._positionCells = function (t) {
13402        (t = t || 0), (this.maxCellHeight = t ? this.maxCellHeight || 0 : 0);
13403        var e = 0;
13404        if (t > 0) {
13405          var i = this.cells[t - 1];
13406          e = i.x + i.size.outerWidth;
13407        }
13408        for (var n = this.cells.length, s = t; s < n; s++) {
13409          var o = this.cells[s];
13410          o.setPosition(e),
13411            (e += o.size.outerWidth),
13412            (this.maxCellHeight = Math.max(
13413              o.size.outerHeight,
13414              this.maxCellHeight,
13415            ));
13416        }
13417        (this.slideableWidth = e),
13418          this.updateSlides(),
13419          this._containSlides(),
13420          (this.slidesWidth = n
13421            ? this.getLastSlide().target - this.slides[0].target
13422            : 0);
13423      }),
13424      (p._sizeCells = function (t) {
13425        t.forEach(function (t) {
13426          t.getSize();
13427        });
13428      }),
13429      (p.updateSlides = function () {
13430        if (((this.slides = []), this.cells.length)) {
13431          var t = new o(this);
13432          this.slides.push(t);
13433          var e = "left" == this.originSide,
13434            i = e ? "marginRight" : "marginLeft",
13435            n = this._getCanCellFit();
13436          this.cells.forEach(function (e, s) {
13437            if (!t.cells.length) return void t.addCell(e);
13438            var r =
13439              t.outerWidth - t.firstMargin + (e.size.outerWidth - e.size[i]);
13440            n.call(this, s, r)
13441              ? t.addCell(e)
13442              : (t.updateTarget(),
13443                (t = new o(this)),
13444                this.slides.push(t),
13445                t.addCell(e));
13446          }, this),
13447            t.updateTarget(),
13448            this.updateSelectedSlide();
13449        }
13450      }),
13451      (p._getCanCellFit = function () {
13452        var t = this.options.groupCells;
13453        if (!t)
13454          return function () {
13455            return !1;
13456          };
13457        if ("number" == typeof t) {
13458          var e = parseInt(t, 10);
13459          return function (t) {
13460            return t % e !== 0;
13461          };
13462        }
13463        var i = "string" == typeof t && t.match(/^(\d+)%$/),
13464          n = i ? parseInt(i[1], 10) / 100 : 1;
13465        return function (t, e) {
13466          return e <= (this.size.innerWidth + 1) * n;
13467        };
13468      }),
13469      (p._init = p.reposition =
13470        function () {
13471          this.positionCells(), this.positionSliderAtSelected();
13472        }),
13473      (p.getSize = function () {
13474        (this.size = i(this.element)),
13475          this.setCellAlign(),
13476          (this.cursorPosition = this.size.innerWidth * this.cellAlign);
13477      });
13478    var v = {
13479      center: { left: 0.5, right: 0.5 },
13480      left: { left: 0, right: 1 },
13481      right: { right: 0, left: 1 },
13482    };
13483    return (
13484      (p.setCellAlign = function () {
13485        var t = v[this.options.cellAlign];
13486        this.cellAlign = t ? t[this.originSide] : this.options.cellAlign;
13487      }),
13488      (p.setGallerySize = function () {
13489        if (this.options.setGallerySize) {
13490          var t =
13491            this.options.adaptiveHeight && this.selectedSlide
13492              ? this.selectedSlide.height
13493              : this.maxCellHeight;
13494          this.viewport.style.height = t + "px";
13495        }
13496      }),
13497      (p._getWrapShiftCells = function () {
13498        if (this.options.wrapAround) {
13499          this._unshiftCells(this.beforeShiftCells),
13500            this._unshiftCells(this.afterShiftCells);
13501          var t = this.cursorPosition,
13502            e = this.cells.length - 1;
13503          (this.beforeShiftCells = this._getGapCells(t, e, -1)),
13504            (t = this.size.innerWidth - this.cursorPosition),
13505            (this.afterShiftCells = this._getGapCells(t, 0, 1));
13506        }
13507      }),
13508      (p._getGapCells = function (t, e, i) {
13509        for (var n = []; t > 0; ) {
13510          var s = this.cells[e];
13511          if (!s) break;
13512          n.push(s), (e += i), (t -= s.size.outerWidth);
13513        }
13514        return n;
13515      }),
13516      (p._containSlides = function () {
13517        if (
13518          this.options.contain &&
13519          !this.options.wrapAround &&
13520          this.cells.length
13521        ) {
13522          var t = this.options.rightToLeft,
13523            e = t ? "marginRight" : "marginLeft",
13524            i = t ? "marginLeft" : "marginRight",
13525            n = this.slideableWidth - this.getLastCell().size[i],
13526            s = n < this.size.innerWidth,
13527            o = this.cursorPosition + this.cells[0].size[e],
13528            r = n - this.size.innerWidth * (1 - this.cellAlign);
13529          this.slides.forEach(function (t) {
13530            s
13531              ? (t.target = n * this.cellAlign)
13532              : ((t.target = Math.max(t.target, o)),
13533                (t.target = Math.min(t.target, r)));
13534          }, this);
13535        }
13536      }),
13537      (p.dispatchEvent = function (t, e, i) {
13538        var n = e ? [e].concat(i) : i;
13539        if ((this.emitEvent(t, n), l && this.$element)) {
13540          t += this.options.namespaceJQueryEvents ? ".flickity" : "";
13541          var s = t;
13542          if (e) {
13543            var o = l.Event(e);
13544            (o.type = t), (s = o);
13545          }
13546          this.$element.trigger(s, i);
13547        }
13548      }),
13549      (p.select = function (t, e, i) {
13550        this.isActive &&
13551          ((t = parseInt(t, 10)),
13552          this._wrapSelect(t),
13553          (this.options.wrapAround || e) &&
13554            (t = n.modulo(t, this.slides.length)),
13555          this.slides[t] &&
13556            ((this.selectedIndex = t),
13557            this.updateSelectedSlide(),
13558            i ? this.positionSliderAtSelected() : this.startAnimation(),
13559            this.options.adaptiveHeight && this.setGallerySize(),
13560            this.dispatchEvent("select"),
13561            this.dispatchEvent("cellSelect")));
13562      }),
13563      (p._wrapSelect = function (t) {
13564        var e = this.slides.length,
13565          i = this.options.wrapAround && e > 1;
13566        if (!i) return t;
13567        var s = n.modulo(t, e),
13568          o = Math.abs(s - this.selectedIndex),
13569          r = Math.abs(s + e - this.selectedIndex),
13570          a = Math.abs(s - e - this.selectedIndex);
13571        !this.isDragSelect && r < o
13572          ? (t += e)
13573          : !this.isDragSelect && a < o && (t -= e),
13574          t < 0
13575            ? (this.x -= this.slideableWidth)
13576            : t >= e && (this.x += this.slideableWidth);
13577      }),
13578      (p.previous = function (t, e) {
13579        this.select(this.selectedIndex - 1, t, e);
13580      }),
13581      (p.next = function (t, e) {
13582        this.select(this.selectedIndex + 1, t, e);
13583      }),
13584      (p.updateSelectedSlide = function () {
13585        var t = this.slides[this.selectedIndex];
13586        t &&
13587          (this.unselectSelectedSlide(),
13588          (this.selectedSlide = t),
13589          t.select(),
13590          (this.selectedCells = t.cells),
13591          (this.selectedElements = t.getCellElements()),
13592          (this.selectedCell = t.cells[0]),
13593          (this.selectedElement = this.selectedElements[0]));
13594      }),
13595      (p.unselectSelectedSlide = function () {
13596        this.selectedSlide && this.selectedSlide.unselect();
13597      }),
13598      (p.selectCell = function (t, e, i) {
13599        var n;
13600        "number" == typeof t
13601          ? (n = this.cells[t])
13602          : ("string" == typeof t && (t = this.element.querySelector(t)),
13603            (n = this.getCell(t)));
13604        for (var s = 0; n && s < this.slides.length; s++) {
13605          var o = this.slides[s],
13606            r = o.cells.indexOf(n);
13607          if (r != -1) return void this.select(s, e, i);
13608        }
13609      }),
13610      (p.getCell = function (t) {
13611        for (var e = 0; e < this.cells.length; e++) {
13612          var i = this.cells[e];
13613          if (i.element == t) return i;
13614        }
13615      }),
13616      (p.getCells = function (t) {
13617        t = n.makeArray(t);
13618        var e = [];
13619        return (
13620          t.forEach(function (t) {
13621            var i = this.getCell(t);
13622            i && e.push(i);
13623          }, this),
13624          e
13625        );
13626      }),
13627      (p.getCellElements = function () {
13628        return this.cells.map(function (t) {
13629          return t.element;
13630        });
13631      }),
13632      (p.getParentCell = function (t) {
13633        var e = this.getCell(t);
13634        return e
13635          ? e
13636          : ((t = n.getParent(t, ".flickity-slider > *")), this.getCell(t));
13637      }),
13638      (p.getAdjacentCellElements = function (t, e) {
13639        if (!t) return this.selectedSlide.getCellElements();
13640        e = void 0 === e ? this.selectedIndex : e;
13641        var i = this.slides.length;
13642        if (1 + 2 * t >= i) return this.getCellElements();
13643        for (var s = [], o = e - t; o <= e + t; o++) {
13644          var r = this.options.wrapAround ? n.modulo(o, i) : o,
13645            a = this.slides[r];
13646          a && (s = s.concat(a.getCellElements()));
13647        }
13648        return s;
13649      }),
13650      (p.uiChange = function () {
13651        this.emitEvent("uiChange");
13652      }),
13653      (p.childUIPointerDown = function (t) {
13654        this.emitEvent("childUIPointerDown", [t]);
13655      }),
13656      (p.onresize = function () {
13657        this.watchCSS(), this.resize();
13658      }),
13659      n.debounceMethod(h, "onresize", 150),
13660      (p.resize = function () {
13661        if (this.isActive) {
13662          this.getSize(),
13663            this.options.wrapAround &&
13664              (this.x = n.modulo(this.x, this.slideableWidth)),
13665            this.positionCells(),
13666            this._getWrapShiftCells(),
13667            this.setGallerySize(),
13668            this.emitEvent("resize");
13669          var t = this.selectedElements && this.selectedElements[0];
13670          this.selectCell(t, !1, !0);
13671        }
13672      }),
13673      (p.watchCSS = function () {
13674        var t = this.options.watchCSS;
13675        if (t) {
13676          var e = c(this.element, ":after").content;
13677          e.indexOf("flickity") != -1 ? this.activate() : this.deactivate();
13678        }
13679      }),
13680      (p.onkeydown = function (t) {
13681        if (
13682          this.options.accessibility &&
13683          (!document.activeElement || document.activeElement == this.element)
13684        )
13685          if (37 == t.keyCode) {
13686            var e = this.options.rightToLeft ? "next" : "previous";
13687            this.uiChange(), this[e]();
13688          } else if (39 == t.keyCode) {
13689            var i = this.options.rightToLeft ? "previous" : "next";
13690            this.uiChange(), this[i]();
13691          }
13692      }),
13693      (p.deactivate = function () {
13694        this.isActive &&
13695          (this.element.classList.remove("flickity-enabled"),
13696          this.element.classList.remove("flickity-rtl"),
13697          this.cells.forEach(function (t) {
13698            t.destroy();
13699          }),
13700          this.unselectSelectedSlide(),
13701          this.element.removeChild(this.viewport),
13702          a(this.slider.children, this.element),
13703          this.options.accessibility &&
13704            (this.element.removeAttribute("tabIndex"),
13705            this.element.removeEventListener("keydown", this)),
13706          (this.isActive = !1),
13707          this.emitEvent("deactivate"));
13708      }),
13709      (p.destroy = function () {
13710        this.deactivate(),
13711          t.removeEventListener("resize", this),
13712          this.emitEvent("destroy"),
13713          l && this.$element && l.removeData(this.element, "flickity"),
13714          delete this.element.flickityGUID,
13715          delete f[this.guid];
13716      }),
13717      n.extend(p, r),
13718      (h.data = function (t) {
13719        t = n.getQueryElement(t);
13720        var e = t && t.flickityGUID;
13721        return e && f[e];
13722      }),
13723      n.htmlInit(h, "flickity"),
13724      l && l.bridget && l.bridget("flickity", h),
13725      (h.setJQuery = function (t) {
13726        l = t;
13727      }),
13728      (h.Cell = s),
13729      h
13730    );
13731  }),
13732  (function (t, e) {
13733    "function" == typeof define && define.amd
13734      ? define(
13735          "unipointer/unipointer",
13736          ["ev-emitter/ev-emitter"],
13737          function (i) {
13738            return e(t, i);
13739          },
13740        )
13741      : "object" == typeof module && module.exports
13742        ? (module.exports = e(t, require("ev-emitter")))
13743        : (t.Unipointer = e(t, t.EvEmitter));
13744  })(window, function (t, e) {
13745    function i() {}
13746    function n() {}
13747    var s = (n.prototype = Object.create(e.prototype));
13748    (s.bindStartEvent = function (t) {
13749      this._bindStartEvent(t, !0);
13750    }),
13751      (s.unbindStartEvent = function (t) {
13752        this._bindStartEvent(t, !1);
13753      }),
13754      (s._bindStartEvent = function (e, i) {
13755        i = void 0 === i || !!i;
13756        var n = i ? "addEventListener" : "removeEventListener";
13757        t.PointerEvent
13758          ? e[n]("pointerdown", this)
13759          : (e[n]("mousedown", this), e[n]("touchstart", this));
13760      }),
13761      (s.handleEvent = function (t) {
13762        var e = "on" + t.type;
13763        this[e] && this[e](t);
13764      }),
13765      (s.getTouch = function (t) {
13766        for (var e = 0; e < t.length; e++) {
13767          var i = t[e];
13768          if (i.identifier == this.pointerIdentifier) return i;
13769        }
13770      }),
13771      (s.onmousedown = function (t) {
13772        var e = t.button;
13773        (e && 0 !== e && 1 !== e) || this._pointerDown(t, t);
13774      }),
13775      (s.ontouchstart = function (t) {
13776        this._pointerDown(t, t.changedTouches[0]);
13777      }),
13778      (s.onpointerdown = function (t) {
13779        this._pointerDown(t, t);
13780      }),
13781      (s._pointerDown = function (t, e) {
13782        this.isPointerDown ||
13783          ((this.isPointerDown = !0),
13784          (this.pointerIdentifier =
13785            void 0 !== e.pointerId ? e.pointerId : e.identifier),
13786          this.pointerDown(t, e));
13787      }),
13788      (s.pointerDown = function (t, e) {
13789        this._bindPostStartEvents(t), this.emitEvent("pointerDown", [t, e]);
13790      });
13791    var o = {
13792      mousedown: ["mousemove", "mouseup"],
13793      touchstart: ["touchmove", "touchend", "touchcancel"],
13794      pointerdown: ["pointermove", "pointerup", "pointercancel"],
13795    };
13796    return (
13797      (s._bindPostStartEvents = function (e) {
13798        if (e) {
13799          var i = o[e.type];
13800          i.forEach(function (e) {
13801            t.addEventListener(e, this);
13802          }, this),
13803            (this._boundPointerEvents = i);
13804        }
13805      }),
13806      (s._unbindPostStartEvents = function () {
13807        this._boundPointerEvents &&
13808          (this._boundPointerEvents.forEach(function (e) {
13809            t.removeEventListener(e, this);
13810          }, this),
13811          delete this._boundPointerEvents);
13812      }),
13813      (s.onmousemove = function (t) {
13814        this._pointerMove(t, t);
13815      }),
13816      (s.onpointermove = function (t) {
13817        t.pointerId == this.pointerIdentifier && this._pointerMove(t, t);
13818      }),
13819      (s.ontouchmove = function (t) {
13820        var e = this.getTouch(t.changedTouches);
13821        e && this._pointerMove(t, e);
13822      }),
13823      (s._pointerMove = function (t, e) {
13824        this.pointerMove(t, e);
13825      }),
13826      (s.pointerMove = function (t, e) {
13827        this.emitEvent("pointerMove", [t, e]);
13828      }),
13829      (s.onmouseup = function (t) {
13830        this._pointerUp(t, t);
13831      }),
13832      (s.onpointerup = function (t) {
13833        t.pointerId == this.pointerIdentifier && this._pointerUp(t, t);
13834      }),
13835      (s.ontouchend = function (t) {
13836        var e = this.getTouch(t.changedTouches);
13837        e && this._pointerUp(t, e);
13838      }),
13839      (s._pointerUp = function (t, e) {
13840        this._pointerDone(), this.pointerUp(t, e);
13841      }),
13842      (s.pointerUp = function (t, e) {
13843        this.emitEvent("pointerUp", [t, e]);
13844      }),
13845      (s._pointerDone = function () {
13846        (this.isPointerDown = !1),
13847          delete this.pointerIdentifier,
13848          this._unbindPostStartEvents(),
13849          this.pointerDone();
13850      }),
13851      (s.pointerDone = i),
13852      (s.onpointercancel = function (t) {
13853        t.pointerId == this.pointerIdentifier && this._pointerCancel(t, t);
13854      }),
13855      (s.ontouchcancel = function (t) {
13856        var e = this.getTouch(t.changedTouches);
13857        e && this._pointerCancel(t, e);
13858      }),
13859      (s._pointerCancel = function (t, e) {
13860        this._pointerDone(), this.pointerCancel(t, e);
13861      }),
13862      (s.pointerCancel = function (t, e) {
13863        this.emitEvent("pointerCancel", [t, e]);
13864      }),
13865      (n.getPointerPoint = function (t) {
13866        return { x: t.pageX, y: t.pageY };
13867      }),
13868      n
13869    );
13870  }),
13871  (function (t, e) {
13872    "function" == typeof define && define.amd
13873      ? define(
13874          "unidragger/unidragger",
13875          ["unipointer/unipointer"],
13876          function (i) {
13877            return e(t, i);
13878          },
13879        )
13880      : "object" == typeof module && module.exports
13881        ? (module.exports = e(t, require("unipointer")))
13882        : (t.Unidragger = e(t, t.Unipointer));
13883  })(window, function (t, e) {
13884    function i() {}
13885    var n = (i.prototype = Object.create(e.prototype));
13886    return (
13887      (n.bindHandles = function () {
13888        this._bindHandles(!0);
13889      }),
13890      (n.unbindHandles = function () {
13891        this._bindHandles(!1);
13892      }),
13893      (n._bindHandles = function (e) {
13894        e = void 0 === e || !!e;
13895        for (
13896          var i = e ? "addEventListener" : "removeEventListener", n = 0;
13897          n < this.handles.length;
13898          n++
13899        ) {
13900          var s = this.handles[n];
13901          this._bindStartEvent(s, e),
13902            s[i]("click", this),
13903            t.PointerEvent &&
13904              (s.style.touchAction = e ? this._touchActionValue : "");
13905        }
13906      }),
13907      (n._touchActionValue = "none"),
13908      (n.pointerDown = function (t, e) {
13909        if ("INPUT" == t.target.nodeName && "range" == t.target.type)
13910          return (this.isPointerDown = !1), void delete this.pointerIdentifier;
13911        this._dragPointerDown(t, e);
13912        var i = document.activeElement;
13913        i && i.blur && i.blur(),
13914          this._bindPostStartEvents(t),
13915          this.emitEvent("pointerDown", [t, e]);
13916      }),
13917      (n._dragPointerDown = function (t, i) {
13918        this.pointerDownPoint = e.getPointerPoint(i);
13919        var n = this.canPreventDefaultOnPointerDown(t, i);
13920        n && t.preventDefault();
13921      }),
13922      (n.canPreventDefaultOnPointerDown = function (t) {
13923        return "SELECT" != t.target.nodeName;
13924      }),
13925      (n.pointerMove = function (t, e) {
13926        var i = this._dragPointerMove(t, e);
13927        this.emitEvent("pointerMove", [t, e, i]), this._dragMove(t, e, i);
13928      }),
13929      (n._dragPointerMove = function (t, i) {
13930        var n = e.getPointerPoint(i),
13931          s = {
13932            x: n.x - this.pointerDownPoint.x,
13933            y: n.y - this.pointerDownPoint.y,
13934          };
13935        return (
13936          !this.isDragging && this.hasDragStarted(s) && this._dragStart(t, i), s
13937        );
13938      }),
13939      (n.hasDragStarted = function (t) {
13940        return Math.abs(t.x) > 3 || Math.abs(t.y) > 3;
13941      }),
13942      (n.pointerUp = function (t, e) {
13943        this.emitEvent("pointerUp", [t, e]), this._dragPointerUp(t, e);
13944      }),
13945      (n._dragPointerUp = function (t, e) {
13946        this.isDragging ? this._dragEnd(t, e) : this._staticClick(t, e);
13947      }),
13948      (n._dragStart = function (t, i) {
13949        (this.isDragging = !0),
13950          (this.dragStartPoint = e.getPointerPoint(i)),
13951          (this.isPreventingClicks = !0),
13952          this.dragStart(t, i);
13953      }),
13954      (n.dragStart = function (t, e) {
13955        this.emitEvent("dragStart", [t, e]);
13956      }),
13957      (n._dragMove = function (t, e, i) {
13958        this.isDragging && this.dragMove(t, e, i);
13959      }),
13960      (n.dragMove = function (t, e, i) {
13961        t.preventDefault(), this.emitEvent("dragMove", [t, e, i]);
13962      }),
13963      (n._dragEnd = function (t, e) {
13964        (this.isDragging = !1),
13965          setTimeout(
13966            function () {
13967              delete this.isPreventingClicks;
13968            }.bind(this),
13969          ),
13970          this.dragEnd(t, e);
13971      }),
13972      (n.dragEnd = function (t, e) {
13973        this.emitEvent("dragEnd", [t, e]);
13974      }),
13975      (n.onclick = function (t) {
13976        this.isPreventingClicks && t.preventDefault();
13977      }),
13978      (n._staticClick = function (t, e) {
13979        if (!this.isIgnoringMouseUp || "mouseup" != t.type) {
13980          var i = t.target.nodeName;
13981          ("INPUT" != i && "TEXTAREA" != i) || t.target.focus(),
13982            this.staticClick(t, e),
13983            "mouseup" != t.type &&
13984              ((this.isIgnoringMouseUp = !0),
13985              setTimeout(
13986                function () {
13987                  delete this.isIgnoringMouseUp;
13988                }.bind(this),
13989                400,
13990              ));
13991        }
13992      }),
13993      (n.staticClick = function (t, e) {
13994        this.emitEvent("staticClick", [t, e]);
13995      }),
13996      (i.getPointerPoint = e.getPointerPoint),
13997      i
13998    );
13999  }),
14000  (function (t, e) {
14001    "function" == typeof define && define.amd
14002      ? define(
14003          "flickity/js/drag",
14004          ["./flickity", "unidragger/unidragger", "fizzy-ui-utils/utils"],
14005          function (i, n, s) {
14006            return e(t, i, n, s);
14007          },
14008        )
14009      : "object" == typeof module && module.exports
14010        ? (module.exports = e(
14011            t,
14012            require("./flickity"),
14013            require("unidragger"),
14014            require("fizzy-ui-utils"),
14015          ))
14016        : (t.Flickity = e(t, t.Flickity, t.Unidragger, t.fizzyUIUtils));
14017  })(window, function (t, e, i, n) {
14018    function s(t) {
14019      var e = "touchstart" == t.type,
14020        i = "touch" == t.pointerType,
14021        n = d[t.target.nodeName];
14022      return e || i || n;
14023    }
14024    function o() {
14025      return { x: t.pageXOffset, y: t.pageYOffset };
14026    }
14027    n.extend(e.defaults, { draggable: !0, dragThreshold: 3 }),
14028      e.createMethods.push("_createDrag");
14029    var r = e.prototype;
14030    n.extend(r, i.prototype), (r._touchActionValue = "pan-y");
14031    var a = "createTouch" in document,
14032      h = !1;
14033    (r._createDrag = function () {
14034      this.on("activate", this.bindDrag),
14035        this.on("uiChange", this._uiChangeDrag),
14036        this.on("childUIPointerDown", this._childUIPointerDownDrag),
14037        this.on("deactivate", this.unbindDrag),
14038        a && !h && (t.addEventListener("touchmove", function () {}), (h = !0));
14039    }),
14040      (r.bindDrag = function () {
14041        this.options.draggable &&
14042          !this.isDragBound &&
14043          (this.element.classList.add("is-draggable"),
14044          (this.handles = [this.viewport]),
14045          this.bindHandles(),
14046          (this.isDragBound = !0));
14047      }),
14048      (r.unbindDrag = function () {
14049        this.isDragBound &&
14050          (this.element.classList.remove("is-draggable"),
14051          this.unbindHandles(),
14052          delete this.isDragBound);
14053      }),
14054      (r._uiChangeDrag = function () {
14055        delete this.isFreeScrolling;
14056      }),
14057      (r._childUIPointerDownDrag = function (t) {
14058        t.preventDefault(), this.pointerDownFocus(t);
14059      });
14060    var l = { TEXTAREA: !0, INPUT: !0, OPTION: !0 },
14061      c = {
14062        radio: !0,
14063        checkbox: !0,
14064        button: !0,
14065        submit: !0,
14066        image: !0,
14067        file: !0,
14068      };
14069    (r.pointerDown = function (e, i) {
14070      var n = l[e.target.nodeName] && !c[e.target.type];
14071      if (n)
14072        return (this.isPointerDown = !1), void delete this.pointerIdentifier;
14073      this._dragPointerDown(e, i);
14074      var s = document.activeElement;
14075      s && s.blur && s != this.element && s != document.body && s.blur(),
14076        this.pointerDownFocus(e),
14077        (this.dragX = this.x),
14078        this.viewport.classList.add("is-pointer-down"),
14079        this._bindPostStartEvents(e),
14080        (this.pointerDownScroll = o()),
14081        t.addEventListener("scroll", this),
14082        this.dispatchEvent("pointerDown", e, [i]);
14083    }),
14084      (r.pointerDownFocus = function (e) {
14085        var i = s(e);
14086        if (this.options.accessibility && !i) {
14087          var n = t.pageYOffset;
14088          this.element.focus(),
14089            t.pageYOffset != n && t.scrollTo(t.pageXOffset, n);
14090        }
14091      });
14092    var d = { INPUT: !0, SELECT: !0 };
14093    return (
14094      (r.canPreventDefaultOnPointerDown = function (t) {
14095        var e = s(t);
14096        return !e;
14097      }),
14098      (r.hasDragStarted = function (t) {
14099        return Math.abs(t.x) > this.options.dragThreshold;
14100      }),
14101      (r.pointerUp = function (t, e) {
14102        delete this.isTouchScrolling,
14103          this.viewport.classList.remove("is-pointer-down"),
14104          this.dispatchEvent("pointerUp", t, [e]),
14105          this._dragPointerUp(t, e);
14106      }),
14107      (r.pointerDone = function () {
14108        t.removeEventListener("scroll", this), delete this.pointerDownScroll;
14109      }),
14110      (r.dragStart = function (e, i) {
14111        (this.dragStartPosition = this.x),
14112          this.startAnimation(),
14113          t.removeEventListener("scroll", this),
14114          this.dispatchEvent("dragStart", e, [i]);
14115      }),
14116      (r.pointerMove = function (t, e) {
14117        var i = this._dragPointerMove(t, e);
14118        this.dispatchEvent("pointerMove", t, [e, i]), this._dragMove(t, e, i);
14119      }),
14120      (r.dragMove = function (t, e, i) {
14121        t.preventDefault(), (this.previousDragX = this.dragX);
14122        var n = this.options.rightToLeft ? -1 : 1,
14123          s = this.dragStartPosition + i.x * n;
14124        if (!this.options.wrapAround && this.slides.length) {
14125          var o = Math.max(-this.slides[0].target, this.dragStartPosition);
14126          s = s > o ? 0.5 * (s + o) : s;
14127          var r = Math.min(-this.getLastSlide().target, this.dragStartPosition);
14128          s = s < r ? 0.5 * (s + r) : s;
14129        }
14130        (this.dragX = s),
14131          (this.dragMoveTime = new Date()),
14132          this.dispatchEvent("dragMove", t, [e, i]);
14133      }),
14134      (r.dragEnd = function (t, e) {
14135        this.options.freeScroll && (this.isFreeScrolling = !0);
14136        var i = this.dragEndRestingSelect();
14137        if (this.options.freeScroll && !this.options.wrapAround) {
14138          var n = this.getRestingPosition();
14139          this.isFreeScrolling =
14140            -n > this.slides[0].target && -n < this.getLastSlide().target;
14141        } else
14142          this.options.freeScroll ||
14143            i != this.selectedIndex ||
14144            (i += this.dragEndBoostSelect());
14145        delete this.previousDragX,
14146          (this.isDragSelect = this.options.wrapAround),
14147          this.select(i),
14148          delete this.isDragSelect,
14149          this.dispatchEvent("dragEnd", t, [e]);
14150      }),
14151      (r.dragEndRestingSelect = function () {
14152        var t = this.getRestingPosition(),
14153          e = Math.abs(this.getSlideDistance(-t, this.selectedIndex)),
14154          i = this._getClosestResting(t, e, 1),
14155          n = this._getClosestResting(t, e, -1),
14156          s = i.distance < n.distance ? i.index : n.index;
14157        return s;
14158      }),
14159      (r._getClosestResting = function (t, e, i) {
14160        for (
14161          var n = this.selectedIndex,
14162            s = 1 / 0,
14163            o =
14164              this.options.contain && !this.options.wrapAround
14165                ? function (t, e) {
14166                    return t <= e;
14167                  }
14168                : function (t, e) {
14169                    return t < e;
14170                  };
14171          o(e, s) &&
14172          ((n += i), (s = e), (e = this.getSlideDistance(-t, n)), null !== e);
14173
14174        )
14175          e = Math.abs(e);
14176        return { distance: s, index: n - i };
14177      }),
14178      (r.getSlideDistance = function (t, e) {
14179        var i = this.slides.length,
14180          s = this.options.wrapAround && i > 1,
14181          o = s ? n.modulo(e, i) : e,
14182          r = this.slides[o];
14183        if (!r) return null;
14184        var a = s ? this.slideableWidth * Math.floor(e / i) : 0;
14185        return t - (r.target + a);
14186      }),
14187      (r.dragEndBoostSelect = function () {
14188        if (
14189          void 0 === this.previousDragX ||
14190          !this.dragMoveTime ||
14191          new Date() - this.dragMoveTime > 100
14192        )
14193          return 0;
14194        var t = this.getSlideDistance(-this.dragX, this.selectedIndex),
14195          e = this.previousDragX - this.dragX;
14196        return t > 0 && e > 0 ? 1 : t < 0 && e < 0 ? -1 : 0;
14197      }),
14198      (r.staticClick = function (t, e) {
14199        var i = this.getParentCell(t.target),
14200          n = i && i.element,
14201          s = i && this.cells.indexOf(i);
14202        this.dispatchEvent("staticClick", t, [e, n, s]);
14203      }),
14204      (r.onscroll = function () {
14205        var t = o(),
14206          e = this.pointerDownScroll.x - t.x,
14207          i = this.pointerDownScroll.y - t.y;
14208        (Math.abs(e) > 3 || Math.abs(i) > 3) && this._pointerDone();
14209      }),
14210      e
14211    );
14212  }),
14213  (function (t, e) {
14214    "function" == typeof define && define.amd
14215      ? define(
14216          "tap-listener/tap-listener",
14217          ["unipointer/unipointer"],
14218          function (i) {
14219            return e(t, i);
14220          },
14221        )
14222      : "object" == typeof module && module.exports
14223        ? (module.exports = e(t, require("unipointer")))
14224        : (t.TapListener = e(t, t.Unipointer));
14225  })(window, function (t, e) {
14226    function i(t) {
14227      this.bindTap(t);
14228    }
14229    var n = (i.prototype = Object.create(e.prototype));
14230    return (
14231      (n.bindTap = function (t) {
14232        t &&
14233          (this.unbindTap(),
14234          (this.tapElement = t),
14235          this._bindStartEvent(t, !0));
14236      }),
14237      (n.unbindTap = function () {
14238        this.tapElement &&
14239          (this._bindStartEvent(this.tapElement, !0), delete this.tapElement);
14240      }),
14241      (n.pointerUp = function (i, n) {
14242        if (!this.isIgnoringMouseUp || "mouseup" != i.type) {
14243          var s = e.getPointerPoint(n),
14244            o = this.tapElement.getBoundingClientRect(),
14245            r = t.pageXOffset,
14246            a = t.pageYOffset,
14247            h =
14248              s.x >= o.left + r &&
14249              s.x <= o.right + r &&
14250              s.y >= o.top + a &&
14251              s.y <= o.bottom + a;
14252          if ((h && this.emitEvent("tap", [i, n]), "mouseup" != i.type)) {
14253            this.isIgnoringMouseUp = !0;
14254            var l = this;
14255            setTimeout(function () {
14256              delete l.isIgnoringMouseUp;
14257            }, 400);
14258          }
14259        }
14260      }),
14261      (n.destroy = function () {
14262        this.pointerDone(), this.unbindTap();
14263      }),
14264      i
14265    );
14266  }),
14267  (function (t, e) {
14268    "function" == typeof define && define.amd
14269      ? define(
14270          "flickity/js/prev-next-button",
14271          ["./flickity", "tap-listener/tap-listener", "fizzy-ui-utils/utils"],
14272          function (i, n, s) {
14273            return e(t, i, n, s);
14274          },
14275        )
14276      : "object" == typeof module && module.exports
14277        ? (module.exports = e(
14278            t,
14279            require("./flickity"),
14280            require("tap-listener"),
14281            require("fizzy-ui-utils"),
14282          ))
14283        : e(t, t.Flickity, t.TapListener, t.fizzyUIUtils);
14284  })(window, function (t, e, i, n) {
14285    "use strict";
14286    function s(t, e) {
14287      (this.direction = t), (this.parent = e), this._create();
14288    }
14289    function o(t) {
14290      return "string" == typeof t
14291        ? t
14292        : "M " +
14293            t.x0 +
14294            ",50 L " +
14295            t.x1 +
14296            "," +
14297            (t.y1 + 50) +
14298            " L " +
14299            t.x2 +
14300            "," +
14301            (t.y2 + 50) +
14302            " L " +
14303            t.x3 +
14304            ",50  L " +
14305            t.x2 +
14306            "," +
14307            (50 - t.y2) +
14308            " L " +
14309            t.x1 +
14310            "," +
14311            (50 - t.y1) +
14312            " Z";
14313    }
14314    var r = "http://www.w3.org/2000/svg";
14315    (s.prototype = new i()),
14316      (s.prototype._create = function () {
14317        (this.isEnabled = !0), (this.isPrevious = this.direction == -1);
14318        var t = this.parent.options.rightToLeft ? 1 : -1;
14319        this.isLeft = this.direction == t;
14320        var e = (this.element = document.createElement("button"));
14321        (e.className = "flickity-prev-next-button"),
14322          (e.className += this.isPrevious ? " previous" : " next"),
14323          e.setAttribute("type", "button"),
14324          this.disable(),
14325          e.setAttribute("aria-label", this.isPrevious ? "previous" : "next");
14326        var i = this.createSVG();
14327        e.appendChild(i),
14328          this.on("tap", this.onTap),
14329          this.parent.on("select", this.update.bind(this)),
14330          this.on(
14331            "pointerDown",
14332            this.parent.childUIPointerDown.bind(this.parent),
14333          );
14334      }),
14335      (s.prototype.activate = function () {
14336        this.bindTap(this.element),
14337          this.element.addEventListener("click", this),
14338          this.parent.element.appendChild(this.element);
14339      }),
14340      (s.prototype.deactivate = function () {
14341        this.parent.element.removeChild(this.element),
14342          i.prototype.destroy.call(this),
14343          this.element.removeEventListener("click", this);
14344      }),
14345      (s.prototype.createSVG = function () {
14346        var t = document.createElementNS(r, "svg");
14347        t.setAttribute("viewBox", "0 0 100 100");
14348        var e = document.createElementNS(r, "path"),
14349          i = o(this.parent.options.arrowShape);
14350        return (
14351          e.setAttribute("d", i),
14352          e.setAttribute("class", "arrow"),
14353          this.isLeft ||
14354            e.setAttribute("transform", "translate(100, 100) rotate(180) "),
14355          t.appendChild(e),
14356          t
14357        );
14358      }),
14359      (s.prototype.onTap = function () {
14360        if (this.isEnabled) {
14361          this.parent.uiChange();
14362          var t = this.isPrevious ? "previous" : "next";
14363          this.parent[t]();
14364        }
14365      }),
14366      (s.prototype.handleEvent = n.handleEvent),
14367      (s.prototype.onclick = function () {
14368        var t = document.activeElement;
14369        t && t == this.element && this.onTap();
14370      }),
14371      (s.prototype.enable = function () {
14372        this.isEnabled || ((this.element.disabled = !1), (this.isEnabled = !0));
14373      }),
14374      (s.prototype.disable = function () {
14375        this.isEnabled && ((this.element.disabled = !0), (this.isEnabled = !1));
14376      }),
14377      (s.prototype.update = function () {
14378        var t = this.parent.slides;
14379        if (this.parent.options.wrapAround && t.length > 1)
14380          return void this.enable();
14381        var e = t.length ? t.length - 1 : 0,
14382          i = this.isPrevious ? 0 : e,
14383          n = this.parent.selectedIndex == i ? "disable" : "enable";
14384        this[n]();
14385      }),
14386      (s.prototype.destroy = function () {
14387        this.deactivate();
14388      }),
14389      n.extend(e.defaults, {
14390        prevNextButtons: !0,
14391        arrowShape: { x0: 10, x1: 60, y1: 50, x2: 70, y2: 40, x3: 30 },
14392      }),
14393      e.createMethods.push("_createPrevNextButtons");
14394    var a = e.prototype;
14395    return (
14396      (a._createPrevNextButtons = function () {
14397        this.options.prevNextButtons &&
14398          ((this.prevButton = new s(-1, this)),
14399          (this.nextButton = new s(1, this)),
14400          this.on("activate", this.activatePrevNextButtons));
14401      }),
14402      (a.activatePrevNextButtons = function () {
14403        this.prevButton.activate(),
14404          this.nextButton.activate(),
14405          this.on("deactivate", this.deactivatePrevNextButtons);
14406      }),
14407      (a.deactivatePrevNextButtons = function () {
14408        this.prevButton.deactivate(),
14409          this.nextButton.deactivate(),
14410          this.off("deactivate", this.deactivatePrevNextButtons);
14411      }),
14412      (e.PrevNextButton = s),
14413      e
14414    );
14415  }),
14416  (function (t, e) {
14417    "function" == typeof define && define.amd
14418      ? define(
14419          "flickity/js/page-dots",
14420          ["./flickity", "tap-listener/tap-listener", "fizzy-ui-utils/utils"],
14421          function (i, n, s) {
14422            return e(t, i, n, s);
14423          },
14424        )
14425      : "object" == typeof module && module.exports
14426        ? (module.exports = e(
14427            t,
14428            require("./flickity"),
14429            require("tap-listener"),
14430            require("fizzy-ui-utils"),
14431          ))
14432        : e(t, t.Flickity, t.TapListener, t.fizzyUIUtils);
14433  })(window, function (t, e, i, n) {
14434    function s(t) {
14435      (this.parent = t), this._create();
14436    }
14437    (s.prototype = new i()),
14438      (s.prototype._create = function () {
14439        (this.holder = document.createElement("ol")),
14440          (this.holder.className = "flickity-page-dots"),
14441          (this.dots = []),
14442          this.on("tap", this.onTap),
14443          this.on(
14444            "pointerDown",
14445            this.parent.childUIPointerDown.bind(this.parent),
14446          );
14447      }),
14448      (s.prototype.activate = function () {
14449        this.setDots(),
14450          this.bindTap(this.holder),
14451          this.parent.element.appendChild(this.holder);
14452      }),
14453      (s.prototype.deactivate = function () {
14454        this.parent.element.removeChild(this.holder),
14455          i.prototype.destroy.call(this);
14456      }),
14457      (s.prototype.setDots = function () {
14458        var t = this.parent.slides.length - this.dots.length;
14459        t > 0 ? this.addDots(t) : t < 0 && this.removeDots(-t);
14460      }),
14461      (s.prototype.addDots = function (t) {
14462        for (var e = document.createDocumentFragment(), i = []; t; ) {
14463          var n = document.createElement("li");
14464          (n.className = "dot"), e.appendChild(n), i.push(n), t--;
14465        }
14466        this.holder.appendChild(e), (this.dots = this.dots.concat(i));
14467      }),
14468      (s.prototype.removeDots = function (t) {
14469        var e = this.dots.splice(this.dots.length - t, t);
14470        e.forEach(function (t) {
14471          this.holder.removeChild(t);
14472        }, this);
14473      }),
14474      (s.prototype.updateSelected = function () {
14475        this.selectedDot && (this.selectedDot.className = "dot"),
14476          this.dots.length &&
14477            ((this.selectedDot = this.dots[this.parent.selectedIndex]),
14478            (this.selectedDot.className = "dot is-selected"));
14479      }),
14480      (s.prototype.onTap = function (t) {
14481        var e = t.target;
14482        if ("LI" == e.nodeName) {
14483          this.parent.uiChange();
14484          var i = this.dots.indexOf(e);
14485          this.parent.select(i);
14486        }
14487      }),
14488      (s.prototype.destroy = function () {
14489        this.deactivate();
14490      }),
14491      (e.PageDots = s),
14492      n.extend(e.defaults, { pageDots: !0 }),
14493      e.createMethods.push("_createPageDots");
14494    var o = e.prototype;
14495    return (
14496      (o._createPageDots = function () {
14497        this.options.pageDots &&
14498          ((this.pageDots = new s(this)),
14499          this.on("activate", this.activatePageDots),
14500          this.on("select", this.updateSelectedPageDots),
14501          this.on("cellChange", this.updatePageDots),
14502          this.on("resize", this.updatePageDots),
14503          this.on("deactivate", this.deactivatePageDots));
14504      }),
14505      (o.activatePageDots = function () {
14506        this.pageDots.activate();
14507      }),
14508      (o.updateSelectedPageDots = function () {
14509        this.pageDots.updateSelected();
14510      }),
14511      (o.updatePageDots = function () {
14512        this.pageDots.setDots();
14513      }),
14514      (o.deactivatePageDots = function () {
14515        this.pageDots.deactivate();
14516      }),
14517      (e.PageDots = s),
14518      e
14519    );
14520  }),
14521  (function (t, e) {
14522    "function" == typeof define && define.amd
14523      ? define(
14524          "flickity/js/player",
14525          ["ev-emitter/ev-emitter", "fizzy-ui-utils/utils", "./flickity"],
14526          function (t, i, n) {
14527            return e(t, i, n);
14528          },
14529        )
14530      : "object" == typeof module && module.exports
14531        ? (module.exports = e(
14532            require("ev-emitter"),
14533            require("fizzy-ui-utils"),
14534            require("./flickity"),
14535          ))
14536        : e(t.EvEmitter, t.fizzyUIUtils, t.Flickity);
14537  })(window, function (t, e, i) {
14538    function n(t) {
14539      (this.parent = t),
14540        (this.state = "stopped"),
14541        o &&
14542          ((this.onVisibilityChange = function () {
14543            this.visibilityChange();
14544          }.bind(this)),
14545          (this.onVisibilityPlay = function () {
14546            this.visibilityPlay();
14547          }.bind(this)));
14548    }
14549    var s, o;
14550    "hidden" in document
14551      ? ((s = "hidden"), (o = "visibilitychange"))
14552      : "webkitHidden" in document &&
14553        ((s = "webkitHidden"), (o = "webkitvisibilitychange")),
14554      (n.prototype = Object.create(t.prototype)),
14555      (n.prototype.play = function () {
14556        if ("playing" != this.state) {
14557          var t = document[s];
14558          if (o && t)
14559            return void document.addEventListener(o, this.onVisibilityPlay);
14560          (this.state = "playing"),
14561            o && document.addEventListener(o, this.onVisibilityChange),
14562            this.tick();
14563        }
14564      }),
14565      (n.prototype.tick = function () {
14566        if ("playing" == this.state) {
14567          var t = this.parent.options.autoPlay;
14568          t = "number" == typeof t ? t : 3e3;
14569          var e = this;
14570          this.clear(),
14571            (this.timeout = setTimeout(function () {
14572              e.parent.next(!0), e.tick();
14573            }, t));
14574        }
14575      }),
14576      (n.prototype.stop = function () {
14577        (this.state = "stopped"),
14578          this.clear(),
14579          o && document.removeEventListener(o, this.onVisibilityChange);
14580      }),
14581      (n.prototype.clear = function () {
14582        clearTimeout(this.timeout);
14583      }),
14584      (n.prototype.pause = function () {
14585        "playing" == this.state && ((this.state = "paused"), this.clear());
14586      }),
14587      (n.prototype.unpause = function () {
14588        "paused" == this.state && this.play();
14589      }),
14590      (n.prototype.visibilityChange = function () {
14591        var t = document[s];
14592        this[t ? "pause" : "unpause"]();
14593      }),
14594      (n.prototype.visibilityPlay = function () {
14595        this.play(), document.removeEventListener(o, this.onVisibilityPlay);
14596      }),
14597      e.extend(i.defaults, { pauseAutoPlayOnHover: !0 }),
14598      i.createMethods.push("_createPlayer");
14599    var r = i.prototype;
14600    return (
14601      (r._createPlayer = function () {
14602        (this.player = new n(this)),
14603          this.on("activate", this.activatePlayer),
14604          this.on("uiChange", this.stopPlayer),
14605          this.on("pointerDown", this.stopPlayer),
14606          this.on("deactiv
14606ate", this.deactivatePlayer);
14607      }),
14608      (r.activatePlayer = function () {
14609        this.options.autoPlay &&
14610          (this.player.play(),
14611          this.element.addEventListener("mouseenter", this));
14612      }),
14613      (r.playPlayer = function () {
14614        this.player.play();
14615      }),
14616      (r.stopPlayer = function () {
14617        this.player.stop();
14618      }),
14619      (r.pausePlayer = function () {
14620        this.player.pause();
14621      }),
14622      (r.unpausePlayer = function () {
14623        this.player.unpause();
14624      }),
14625      (r.deactivatePlayer = function () {
14626        this.player.stop(),
14627          this.element.removeEventListener("mouseenter", this);
14628      }),
14629      (r.onmouseenter = function () {
14630        this.options.pauseAutoPlayOnHover &&
14631          (this.player.pause(),
14632          this.element.addEventListener("mouseleave", this));
14633      }),
14634      (r.onmouseleave = function () {
14635        this.player.unpause(),
14636          this.element.removeEventListener("mouseleave", this);
14637      }),
14638      (i.Player = n),
14639      i
14640    );
14641  }),
14642  (function (t, e) {
14643    "function" == typeof define && define.amd
14644      ? define(
14645          "flickity/js/add-remove-cell",
14646          ["./flickity", "fizzy-ui-utils/utils"],
14647          function (i, n) {
14648            return e(t, i, n);
14649          },
14650        )
14651      : "object" == typeof module && module.exports
14652        ? (module.exports = e(
14653            t,
14654            require("./flickity"),
14655            require("fizzy-ui-utils"),
14656          ))
14657        : e(t, t.Flickity, t.fizzyUIUtils);
14658  })(window, function (t, e, i) {
14659    function n(t) {
14660      var e = document.createDocumentFragment();
14661      return (
14662        t.forEach(function (t) {
14663          e.appendChild(t.element);
14664        }),
14665        e
14666      );
14667    }
14668    var s = e.prototype;
14669    return (
14670      (s.insert = function (t, e) {
14671        var i = this._makeCells(t);
14672        if (i && i.length) {
14673          var s = this.cells.length;
14674          e = void 0 === e ? s : e;
14675          var o = n(i),
14676            r = e == s;
14677          if (r) this.slider.appendChild(o);
14678          else {
14679            var a = this.cells[e].element;
14680            this.slider.insertBefore(o, a);
14681          }
14682          if (0 === e) this.cells = i.concat(this.cells);
14683          else if (r) this.cells = this.cells.concat(i);
14684          else {
14685            var h = this.cells.splice(e, s - e);
14686            this.cells = this.cells.concat(i).concat(h);
14687          }
14688          this._sizeCells(i);
14689          var l = e > this.selectedIndex ? 0 : i.length;
14690          this._cellAddedRemoved(e, l);
14691        }
14692      }),
14693      (s.append = function (t) {
14694        this.insert(t, this.cells.length);
14695      }),
14696      (s.prepend = function (t) {
14697        this.insert(t, 0);
14698      }),
14699      (s.remove = function (t) {
14700        var e,
14701          n,
14702          s = this.getCells(t),
14703          o = 0,
14704          r = s.length;
14705        for (e = 0; e < r; e++) {
14706          n = s[e];
14707          var a = this.cells.indexOf(n) < this.selectedIndex;
14708          o -= a ? 1 : 0;
14709        }
14710        for (e = 0; e < r; e++)
14711          (n = s[e]), n.remove(), i.removeFrom(this.cells, n);
14712        s.length && this._cellAddedRemoved(0, o);
14713      }),
14714      (s._cellAddedRemoved = function (t, e) {
14715        (e = e || 0),
14716          (this.selectedIndex += e),
14717          (this.selectedIndex = Math.max(
14718            0,
14719            Math.min(this.slides.length - 1, this.selectedIndex),
14720          )),
14721          this.cellChange(t, !0),
14722          this.emitEvent("cellAddedRemoved", [t, e]);
14723      }),
14724      (s.cellSizeChange = function (t) {
14725        var e = this.getCell(t);
14726        if (e) {
14727          e.getSize();
14728          var i = this.cells.indexOf(e);
14729          this.cellChange(i);
14730        }
14731      }),
14732      (s.cellChange = function (t, e) {
14733        var i = this.slideableWidth;
14734        if (
14735          (this._positionCells(t),
14736          this._getWrapShiftCells(),
14737          this.setGallerySize(),
14738          this.emitEvent("cellChange", [t]),
14739          this.options.freeScroll)
14740        ) {
14741          var n = i - this.slideableWidth;
14742          (this.x += n * this.cellAlign), this.positionSlider();
14743        } else
14744          e && this.positionSliderAtSelected(), this.select(this.selectedIndex);
14745      }),
14746      e
14747    );
14748  }),
14749  (function (t, e) {
14750    "function" == typeof define && define.amd
14751      ? define(
14752          "flickity/js/lazyload",
14753          ["./flickity", "fizzy-ui-utils/utils"],
14754          function (i, n) {
14755            return e(t, i, n);
14756          },
14757        )
14758      : "object" == typeof module && module.exports
14759        ? (module.exports = e(
14760            t,
14761            require("./flickity"),
14762            require("fizzy-ui-utils"),
14763          ))
14764        : e(t, t.Flickity, t.fizzyUIUtils);
14765  })(window, function (t, e, i) {
14766    "use strict";
14767    function n(t) {
14768      if ("IMG" == t.nodeName && t.getAttribute("data-flickity-lazyload"))
14769        return [t];
14770      var e = t.querySelectorAll("img[data-flickity-lazyload]");
14771      return i.makeArray(e);
14772    }
14773    function s(t, e) {
14774      (this.img = t), (this.flickity = e), this.load();
14775    }
14776    e.createMethods.push("_createLazyload");
14777    var o = e.prototype;
14778    return (
14779      (o._createLazyload = function () {
14780        this.on("select", this.lazyLoad);
14781      }),
14782      (o.lazyLoad = function () {
14783        var t = this.options.lazyLoad;
14784        if (t) {
14785          var e = "number" == typeof t ? t : 0,
14786            i = this.getAdjacentCellElements(e),
14787            o = [];
14788          i.forEach(function (t) {
14789            var e = n(t);
14790            o = o.concat(e);
14791          }),
14792            o.forEach(function (t) {
14793              new s(t, this);
14794            }, this);
14795        }
14796      }),
14797      (s.prototype.handleEvent = i.handleEvent),
14798      (s.prototype.load = function () {
14799        this.img.addEventListener("load", this),
14800          this.img.addEventListener("error", this),
14801          (this.img.src = this.img.getAttribute("data-flickity-lazyload")),
14802          this.img.removeAttribute("data-flickity-lazyload");
14803      }),
14804      (s.prototype.onload = function (t) {
14805        this.complete(t, "flickity-lazyloaded");
14806      }),
14807      (s.prototype.onerror = function (t) {
14808        this.complete(t, "flickity-lazyerror");
14809      }),
14810      (s.prototype.complete = function (t, e) {
14811        this.img.removeEventListener("load", this),
14812          this.img.removeEventListener("error", this);
14813        var i = this.flickity.getParentCell(this.img),
14814          n = i && i.element;
14815        this.flickity.cellSizeChange(n),
14816          this.img.classList.add(e),
14817          this.flickity.dispatchEvent("lazyLoad", t, n);
14818      }),
14819      (e.LazyLoader = s),
14820      e
14821    );
14822  }),
14823  (function (t, e) {
14824    "function" == typeof define && define.amd
14825      ? define(
14826          "flickity/js/index",
14827          [
14828            "./flickity",
14829            "./drag",
14830            "./prev-next-button",
14831            "./page-dots",
14832            "./player",
14833            "./add-remove-cell",
14834            "./lazyload",
14835          ],
14836          e,
14837        )
14838      : "object" == typeof module &&
14839        module.exports &&
14840        (module.exports = e(
14841          require("./flickity"),
14842          require("./drag"),
14843          require("./prev-next-button"),
14844          require("./page-dots"),
14845          require("./player"),
14846          require("./add-remove-cell"),
14847          require("./lazyload"),
14848        ));
14849  })(window, function (t) {
14850    return t;
14851  }),
14852  (function (t, e) {
14853    "function" == typeof define && define.amd
14854      ? define(
14855          "flickity-as-nav-for/as-nav-for",
14856          ["flickity/js/index", "fizzy-ui-utils/utils"],
14857          e,
14858        )
14859      : "object" == typeof module && module.exports
14860        ? (module.exports = e(require("flickity"), require("fizzy-ui-utils")))
14861        : (t.Flickity = e(t.Flickity, t.fizzyUIUtils));
14862  })(window, function (t, e) {
14863    function i(t, e, i) {
14864      return (e - t) * i + t;
14865    }
14866    t.createMethods.push("_createAsNavFor");
14867    var n = t.prototype;
14868    return (
14869      (n._createAsNavFor = function () {
14870        this.on("activate", this.activateAsNavFor),
14871          this.on("deactivate", this.deactivateAsNavFor),
14872          this.on("destroy", this.destroyAsNavFor);
14873        var t = this.options.asNavFor;
14874        if (t) {
14875          var e = this;
14876          setTimeout(function () {
14877            e.setNavCompanion(t);
14878          });
14879        }
14880      }),
14881      (n.setNavCompanion = function (i) {
14882        i = e.getQueryElement(i);
14883        var n = t.data(i);
14884        if (n && n != this) {
14885          this.navCompanion = n;
14886          var s = this;
14887          (this.onNavCompanionSelect = function () {
14888            s.navCompanionSelect();
14889          }),
14890            n.on("select", this.onNavCompanionSelect),
14891            this.on("staticClick", this.onNavStaticClick),
14892            this.navCompanionSelect(!0);
14893        }
14894      }),
14895      (n.navCompanionSelect = function (t) {
14896        if (this.navCompanion) {
14897          var e = this.navCompanion.selectedCells[0],
14898            n = this.navCompanion.cells.indexOf(e),
14899            s = n + this.navCompanion.selectedCells.length - 1,
14900            o = Math.floor(i(n, s, this.navCompanion.cellAlign));
14901          if (
14902            (this.selectCell(o, !1, t),
14903            this.removeNavSelectedElements(),
14904            !(o >= this.cells.length))
14905          ) {
14906            var r = this.cells.slice(n, s + 1);
14907            (this.navSelectedElements = r.map(function (t) {
14908              return t.element;
14909            })),
14910              this.changeNavSelectedClass("add");
14911          }
14912        }
14913      }),
14914      (n.changeNavSelectedClass = function (t) {
14915        this.navSelectedElements.forEach(function (e) {
14916          e.classList[t]("is-nav-selected");
14917        });
14918      }),
14919      (n.activateAsNavFor = function () {
14920        this.navCompanionSelect(!0);
14921      }),
14922      (n.removeNavSelectedElements = function () {
14923        this.navSelectedElements &&
14924          (this.changeNavSelectedClass("remove"),
14925          delete this.navSelectedElements);
14926      }),
14927      (n.onNavStaticClick = function (t, e, i, n) {
14928        "number" == typeof n && this.navCompanion.selectCell(n);
14929      }),
14930      (n.deactivateAsNavFor = function () {
14931        this.removeNavSelectedElements();
14932      }),
14933      (n.destroyAsNavFor = function () {
14934        this.navCompanion &&
14935          (this.navCompanion.off("select", this.onNavCompanionSelect),
14936          this.off("staticClick", this.onNavStaticClick),
14937          delete this.navCompanion);
14938      }),
14939      t
14940    );
14941  }),
14942  (function (t, e) {
14943    "use strict";
14944    "function" == typeof define && define.amd
14945      ? define(
14946          "imagesloaded/imagesloaded",
14947          ["ev-emitter/ev-emitter"],
14948          function (i) {
14949            return e(t, i);
14950          },
14951        )
14952      : "object" == typeof module && module.exports
14953        ? (module.exports = e(t, require("ev-emitter")))
14954        : (t.imagesLoaded = e(t, t.EvEmitter));
14955  })("undefined" != typeof window ? window : this, function (t, e) {
14956    function i(t, e) {
14957      for (var i in e) t[i] = e[i];
14958      return t;
14959    }
14960    function n(t) {
14961      var e = [];
14962      if (Array.isArray(t)) e = t;
14963      else if ("number" == typeof t.length)
14964        for (var i = 0; i < t.length; i++) e.push(t[i]);
14965      else e.push(t);
14966      return e;
14967    }
14968    function s(t, e, o) {
14969      return this instanceof s
14970        ? ("string" == typeof t && (t = document.querySelectorAll(t)),
14971          (this.elements = n(t)),
14972          (this.options = i({}, this.options)),
14973          "function" == typeof e ? (o = e) : i(this.options, e),
14974          o && this.on("always", o),
14975          this.getImages(),
14976          a && (this.jqDeferred = new a.Deferred()),
14977          void setTimeout(
14978            function () {
14979              this.check();
14980            }.bind(this),
14981          ))
14982        : new s(t, e, o);
14983    }
14984    function o(t) {
14985      this.img = t;
14986    }
14987    function r(t, e) {
14988      (this.url = t), (this.element = e), (this.img = new Image());
14989    }
14990    var a = t.jQuery,
14991      h = t.console;
14992    (s.prototype = Object.create(e.prototype)),
14993      (s.prototype.options = {}),
14994      (s.prototype.getImages = function () {
14995        (this.images = []), this.elements.forEach(this.addElementImages, this);
14996      }),
14997      (s.prototype.addElementImages = function (t) {
14998        "IMG" == t.nodeName && this.addImage(t),
14999          this.options.background === !0 && this.addElementBackgroundImages(t);
15000        var e = t.nodeType;
15001        if (e && l[e]) {
15002          for (var i = t.querySelectorAll("img"), n = 0; n < i.length; n++) {
15003            var s = i[n];
15004            this.addImage(s);
15005          }
15006          if ("string" == typeof this.options.background) {
15007            var o = t.querySelectorAll(this.options.background);
15008            for (n = 0; n < o.length; n++) {
15009              var r = o[n];
15010              this.addElementBackgroundImages(r);
15011            }
15012          }
15013        }
15014      });
15015    var l = { 1: !0, 9: !0, 11: !0 };
15016    return (
15017      (s.prototype.addElementBackgroundImages = function (t) {
15018        var e = getComputedStyle(t);
15019        if (e)
15020          for (
15021            var i = /url\((['"])?(.*?)\1\)/gi, n = i.exec(e.backgroundImage);
15022            null !== n;
15023
15024          ) {
15025            var s = n && n[2];
15026            s && this.addBackground(s, t), (n = i.exec(e.backgroundImage));
15027          }
15028      }),
15029      (s.prototype.addImage = function (t) {
15030        var e = new o(t);
15031        this.images.push(e);
15032      }),
15033      (s.prototype.addBackground = function (t, e) {
15034        var i = new r(t, e);
15035        this.images.push(i);
15036      }),
15037      (s.prototype.check = function () {
15038        function t(t, i, n) {
15039          setTimeout(function () {
15040            e.progress(t, i, n);
15041          });
15042        }
15043        var e = this;
15044        return (
15045          (this.progressedCount = 0),
15046          (this.hasAnyBroken = !1),
15047          this.images.length
15048            ? void this.images.forEach(function (e) {
15049                e.once("progress", t), e.check();
15050              })
15051            : void this.complete()
15052        );
15053      }),
15054      (s.prototype.progress = function (t, e, i) {
15055        this.progressedCount++,
15056          (this.hasAnyBroken = this.hasAnyBroken || !t.isLoaded),
15057          this.emitEvent("progress", [this, t, e]),
15058          this.jqDeferred &&
15059            this.jqDeferred.notify &&
15060            this.jqDeferred.notify(this, t),
15061          this.progressedCount == this.images.length && this.complete(),
15062          this.options.debug && h && h.log("progress: " + i, t, e);
15063      }),
15064      (s.prototype.complete = function () {
15065        var t = this.hasAnyBroken ? "fail" : "done";
15066        if (
15067          ((this.isComplete = !0),
15068          this.emitEvent(t, [this]),
15069          this.emitEvent("always", [this]),
15070          this.jqDeferred)
15071        ) {
15072          var e = this.hasAnyBroken ? "reject" : "resolve";
15073          this.jqDeferred[e](this);
15074        }
15075      }),
15076      (o.prototype = Object.create(e.prototype)),
15077      (o.prototype.check = function () {
15078        var t = this.getIsImageComplete();
15079        return t
15080          ? void this.confirm(0 !== this.img.naturalWidth, "naturalWidth")
15081          : ((this.proxyImage = new Image()),
15082            this.proxyImage.addEventListener("load", this),
15083            this.proxyImage.addEventListener("error", this),
15084            this.img.addEventListener("load", this),
15085            this.img.addEventListener("error", this),
15086            void (this.proxyImage.src = this.img.src));
15087      }),
15088      (o.prototype.getIsImageComplete = function () {
15089        return this.img.complete && void 0 !== this.img.naturalWidth;
15090      }),
15091      (o.prototype.confirm = function (t, e) {
15092        (this.isLoaded = t), this.emitEvent("progress", [this, this.img, e]);
15093      }),
15094      (o.prototype.handleEvent = function (t) {
15095        var e = "on" + t.type;
15096        this[e] && this[e](t);
15097      }),
15098      (o.prototype.onload = function () {
15099        this.confirm(!0, "onload"), this.unbindEvents();
15100      }),
15101      (o.prototype.onerror = function () {
15102        this.confirm(!1, "onerror"), this.unbindEvents();
15103      }),
15104      (o.prototype.unbindEvents = function () {
15105        this.proxyImage.removeEventListener("load", this),
15106          this.proxyImage.removeEventListener("error", this),
15107          this.img.removeEventListener("load", this),
15108          this.img.removeEventListener("error", this);
15109      }),
15110      (r.prototype = Object.create(o.prototype)),
15111      (r.prototype.check = function () {
15112        this.img.addEventListener("load", this),
15113          this.img.addEventListener("error", this),
15114          (this.img.src = this.url);
15115        var t = this.getIsImageComplete();
15116        t &&
15117          (this.confirm(0 !== this.img.naturalWidth, "naturalWidth"),
15118          this.unbindEvents());
15119      }),
15120      (r.prototype.unbindEvents = function () {
15121        this.img.removeEventListener("load", this),
15122          this.img.removeEventListener("error", this);
15123      }),
15124      (r.prototype.confirm = function (t, e) {
15125        (this.isLoaded = t),
15126          this.emitEvent("progress", [this, this.element, e]);
15127      }),
15128      (s.makeJQueryPlugin = function (e) {
15129        (e = e || t.jQuery),
15130          e &&
15131            ((a = e),
15132            (a.fn.imagesLoaded = function (t, e) {
15133              var i = new s(this, t, e);
15134              return i.jqDeferred.promise(a(this));
15135            }));
15136      }),
15137      s.makeJQueryPlugin(),
15138      s
15139    );
15140  }),
15141  (function (t, e) {
15142    "function" == typeof define && define.amd
15143      ? define(
15144          ["flickity/js/index", "imagesloaded/imagesloaded"],
15145          function (i, n) {
15146            return e(t, i, n);
15147          },
15148        )
15149      : "object" == typeof module && module.exports
15150        ? (module.exports = e(t, require("flickity"), require("imagesloaded")))
15151        : (t.Flickity = e(t, t.Flickity, t.imagesLoaded));
15152  })(window, function (t, e, i) {
15153    "use strict";
15154    e.createMethods.push("_createImagesLoaded");
15155    var n = e.prototype;
15156    return (
15157      (n._createImagesLoaded = function () {
15158        this.on("activate", this.imagesLoaded);
15159      }),
15160      (n.imagesLoaded = function () {
15161        function t(t, i) {
15162          var n = e.getParentCell(i.img);
15163          e.cellSizeChange(n && n.element),
15164            e.options.freeScroll || e.positionSliderAtSelected();
15165        }
15166        if (this.options.imagesLoaded) {
15167          var e = this;
15168          i(this.slider).on("progress", t);
15169        }
15170      }),
15171      e
15172    );
15173  });
15174
15175/*!
15176 * modernizr v3.5.0
15177 * Build https://modernizr.com/download?-touchevents-setclasses-dontmin
15178 *
15179 * Copyright (c)
15180 *  Faruk Ates
15181 *  Paul Irish
15182 *  Alex Sexton
15183 *  Ryan Seddon
15184 *  Patrick Kettner
15185 *  Stu Cox
15186 *  Richard Herrera
15187
15188 * MIT License
15189 */
15190
15191/*
15192 * Modernizr tests which native CSS3 and HTML5 features are available in the
15193 * current UA and makes the results available to you in two ways: as properties on
15194 * a global `Modernizr` object, and as classes on the `<html>` element. This
15195 * information allows you to progressively enhance your pages with a granular level
15196 * of control over the experience.
15197 */
15198
15199(function (window, document, undefined) {
15200  var classes = [];
15201
15202  var tests = [];
15203
15204  /**
15205   *
15206   * ModernizrProto is the constructor for Modernizr
15207   *
15208   * @class
15209   * @access public
15210   */
15211
15212  var ModernizrProto = {
15213    // The current version, dummy
15214    _version: "3.5.0",
15215
15216    // Any settings that don't work as separate modules
15217    // can go in here as configuration.
15218    _config: {
15219      classPrefix: "",
15220      enableClasses: true,
15221      enableJSClass: true,
15222      usePrefixes: true,
15223    },
15224
15225    // Queue of tests
15226    _q: [],
15227
15228    // Stub these for people who are listening
15229    on: function (test, cb) {
15230      // I don't really think people should do this, but we can
15231      // safe guard it a bit.
15232      // -- NOTE:: this gets WAY overridden in src/addTest for actual async tests.
15233      // This is in case people listen to synchronous tests. I would leave it out,
15234      // but the code to *disallow* sync tests in the real version of this
15235      // function is actually larger than this.
15236      var self = this;
15237      setTimeout(function () {
15238        cb(self[test]);
15239      }, 0);
15240    },
15241
15242    addTest: function (name, fn, options) {
15243      tests.push({ name: name, fn: fn, options: options });
15244    },
15245
15246    addAsyncTest: function (fn) {
15247      tests.push({ name: null, fn: fn });
15248    },
15249  };
15250
15251  // Fake some of Object.create so we can force non test results to be non "own" properties.
15252  var Modernizr = function () {};
15253  Modernizr.prototype = ModernizrProto;
15254
15255  // Leak modernizr globally when you `require` it rather than force it here.
15256  // Overwrite name so constructor name is nicer :D
15257  Modernizr = new Modernizr();
15258
15259  /**
15260   * is returns a boolean if the typeof an obj is exactly type.
15261   *
15262   * @access private
15263   * @function is
15264   * @param {*} obj - A thing we want to check the type of
15265   * @param {string} type - A string to compare the typeof against
15266   * @returns {boolean}
15267   */
15268
15269  function is(obj, type) {
15270    return typeof obj === type;
15271  }
15272  /**
15273   * Run through all tests and detect their support in the current UA.
15274   *
15275   * @access private
15276   */
15277
15278  function testRunner() {
15279    var featureNames;
15280    var feature;
15281    var aliasIdx;
15282    var result;
15283    var nameIdx;
15284    var featureName;
15285    var featureNameSplit;
15286
15287    for (var featureIdx in tests) {
15288      if (tests.hasOwnProperty(featureIdx)) {
15289        featureNames = [];
15290        feature = tests[featureIdx];
15291        // run the test, throw the return value into the Modernizr,
15292        // then based on that boolean, define an appropriate className
15293        // and push it into an array of classes we'll join later.
15294        //
15295        // If there is no name, it's an 'async' test that is run,
15296        // but not directly added to the object. That should
15297        // be done with a post-run addTest call.
15298        if (feature.name) {
15299          featureNames.push(feature.name.toLowerCase());
15300
15301          if (
15302            feature.options &&
15303            feature.options.aliases &&
15304            feature.options.aliases.length
15305          ) {
15306            // Add all the aliases into the names list
15307            for (
15308              aliasIdx = 0;
15309              aliasIdx < feature.options.aliases.length;
15310              aliasIdx++
15311            ) {
15312              featureNames.push(
15313                feature.options.aliases[aliasIdx].toLowerCase(),
15314              );
15315            }
15316          }
15317        }
15318
15319        // Run the test, or use the raw value if it's not a function
15320        result = is(feature.fn, "function") ? feature.fn() : feature.fn;
15321
15322        // Set each of the names on the Modernizr object
15323        for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) {
15324          featureName = featureNames[nameIdx];
15325          // Support dot properties as sub tests. We don't do checking to make sure
15326          // that the implied parent tests have been added. You must call them in
15327          // order (either in the test, or make the parent test a dependency).
15328          //
15329          // Cap it to TWO to make the logic simple and because who needs that kind of subtesting
15330          // hashtag famous last words
15331          featureNameSplit = featureName.split(".");
15332
15333          if (featureNameSplit.length === 1) {
15334            Modernizr[featureNameSplit[0]] = result;
15335          } else {
15336            // cast to a Boolean, if not one already
15337            if (
15338              Modernizr[featureNameSplit[0]] &&
15339              !(Modernizr[featureNameSplit[0]] instanceof Boolean)
15340            ) {
15341              Modernizr[featureNameSplit[0]] = new Boolean(
15342                Modernizr[featureNameSplit[0]],
15343              );
15344            }
15345
15346            Modernizr[featureNameSplit[0]][featureNameSplit[1]] = result;
15347          }
15348
15349          classes.push((result ? "" : "no-") + featureNameSplit.join("-"));
15350        }
15351      }
15352    }
15353  }
15354  /**
15355   * docElement is a convenience wrapper to grab the root element of the document
15356   *
15357   * @access private
15358   * @returns {HTMLElement|SVGElement} The root element of the document
15359   */
15360
15361  var docElement = document.documentElement;
15362
15363  /**
15364   * A convenience helper to check if the document we are running in is an SVG document
15365   *
15366   * @access private
15367   * @returns {boolean}
15368   */
15369
15370  var isSVG = docElement.nodeName.toLowerCase() === "svg";
15371
15372  /**
15373   * setClasses takes an array of class names and adds them to the root element
15374   *
15375   * @access private
15376   * @function setClasses
15377   * @param {string[]} classes - Array of class names
15378   */
15379
15380  // Pass in an and array of class names, e.g.:
15381  //  ['no-webp', 'borderradius', ...]
15382  function setClasses(classes) {
15383    var className = docElement.className;
15384    var classPrefix = Modernizr._config.classPrefix || "";
15385
15386    if (isSVG) {
15387      className = className.baseVal;
15388    }
15389
15390    // Change `no-js` to `js` (independently of the `enableClasses` option)
15391    // Handle classPrefix on this too
15392    if (Modernizr._config.enableJSClass) {
15393      var reJS = new RegExp("(^|\\s)" + classPrefix + "no-js(\\s|$)");
15394      className = className.replace(reJS, "$1" + classPrefix + "js$2");
15395    }
15396
15397    if (Modernizr._config.enableClasses) {
15398      // Add the new classes
15399      className += " " + classPrefix + classes.join(" " + classPrefix);
15400      if (isSVG) {
15401        docElement.className.baseVal = className;
15402      } else {
15403        docElement.className = className;
15404      }
15405    }
15406  }
15407
15408  /**
15409   * List of property values to set for css tests. See ticket #21
15410   * http://git.io/vUGl4
15411   *
15412   * @memberof Modernizr
15413   * @name Modernizr._prefixes
15414   * @optionName Modernizr._prefixes
15415   * @optionProp prefixes
15416   * @access public
15417   * @example
15418   *
15419   * Modernizr._prefixes is the internal list of prefixes that we test against
15420   * inside of things like [prefixed](#modernizr-prefixed) and [prefixedCSS](#-code-modernizr-prefixedcss). It is simply
15421   * an array of kebab-case vendor prefixes you can use within your code.
15422   *
15423   * Some common use cases include
15424   *
15425   * Generating all possible prefixed version of a CSS property
15426   * ```js
15427   * var rule = Modernizr._prefixes.join('transform: rotate(20deg); ');
15428   *
15429   * rule === 'transform: rotate(20deg); webkit-transform: rotate(20deg); moz-transform: rotate(20deg); o-transform: rotate(20deg); ms-transform: rotate(20deg);'
15430   * ```
15431   *
15432   * Generating all possible prefixed version of a CSS value
15433   * ```js
15434   * rule = 'display:' +  Modernizr._prefixes.join('flex; display:') + 'flex';
15435   *
15436   * rule === 'display:flex; display:-webkit-flex; display:-moz-flex; display:-o-flex; display:-ms-flex; display:flex'
15437   * ```
15438   */
15439
15440  // we use ['',''] rather than an empty array in order to allow a pattern of .`join()`ing prefixes to test
15441  // values in feature detects to continue to work
15442  var prefixes = ModernizrProto._config.usePrefixes
15443    ? " -webkit- -moz- -o- -ms- ".split(" ")
15444    : ["", ""];
15445
15446  // expose these for the plugin API. Look in the source for how to join() them against your input
15447  ModernizrProto._prefixes = prefixes;
15448
15449  /**
15450   * createElement is a convenience wrapper around document.createElement. Since we
15451   * use createElement all over the place, this allows for (slightly) smaller code
15452   * as well as abstracting away issues with creating elements in contexts other than
15453   * HTML documents (e.g. SVG documents).
15454   *
15455   * @access private
15456   * @function createElement
15457   * @returns {HTMLElement|SVGElement} An HTML or SVG element
15458   */
15459
15460  function createElement() {
15461    if (typeof document.createElement !== "function") {
15462      // This is the case in IE7, where the type of createElement is "object".
15463      // For this reason, we cannot call apply() as Object is not a Function.
15464      return document.createElement(arguments[0]);
15465    } else if (isSVG) {
15466      return document.createElementNS.call(
15467        document,
15468        "http://www.w3.org/2000/svg",
15469        arguments[0],
15470      );
15471    } else {
15472      return document.createElement.apply(document, arguments);
15473    }
15474  }
15475
15476  /**
15477   * getBody returns the body of a document, or an element that can stand in for
15478   * the body if a real body does not exist
15479   *
15480   * @access private
15481   * @function getBody
15482   * @returns {HTMLElement|SVGElement} Returns the real body of a document, or an
15483   * artificially created element that stands in for the body
15484   */
15485
15486  function getBody() {
15487    // After page load injecting a fake body doesn't work so check if body exists
15488    var body = document.body;
15489
15490    if (!body) {
15491      // Can't use the real body create a fake one.
15492      body = createElement(isSVG ? "svg" : "body");
15493      body.fake = true;
15494    }
15495
15496    return body;
15497  }
15498
15499  /**
15500   * injectElementWithStyles injects an element with style element and some CSS rules
15501   *
15502   * @access private
15503   * @function injectElementWithStyles
15504   * @param {string} rule - String representing a css rule
15505   * @param {function} callback - A function that is used to test the injected element
15506   * @param {number} [nodes] - An integer representing the number of additional nodes you want injected
15507   * @param {string[]}
15507 [testnames] - An array of strings that are used as ids for the additional nodes
15508   * @returns {boolean}
15509   */
15510
15511  function injectElementWithStyles(rule, callback, nodes, testnames) {
15512    var mod = "modernizr";
15513    var style;
15514    var ret;
15515    var node;
15516    var docOverflow;
15517    var div = createElement("div");
15518    var body = getBody();
15519
15520    if (parseInt(nodes, 10)) {
15521      // In order not to give false positives we create a node for each test
15522      // This also allows the method to scale for unspecified uses
15523      while (nodes--) {
15524        node = createElement("div");
15525        node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
15526        div.appendChild(node);
15527      }
15528    }
15529
15530    style = createElement("style");
15531    style.type = "text/css";
15532    style.id = "s" + mod;
15533
15534    // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
15535    // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
15536    (!body.fake ? div : body).appendChild(style);
15537    body.appendChild(div);
15538
15539    if (style.styleSheet) {
15540      style.styleSheet.cssText = rule;
15541    } else {
15542      style.appendChild(document.createTextNode(rule));
15543    }
15544    div.id = mod;
15545
15546    if (body.fake) {
15547      //avoid crashing IE8, if background image is used
15548      body.style.background = "";
15549      //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
15550      body.style.overflow = "hidden";
15551      docOverflow = docElement.style.overflow;
15552      docElement.style.overflow = "hidden";
15553      docElement.appendChild(body);
15554    }
15555
15556    ret = callback(div, rule);
15557    // If this is done after page load we don't want to remove the body so check if body exists
15558    if (body.fake) {
15559      body.parentNode.removeChild(body);
15560      docElement.style.overflow = docOverflow;
15561      // Trigger layout so kinetic scrolling isn't disabled in iOS6+
15562      // eslint-disable-next-line
15563      docElement.offsetHeight;
15564    } else {
15565      div.parentNode.removeChild(div);
15566    }
15567
15568    return !!ret;
15569  }
15570
15571  /**
15572   * testStyles injects an element with style element and some CSS rules
15573   *
15574   * @memberof Modernizr
15575   * @name Modernizr.testStyles
15576   * @optionName Modernizr.testStyles()
15577   * @optionProp testStyles
15578   * @access public
15579   * @function testStyles
15580   * @param {string} rule - String representing a css rule
15581   * @param {function} callback - A function that is used to test the injected element
15582   * @param {number} [nodes] - An integer representing the number of additional nodes you want injected
15583   * @param {string[]} [testnames] - An array of strings that are used as ids for the additional nodes
15584   * @returns {boolean}
15585   * @example
15586   *
15587   * `Modernizr.testStyles` takes a CSS rule and injects it onto the current page
15588   * along with (possibly multiple) DOM elements. This lets you check for features
15589   * that can not be detected by simply checking the [IDL](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Interface_development_guide/IDL_interface_rules).
15590   *
15591   * ```js
15592   * Modernizr.testStyles('#modernizr { width: 9px; color: papayawhip; }', function(elem, rule) {
15593   *   // elem is the first DOM node in the page (by default #modernizr)
15594   *   // rule is the first argument you supplied - the CSS rule in string form
15595   *
15596   *   addTest('widthworks', elem.style.width === '9px')
15597   * });
15598   * ```
15599   *
15600   * If your test requires multiple nodes, you can include a third argument
15601   * indicating how many additional div elements to include on the page. The
15602   * additional nodes are injected as children of the `elem` that is returned as
15603   * the first argument to the callback.
15604   *
15605   * ```js
15606   * Modernizr.testStyles('#modernizr {width: 1px}; #modernizr2 {width: 2px}', function(elem) {
15607   *   document.getElementById('modernizr').style.width === '1px'; // true
15608   *   document.getElementById('modernizr2').style.width === '2px'; // true
15609   *   elem.firstChild === document.getElementById('modernizr2'); // true
15610   * }, 1);
15611   * ```
15612   *
15613   * By default, all of the additional elements have an ID of `modernizr[n]`, where
15614   * `n` is its index (e.g. the first additional, second overall is `#modernizr2`,
15615   * the second additional is `#modernizr3`, etc.).
15616   * If you want to have more meaningful IDs for your function, you can provide
15617   * them as the fourth argument, as an array of strings
15618   *
15619   * ```js
15620   * Modernizr.testStyles('#foo {width: 10px}; #bar {height: 20px}', function(elem) {
15621   *   elem.firstChild === document.getElementById('foo'); // true
15622   *   elem.lastChild === document.getElementById('bar'); // true
15623   * }, 2, ['foo', 'bar']);
15624   * ```
15625   *
15626   */
15627
15628  var testStyles = (ModernizrProto.testStyles = injectElementWithStyles);
15629
15630  /*!
15631{
15632  "name": "Touch Events",
15633  "property": "touchevents",
15634  "caniuse" : "touch",
15635  "tags": ["media", "attribute"],
15636  "notes": [{
15637    "name": "Touch Events spec",
15638    "href": "https://www.w3.org/TR/2013/WD-touch-events-20130124/"
15639  }],
15640  "warnings": [
15641    "Indicates if the browser supports the Touch Events spec, and does not necessarily reflect a touchscreen device"
15642  ],
15643  "knownBugs": [
15644    "False-positive on some configurations of Nokia N900",
15645    "False-positive on some BlackBerry 6.0 builds – https://github.com/Modernizr/Modernizr/issues/372#issuecomment-3112695"
15646  ]
15647}
15648!*/
15649  /* DOC
15650Indicates if the browser supports the W3C Touch Events API.
15651
15652This *does not* necessarily reflect a touchscreen device:
15653
15654* Older touchscreen devices only emulate mouse events
15655* Modern IE touch devices implement the Pointer Events API instead: use `Modernizr.pointerevents` to detect support for that
15656* Some browsers & OS setups may enable touch APIs when no touchscreen is connected
15657* Future browsers may implement other event models for touch interactions
15658
15659See this article: [You Can't Detect A Touchscreen](http://www.stucox.com/blog/you-cant-detect-a-touchscreen/).
15660
15661It's recommended to bind both mouse and touch/pointer events simultaneously – see [this HTML5 Rocks tutorial](http://www.html5rocks.com/en/mobile/touchandmouse/).
15662
15663This test will also return `true` for Firefox 4 Multitouch support.
15664*/
15665
15666  // Chrome (desktop) used to lie about its support on this, but that has since been rectified: http://crbug.com/36415
15667  Modernizr.addTest("touchevents", function () {
15668    var bool;
15669    if (
15670      "ontouchstart" in window ||
15671      (window.DocumentTouch && document instanceof DocumentTouch)
15672    ) {
15673      bool = true;
15674    } else {
15675      // include the 'heartz' as a way to have a non matching MQ to help terminate the join
15676      // https://git.io/vznFH
15677      var query = [
15678        "@media (",
15679        prefixes.join("touch-enabled),("),
15680        "heartz",
15681        ")",
15682        "{#modernizr{top:9px;position:absolute}}",
15683      ].join("");
15684      testStyles(query, function (node) {
15685        bool = node.offsetTop === 9;
15686      });
15687    }
15688    return bool;
15689  });
15690
15691  // Run each test
15692  testRunner();
15693
15694  // Remove the "no-js" class if it exists
15695  setClasses(classes);
15696
15697  delete ModernizrProto.addTest;
15698  delete ModernizrProto.addAsyncTest;
15699
15700  // Run the things that are supposed to run after the tests
15701  for (var i = 0; i < Modernizr._q.length; i++) {
15702    Modernizr._q[i]();
15703  }
15704
15705  // Leak Modernizr namespace
15706  window.Modernizr = Modernizr;
15707})(window, document);
15708
15709/**
15710 * matter-js 0.14.2 by @liabru 2018-06-11
15711 * http://brm.io/matter-js/
15712 * License MIT
15713 */
15714!(function (e) {
15715  if ("object" == typeof exports && "undefined" != typeof module)
15716    module.exports = e();
15717  else if ("function" == typeof define && define.amd) define([], e);
15718  else {
15719    var t;
15720    (t =
15721      "undefined" != typeof window
15722        ? window
15723        : "undefined" != typeof global
15724          ? global
15725          : "undefined" != typeof self
15726            ? self
15727            : this),
15728      (t.Matter = e());
15729  }
15730})(function () {
15731  return (function () {
15732    function e(t, n, o) {
15733      function i(s, a) {
15734        if (!n[s]) {
15735          if (!t[s]) {
15736            var l = "function" == typeof require && require;
15737            if (!a && l) return l(s, !0);
15738            if (r) return r(s, !0);
15739            var c = new Error("Cannot find module '" + s + "'");
15740            throw ((c.code = "MODULE_NOT_FOUND"), c);
15741          }
15742          var d = (n[s] = { exports: {} });
15743          t[s][0].call(
15744            d.exports,
15745            function (e) {
15746              return i(t[s][1][e] || e);
15747            },
15748            d,
15749            d.exports,
15750            e,
15751            t,
15752            n,
15753            o,
15754          );
15755        }
15756        return n[s].exports;
15757      }
15758      for (
15759        var r = "function" == typeof require && require, s = 0;
15760        s < o.length;
15761        s++
15762      )
15763        i(o[s]);
15764      return i;
15765    }
15766    return e;
15767  })()(
15768    {
15769      1: [
15770        function (e, t, n) {
15771          var o = {};
15772          t.exports = o;
15773          var i = e("../geometry/Vertices"),
15774            r = e("../geometry/Vector"),
15775            s = e("../core/Sleeping"),
15776            a = (e("../render/Render"), e("../core/Common")),
15777            l = e("../geometry/Bounds"),
15778            c = e("../geometry/Axes");
15779          !(function () {
15780            (o._inertiaScale = 4),
15781              (o._nextCollidingGroupId = 1),
15782              (o._nextNonCollidingGroupId = -1),
15783              (o._nextCategory = 1),
15784              (o.create = function (t) {
15785                var n = {
15786                    id: a.nextId(),
15787                    type: "body",
15788                    label: "Body",
15789                    parts: [],
15790                    plugin: {},
15791                    angle: 0,
15792                    vertices: i.fromPath("L 0 0 L 40 0 L 40 40 L 0 40"),
15793                    position: { x: 0, y: 0 },
15794                    force: { x: 0, y: 0 },
15795                    torque: 0,
15796                    positionImpulse: { x: 0, y: 0 },
15797                    constraintImpulse: { x: 0, y: 0, angle: 0 },
15798                    totalContacts: 0,
15799                    speed: 0,
15800                    angularSpeed: 0,
15801                    velocity: { x: 0, y: 0 },
15802                    angularVelocity: 0,
15803                    isSensor: !1,
15804                    isStatic: !1,
15805                    isSleeping: !1,
15806                    motion: 0,
15807                    sleepThreshold: 60,
15808                    density: 0.001,
15809                    restitution: 0,
15810                    friction: 0.1,
15811                    frictionStatic: 0.5,
15812                    frictionAir: 0.01,
15813                    collisionFilter: {
15814                      category: 1,
15815                      mask: 4294967295,
15816                      group: 0,
15817                    },
15818                    slop: 0.05,
15819                    timeScale: 1,
15820                    render: {
15821                      visible: !0,
15822                      opacity: 1,
15823                      sprite: { xScale: 1, yScale: 1, xOffset: 0, yOffset: 0 },
15824                      lineWidth: 0,
15825                    },
15826                  },
15827                  o = a.extend(n, t);
15828                return e(o, t), o;
15829              }),
15830              (o.nextGroup = function (e) {
15831                return e
15832                  ? o._nextNonCollidingGroupId--
15833                  : o._nextCollidingGroupId++;
15834              }),
15835              (o.nextCategory = function () {
15836                return (
15837                  (o._nextCategory = o._nextCategory << 1), o._nextCategory
15838                );
15839              });
15840            var e = function (e, t) {
15841              (t = t || {}),
15842                o.set(e, {
15843                  bounds: e.bounds || l.create(e.vertices),
15844                  positionPrev: e.positionPrev || r.clone(e.position),
15845                  anglePrev: e.anglePrev || e.angle,
15846                  vertices: e.vertices,
15847                  parts: e.parts || [e],
15848                  isStatic: e.isStatic,
15849                  isSleeping: e.isSleeping,
15850                  parent: e.parent || e,
15851                }),
15852                i.rotate(e.vertices, e.angle, e.position),
15853                c.rotate(e.axes, e.angle),
15854                l.update(e.bounds, e.vertices, e.velocity),
15855                o.set(e, {
15856                  axes: t.axes || e.axes,
15857                  area: t.area || e.area,
15858                  mass: t.mass || e.mass,
15859                  inertia: t.inertia || e.inertia,
15860                });
15861              var n = e.isStatic
15862                ? "#2e2b44"
15863                : a.choose([
15864                    "#006BA6",
15865                    "#0496FF",
15866                    "#FFBC42",
15867                    "#D81159",
15868                    "#8F2D56",
15869                  ]);
15870              (e.render.fillStyle = e.render.fillStyle || n),
15871                (e.render.strokeStyle = e.render.strokeStyle || "#000"),
15872                (e.render.sprite.xOffset +=
15873                  -(e.bounds.min.x - e.position.x) /
15874                  (e.bounds.max.x - e.bounds.min.x)),
15875                (e.render.sprite.yOffset +=
15876                  -(e.bounds.min.y - e.position.y) /
15877                  (e.bounds.max.y - e.bounds.min.y));
15878            };
15879            (o.set = function (e, t, n) {
15880              var i;
15881              "string" == typeof t && ((i = t), (t = {}), (t[i] = n));
15882              for (i in t)
15883                if (((n = t[i]), t.hasOwnProperty(i)))
15884                  switch (i) {
15885                    case "isStatic":
15886                      o.setStatic(e, n);
15887                      break;
15888                    case "isSleeping":
15889                      s.set(e, n);
15890                      break;
15891                    case "mass":
15892                      o.setMass(e, n);
15893                      break;
15894                    case "density":
15895                      o.setDensity(e, n);
15896                      break;
15897                    case "inertia":
15898                      o.setInertia(e, n);
15899                      break;
15900                    case "vertices":
15901                      o.setVertices(e, n);
15902                      break;
15903                    case "position":
15904                      o.setPosition(e, n);
15905                      break;
15906                    case "angle":
15907                      o.setAngle(e, n);
15908                      break;
15909                    case "velocity":
15910                      o.setVelocity(e, n);
15911                      break;
15912                    case "angularVelocity":
15913                      o.setAngularVelocity(e, n);
15914                      break;
15915                    case "parts":
15916                      o.setParts(e, n);
15917                      break;
15918                    default:
15919                      e[i] = n;
15920                  }
15921            }),
15922              (o.setStatic = function (e, t) {
15923                for (var n = 0; n < e.parts.length; n++) {
15924                  var o = e.parts[n];
15925                  (o.isStatic = t),
15926                    t
15927                      ? ((o._original = {
15928                          restitution: o.restitution,
15929                          friction: o.friction,
15930                          mass: o.mass,
15931                          inertia: o.inertia,
15932                          density: o.density,
15933                          inverseMass: o.inverseMass,
15934                          inverseInertia: o.inverseInertia,
15935                        }),
15936                        (o.restitution = 0),
15937                        (o.friction = 1),
15938                        (o.mass = o.inertia = o.density = 1 / 0),
15939                        (o.inverseMass = o.inverseInertia = 0),
15940                        (o.positionPrev.x = o.position.x),
15941                        (o.positionPrev.y = o.position.y),
15942                        (o.anglePrev = o.angle),
15943                        (o.angularVelocity = 0),
15944                        (o.speed = 0),
15945                        (o.angularSpeed = 0),
15946                        (o.motion = 0))
15947                      : o._original &&
15948                        ((o.restitution = o._original.restitution),
15949                        (o.friction = o._original.friction),
15950                        (o.mass = o._original.mass),
15951                        (o.inertia = o._original.inertia),
15952                        (o.density = o._original.density),
15953                        (o.inverseMass = o._original.inverseMass),
15954                        (o.inverseInertia = o._original.inverseInertia),
15955                        delete o._original);
15956                }
15957              }),
15958              (o.setMass = function (e, t) {
15959                var n = e.inertia / (e.mass / 6);
15960                (e.inertia = n * (t / 6)),
15961                  (e.inverseInertia = 1 / e.inertia),
15962                  (e.mass = t),
15963                  (e.inverseMass = 1 / e.mass),
15964                  (e.density = e.mass / e.area);
15965              }),
15966              (o.setDensity = function (e, t) {
15967                o.setMass(e, t * e.area), (e.density = t);
15968              }),
15969              (o.setInertia = function (e, t) {
15970                (e.inertia = t), (e.inverseInertia = 1 / e.inertia);
15971              }),
15972              (o.setVertices = function (e, t) {
15973                t[0].body === e
15974                  ? (e.vertices = t)
15975                  : (e.vertices = i.create(t, e)),
15976                  (e.axes = c.fromVertices(e.vertices)),
15977                  (e.area = i.area(e.vertices)),
15978                  o.setMass(e, e.density * e.area);
15979                var n = i.centre(e.vertices);
15980                i.translate(e.vertices, n, -1),
15981                  o.setInertia(
15982                    e,
15983                    o._inertiaScale * i.inertia(e.vertices, e.mass),
15984                  ),
15985                  i.translate(e.vertices, e.position),
15986                  l.update(e.bounds, e.vertices, e.velocity);
15987              }),
15988              (o.setParts = function (e, t, n) {
15989                var r;
15990                for (
15991                  t = t.slice(0),
15992                    e.parts.length = 0,
15993                    e.parts.push(e),
15994                    e.parent = e,
15995                    r = 0;
15996                  r < t.length;
15997                  r++
15998                ) {
15999                  var s = t[r];
16000                  s !== e && ((s.parent = e), e.parts.push(s));
16001                }
16002                if (1 !== e.parts.length) {
16003                  if ((n = void 0 === n || n)) {
16004                    var a = [];
16005                    for (r = 0; r < t.length; r++) a = a.concat(t[r].vertices);
16006                    i.clockwiseSort(a);
16007                    var l = i.hull(a),
16008                      c = i.centre(l);
16009                    o.setVertices(e, l), i.translate(e.vertices, c);
16010                  }
16011                  var d = o._totalProperties(e);
16012                  (e.area = d.area),
16013                    (e.parent = e),
16014                    (e.position.x = d.centre.x),
16015                    (e.position.y = d.centre.y),
16016                    (e.positionPrev.x = d.centre.x),
16017                    (e.positionPrev.y = d.centre.y),
16018                    o.setMass(e, d.mass),
16019                    o.setInertia(e, d.inertia),
16020                    o.setPosition(e, d.centre);
16021                }
16022              }),
16023              (o.setPosition = function (e, t) {
16024                var n = r.sub(t, e.position);
16025                (e.positionPrev.x += n.x), (e.positionPrev.y += n.y);
16026                for (var o = 0; o < e.parts.length; o++) {
16027                  var s = e.parts[o];
16028                  (s.position.x += n.x),
16029                    (s.position.y += n.y),
16030                    i.translate(s.vertices, n),
16031                    l.update(s.bounds, s.vertices, e.velocity);
16032                }
16033              }),
16034              (o.setAngle = function (e, t) {
16035                var n = t - e.angle;
16036                e.anglePrev += n;
16037                for (var o = 0; o < e.parts.length; o++) {
16038                  var s = e.parts[o];
16039                  (s.angle += n),
16040                    i.rotate(s.vertices, n, e.position),
16041                    c.rotate(s.axes, n),
16042                    l.update(s.bounds, s.vertices, e.velocity),
16043                    o > 0 &&
16044                      r.rotateAbout(s.position, n, e.position, s.position);
16045                }
16046              }),
16047              (o.setVelocity = function (e, t) {
16048                (e.positionPrev.x = e.position.x - t.x),
16049                  (e.positionPrev.y = e.position.y - t.y),
16050                  (e.velocity.x = t.x),
16051                  (e.velocity.y = t.y),
16052                  (e.speed = r.magnitude(e.velocity));
16053              }),
16054              (o.setAngularVelocity = function (e, t) {
16055                (e.anglePrev = e.angle - t),
16056                  (e.angularVelocity = t),
16057                  (e.angularSpeed = Math.abs(e.angularVelocity));
16058              }),
16059              (o.translate = function (e, t) {
16060                o.setPosition(e, r.add(e.position, t));
16061              }),
16062              (o.rotate = function (e, t, n) {
16063                if (n) {
16064                  var i = Math.cos(t),
16065                    r = Math.sin(t),
16066                    s = e.position.x - n.x,
16067                    a = e.position.y - n.y;
16068                  o.setPosition(e, {
16069                    x: n.x + (s * i - a * r),
16070                    y: n.y + (s * r + a * i),
16071                  }),
16072                    o.setAngle(e, e.angle + t);
16073                } else o.setAngle(e, e.angle + t);
16074              }),
16075              (o.scale = function (e, t, n, r) {
16076                var s = 0,
16077                  a = 0;
16078                r = r || e.position;
16079                for (var d = 0; d < e.parts.length; d++) {
16080                  var u = e.parts[d];
16081                  i.scale(u.vertices, t, n, r),
16082                    (u.axes = c.fromVertices(u.vertices)),
16083                    (u.area = i.area(u.vertices)),
16084                    o.setMass(u, e.density * u.area),
16085                    i.translate(u.vertices, {
16086                      x: -u.position.x,
16087                      y: -u.position.y,
16088                    }),
16089                    o.setInertia(
16090                      u,
16091                      o._inertiaScale * i.inertia(u.vertices, u.mass),
16092                    ),
16093                    i.translate(u.vertices, {
16094                      x: u.position.x,
16095                      y: u.position.y,
16096                    }),
16097                    d > 0 && ((s += u.area), (a += u.inertia)),
16098                    (u.position.x = r.x + (u.position.x - r.x) * t),
16099                    (u.position.y = r.y + (u.position.y - r.y) * n),
16100                    l.update(u.bounds, u.vertices, e.velocity);
16101                }
16102                e.parts.length > 1 &&
16103                  ((e.area = s),
16104                  e.isStatic ||
16105                    (o.setMass(e, e.density * s), o.setInertia(e, a))),
16106                  e.circleRadius &&
16107                    (t === n ? (e.circleRadius *= t) : (e.circleRadius = null));
16108              }),
16109              (o.update = function (e, t, n, o) {
16110                var s = Math.pow(t * n * e.timeScale, 2),
16111                  a = 1 - e.frictionAir * n * e.timeScale,
16112                  d = e.position.x - e.positionPrev.x,
16113                  u = e.position.y - e.positionPrev.y;
16114                (e.velocity.x = d * a * o + (e.force.x / e.mass) * s),
16115                  (e.velocity.y = u * a * o + (e.force.y / e.mass) * s),
16116                  (e.positionPrev.x = e.position.x),
16117                  (e.positionPrev.y = e.position.y),
16118                  (e.position.x += e.velocity.x),
16119                  (e.position.y += e.velocity.y),
16120                  (e.angularVelocity =
16121                    (e.angle - e.anglePrev) * a * o +
16122                    (e.torque / e.inertia) * s),
16123                  (e.anglePrev = e.angle),
16124                  (e.angle += e.angularVelocity),
16125                  (e.speed = r.magnitude(e.velocity)),
16126                  (e.angularSpeed = Math.abs(e.angularVelocity));
16127                for (var p = 0; p < e.parts.length; p++) {
16128                  var f = e.parts[p];
16129                  i.translate(f.vertices, e.velocity),
16130                    p > 0 &&
16131                      ((f.position.x += e.velocity.x),
16132                      (f.position.y += e.velocity.y)),
16133                    0 !== e.angularVelocity &&
16134                      (i.rotate(f.vertices, e.angularVelocity, e.position),
16135                      c.rotate(f.axes, e.angularVelocity),
16136                      p > 0 &&
16137                        r.rotateAbout(
16138                          f.position,
16139                          e.angularVelocity,
16140                          e.position,
16141                          f.position,
16142                        )),
16143                    l.update(f.bounds, f.vertices, e.velocity);
16144                }
16145              }),
16146              (o.applyForce = function (e, t, n) {
16147                (e.force.x += n.x), (e.force.y += n.y);
16148                var o = { x: t.x - e.position.x, y: t.y - e.position.y };
16149                e.torque += o.x * n.y - o.y * n.x;
16150              }),
16151              (o._totalProperties = function (e) {
16152                for (
16153                  var t = {
16154                      mass: 0,
16155                      area: 0,
16156                      inertia: 0,
16157                      centre: { x: 0, y: 0 },
16158                    },
16159                    n = 1 === e.parts.length ? 0 : 1;
16160                  n < e.parts.length;
16161                  n++
16162                ) {
16163                  var o = e.parts[n],
16164                    i = o.mass !== 1 / 0 ? o.mass : 1;
16165                  (t.mass += i),
16166                    (t.area += o.area),
16167                    (t.inertia += o.inertia),
16168                    (t.centre = r.add(t.centre, r.mult(o.position, i)));
16169                }
16170                return (t.centre = r.div(t.centre, t.mass)), t;
16171              });
16172          })();
16173        },
16174        {
16175          "../core/Common": 14,
16176          "../core/Sleeping": 22,
16177          "../geometry/Axes": 25,
16178          "../geometry/Bounds": 26,
16179          "../geometry/Vector": 28,
16180          "../geometry/Vertices": 29,
16181          "../render/Render": 31,
16182        },
16183      ],
16184      2: [
16185        function (e, t, n) {
16186          var o = {};
16187          t.exports = o;
16188          var i = e("../core/Events"),
16189            r = e("../core/Common"),
16190            s = e("../geometry/Bounds"),
16191            a = e("./Body");
16192          !(function () {
16193            (o.create = function (e) {
16194              return r.extend(
16195                {
16196                  id: r.nextId(),
16197                  type: "composite",
16198                  parent: null,
16199                  isModified: !1,
16200                  bodies: [],
16201                  constraints: [],
16202                  composites: [],
16203                  label: "Composite",
16204                  plugin: {},
16205                },
16206                e,
16207              );
16208            }),
16209              (o.setModified = function (e, t, n, i) {
16210                if (
16211                  ((e.isModified = t),
16212                  n && e.parent && o.setModified(e.parent, t, n, i),
16213                  i)
16214                )
16215                  for (var r = 0; r < e.composites.length; r++) {
16216                    var s = e.composites[r];
16217                    o.setModified(s, t, n, i);
16218                  }
16219              }),
16220              (o.add = function (e, t) {
16221                var n = [].concat(t);
16222                i.trigger(e, "beforeAdd", { object: t });
16223                for (var s = 0; s < n.length; s++) {
16224                  var a = n[s];
16225                  switch (a.type) {
16226                    case "body":
16227                      if (a.parent !== a) {
16228                        r.warn(
16229                          "Composite.add: skipped adding a compound body part (you must add its parent instead)",
16230                        );
16231                        break;
16232                      }
16233                      o.addBody(e, a);
16234                      break;
16235                    case "constraint":
16236                      o.addConstraint(e, a);
16237                      break;
16238                    case "composite":
16239                      o.addComposite(e, a);
16240                      break;
16241                    case "mouseConstraint":
16242                      o.addConstraint(e, a.constraint);
16243                  }
16244                }
16245                return i.trigger(e, "afterAdd", { object: t }), e;
16246              }),
16247              (o.remove = function (e, t, n) {
16248                var r = [].concat(t);
16249                i.trigger(e, "beforeRemove", { object: t });
16250                for (var s = 0; s < r.length; s++) {
16251                  var a = r[s];
16252                  switch (a.type) {
16253                    case "body":
16254                      o.removeBody(e, a, n);
16255                      break;
16256                    case "constraint":
16257                      o.removeConstraint(e, a, n);
16258                      break;
16259                    case "composite":
16260                      o.removeComposite(e, a, n);
16261                      break;
16262                    case "mouseConstraint":
16263                      o.removeConstraint(e, a.constraint);
16264                  }
16265                }
16266                return i.trigger(e, "afterRemove", { object: t }), e;
16267              }),
16268              (o.addComposite = function (e, t) {
16269                return (
16270                  e.composites.push(t),
16271                  (t.parent = e),
16272                  o.setModified(e, !0, !0, !1),
16273                  e
16274                );
16275              }),
16276              (o.removeComposite = function (e, t, n) {
16277                var i = r.indexOf(e.composites, t);
16278                if (
16279                  (-1 !== i &&
16280                    (o.removeCompositeAt(e, i), o.setModified(e, !0, !0, !1)),
16281                  n)
16282                )
16283                  for (var s = 0; s < e.composites.length; s++)
16284                    o.removeComposite(e.composites[s], t, !0);
16285                return e;
16286              }),
16287              (o.removeCompositeAt = function (e, t) {
16288                return (
16289                  e.composites.splice(t, 1), o.setModified(e, !0, !0, !1), e
16290                );
16291              }),
16292              (o.addBody = function (e, t) {
16293                return e.bodies.push(t), o.setModified(e, !0, !0, !1), e;
16294              }),
16295              (o.removeBody = function (e, t, n) {
16296                var i = r.indexOf(e.bodies, t);
16297                if (
16298                  (-1 !== i &&
16299                    (o.removeBodyAt(e, i), o.setModified(e, !0, !0, !1)),
16300                  n)
16301                )
16302                  for (var s = 0; s < e.composites.length; s++)
16303                    o.removeBody(e.composites[s], t, !0);
16304                return e;
16305              }),
16306              (o.removeBodyAt = function (e, t) {
16307                return e.bodies.splice(t, 1), o.setModified(e, !0, !0, !1), e;
16308              }),
16309              (o.addConstraint = function (e, t) {
16310                return e.constraints.push(t), o.setModified(e, !0, !0, !1), e;
16311              }),
16312              (o.removeConstraint = function (e, t, n) {
16313                var i = r.indexOf(e.constraints, t);
16314                if ((-1 !== i && o.removeConstraintAt(e, i), n))
16315                  for (var s = 0; s < e.composites.length; s++)
16316                    o.removeConstraint(e.composites[s], t, !0);
16317                return e;
16318              }),
16319              (o.removeConstraintAt = function (e, t) {
16320                return (
16321                  e.constraints.splice(t, 1), o.setModified(e, !0, !0, !1), e
16322                );
16323              }),
16324              (o.clear = function (e, t, n) {
16325                if (n)
16326                  for (var i = 0; i < e.composites.length; i++)
16327                    o.clear(e.composites[i], t, !0);
16328                return (
16329                  t
16330                    ? (e.bodies = e.bodies.filter(function (e) {
16331                        return e.isStatic;
16332                      }))
16333                    : (e.bodies.length = 0),
16334                  (e.constraints.length = 0),
16335                  (e.composites.length = 0),
16336                  o.setModified(e, !0, !0, !1),
16337                  e
16338                );
16339              }),
16340              (o.allBodies = function (e) {
16341                for (
16342                  var t = [].concat(e.bodies), n = 0;
16343                  n < e.composites.length;
16344                  n++
16345                )
16346                  t = t.concat(o.allBodies(e.composites[n]));
16347                return t;
16348              }),
16349              (o.allConstraints = function (e) {
16350                for (
16351                  var t = [].concat(e.constraints), n = 0;
16352                  n < e.composites.length;
16353                  n++
16354                )
16355                  t = t.concat(o.allConstraints(e.composites[n]));
16356                return t;
16357              }),
16358              (o.allComposites = function (e) {
16359                for (
16360                  var t = [].concat(e.composites), n = 0;
16361                  n < e.composites.length;
16362                  n++
16363                )
16364                  t = t.concat(o.allComposites(e.composites[n]));
16365                return t;
16366              }),
16367              (o.get = function (e, t, n) {
16368                var i, r;
16369                switch (n) {
16370                  case "body":
16371                    i = o.allBodies(e);
16372                    break;
16373                  case "constraint":
16374                    i = o.allConstraints(e);
16375                    break;
16376                  case "composite":
16377                    i = o.allComposites(e).concat(e);
16378                }
16379                return i
16380                  ? ((r = i.filter(function (e) {
16381                      return e.id.toString() === t.toString();
16382                    })),
16383                    0 === r.length ? null : r[0])
16384                  : null;
16385              }),
16386              (o.move = function (e, t, n) {
16387                return o.remove(e, t), o.add(n, t), e;
16388              }),
16389              (o.rebase = function (e) {
16390                for (
16391                  var t = o
16392                      .allBodies(e)
16393                      .concat(o.allConstraints(e))
16394                      .concat(o.allComposites(e)),
16395                    n = 0;
16396                  n < t.length;
16397                  n++
16398                )
16399                  t[n].id = r.nextId();
16400                return o.setModified(e, !0, !0, !1), e;
16401              }),
16402              (o.translate = function (e, t, n) {
16403                for (
16404                  var i = n ? o.allBodies(e) : e.bodies, r = 0;
16405                  r < i.length;
16406                  r++
16407                )
16408                  a.translate(i[r], t);
16409                return o.setModified(e, !0, !0, !1), e;
16410              }),
16411              (o.rotate = function (e, t, n, i) {
16412                for (
16413                  var r = Math.cos(t),
16414                    s = Math.sin(t),
16415                    l = i ? o.allBodies(e) : e.bodies,
16416                    c = 0;
16417                  c < l.length;
16418                  c++
16419                ) {
16420                  var d = l[c],
16421                    u = d.position.x - n.x,
16422                    p = d.position.y - n.y;
16423                  a.setPosition(d, {
16424                    x: n.x + (u * r - p * s),
16425                    y: n.y + (u * s + p * r),
16426                  }),
16427                    a.rotate(d, t);
16428                }
16429                return o.setModified(e, !0, !0, !1), e;
16430              }),
16431              (o.scale = function (e, t, n, i, r) {
16432                for (
16433                  var s = r ? o.allBodies(e) : e.bodies, l = 0;
16434                  l < s.length;
16435                  l++
16436                ) {
16437                  var c = s[l],
16438                    d = c.position.x - i.x,
16439                    u = c.position.y - i.y;
16440                  a.setPosition(c, { x: i.x + d * t, y: i.y + u * n }),
16441                    a.scale(c, t, n);
16442                }
16443                return o.setModified(e, !0, !0, !1), e;
16444              }),
16445              (o.bounds = function (e) {
16446                for (
16447                  var t = o.allBodies(e), n = [], i = 0;
16448                  i < t.length;
16449                  i += 1
16450                ) {
16451                  var r = t[i];
16452                  n.push(r.bounds.min, r.bounds.max);
16453                }
16454                return s.create(n);
16455              });
16456          })();
16457        },
16458        {
16459          "../core/Common": 14,
16460          "../core/Events": 16,
16461          "../geometry/Bounds": 26,
16462          "./Body": 1,
16463        },
16464      ],
16465      3: [
16466        function (e, t, n) {
16467          var o = {};
16468          t.exports = o;
16469          var i = e("./Composite"),
16470            r = (e("../constraint/Constraint"), e("../core/Common"));
16471          !(function () {
16472            o.create = function (e) {
16473              var t = i.create(),
16474                n = {
16475                  label: "World",
16476                  gravity: { x: 0, y: 1, scale: 0.001 },
16477                  bounds: {
16478                    min: { x: -1 / 0, y: -1 / 0 },
16479                    max: { x: 1 / 0, y: 1 / 0 },
16480                  },
16481                };
16482              return r.extend(t, n, e);
16483            };
16484          })();
16485        },
16486        {
16487          "../constraint/Constraint": 12,
16488          "../core/Common": 14,
16489          "./Composite": 2,
16490        },
16491      ],
16492      4: [
16493        function (e, t, n) {
16494          var o = {};
16495          (t.exports = o),
16496            (function () {
16497              (o.create = function (e) {
16498                return {
16499                  id: o.id(e),
16500                  vertex: e,
16501                  normalImpulse: 0,
16502                  tangentImpulse: 0,
16503                };
16504              }),
16505                (o.id = function (e) {
16506                  return e.body.id + "_" + e.index;
16507                });
16508            })();
16509        },
16510        {},
16511      ],
16512      5: [
16513        function (e, t, n) {
16514          var o = {};
16515          t.exports = o;
16516          var i = e("./SAT"),
16517            r = e("./Pair"),
16518            s = e("../geometry/Bounds");
16519          !(function () {
16520            (o.collisions = function (e, t) {
16521              for (var n = [], a = t.pairs.table, l = 0; l < e.length; l++) {
16522                var c = e[l][0],
16523                  d = e[l][1];
16524                if (
16525                  ((!c.isStatic && !c.isSleeping) ||
16526                    (!d.isStatic && !d.isSleeping)) &&
16527                  o.canCollide(c.collisionFilter, d.collisionFilter) &&
16528                  s.overlaps(c.bounds, d.bounds)
16529                )
16530                  for (
16531                    var u = c.parts.length > 1 ? 1 : 0;
16532                    u < c.parts.length;
16533                    u++
16534                  )
16535                    for (
16536                      var p = c.parts[u], f = d.parts.length > 1 ? 1 : 0;
16537                      f < d.parts.length;
16538                      f++
16539                    ) {
16540                      var m = d.parts[f];
16541                      if (
16542                        (p === c && m === d) ||
16543                        s.overlaps(p.bounds, m.bounds)
16544                      ) {
16545                        var v,
16546                          y = r.id(p, m),
16547                          g = a[y];
16548                        v = g && g.isActive ? g.collision : null;
16549                        var x = i.collides(p, m, v);
16550                        x.collided && n.push(x);
16551                      }
16552                    }
16553              }
16554              return n;
16555            }),
16556              (o.canCollide = function (e, t) {
16557                return e.group === t.group && 0 !== e.group
16558                  ? e.group > 0
16559                  : 0 != (e.mask & t.category) && 0 != (t.mask & e.category);
16560              });
16561          })();
16562        },
16563        { "../geometry/Bounds": 26, "./Pair": 7, "./SAT": 11 },
16564      ],
16565      6: [
16566        function (e, t, n) {
16567          var o = {};
16568          t.exports = o;
16569          var i = e("./Pair"),
16570            r = e("./Detector"),
16571            s = e("../core/Common");
16572          !(function () {
16573            (o.create = function (e) {
16574              var t = {
16575                controller: o,
16576                detector: r.collisions,
16577                buckets: {},
16578                pairs: {},
16579                pairsList: [],
16580                bucketWidth: 48,
16581                bucketHeight: 48,
16582              };
16583              return s.extend(t, e);
16584            }),
16585              (o.update = function (e, t, n, i) {
16586                var r,
16587                  s,
16588                  a,
16589                  l,
16590                  c,
16591                  d = n.world,
16592                  u = e.buckets,
16593                  p = !1;
16594                for (r = 0; r < t.length; r++) {
16595                  var f = t[r];
16596                  if (
16597                    (!f.isSleeping || i) &&
16598                    !(
16599                      f.bounds.max.x < d.bounds.min.x ||
16600                      f.bounds.min.x > d.bounds.max.x ||
16601                      f.bounds.max.y < d.bounds.min.y ||
16602                      f.bounds.min.y > d.bounds.max.y
16603                    )
16604                  ) {
16605                    var m = o._getRegion(e, f);
16606                    if (!f.region || m.id !== f.region.id || i) {
16607                      (f.region && !i) || (f.region = m);
16608                      var v = o._regionUnion(m, f.region);
16609                      for (s = v.startCol; s <= v.endCol; s++)
16610                        for (a = v.startRow; a <= v.endRow; a++) {
16611                          (c = o._getBucketId(s, a)), (l = u[c]);
16612                          var y =
16613                              s >= m.startCol &&
16614                              s <= m.endCol &&
16615                              a >= m.startRow &&
16616                              a <= m.endRow,
16617                            g =
16618                              s >= f.region.startCol &&
16619                              s <= f.region.endCol &&
16620                              a >= f.region.startRow &&
16621                              a <= f.region.endRow;
16622                          !y && g && g && l && o._bucketRemoveBody(e, l, f),
16623                            (f.region === m || (y && !g) || i) &&
16624                              (l || (l = o._createBucket(u, c)),
16625                              o._bucketAddBody(e, l, f));
16626                        }
16627                      (f.region = m), (p = !0);
16628                    }
16629                  }
16630                }
16631                p && (e.pairsList = o._createActivePairsList(e));
16632              }),
16633              (o.clear = function (e) {
16634                (e.buckets = {}), (e.pairs = {}), (e.pairsList = []);
16635              }),
16636              (o._regionUnion = function (e, t) {
16637                var n = Math.min(e.startCol, t.startCol),
16638                  i = Math.max(e.endCol, t.endCol),
16639                  r = Math.min(e.startRow, t.startRow),
16640                  s = Math.max(e.endRow, t.endRow);
16641                return o._createRegion(n, i, r, s);
16642              }),
16643              (o._getRegion = function (e, t) {
16644                var n = t.bounds,
16645                  i = Math.floor(n.min.x / e.bucketWidth),
16646                  r = Math.floor(n.max.x / e.bucketWidth),
16647                  s = Math.floor(n.min.y / e.bucketHeight),
16648                  a = Math.floor(n.max.y / e.bucketHeight);
16649                return o._createRegion(i, r, s, a);
16650              }),
16651              (o._createRegion = function (e, t, n, o) {
16652                return {
16653                  id: e + "," + t + "," + n + "," + o,
16654                  startCol: e,
16655                  endCol: t,
16656                  startRow: n,
16657                  endRow: o,
16658                };
16659              }),
16660              (o._getBucketId = function (e, t) {
16661                return "C" + e + "R" + t;
16662              }),
16663              (o._createBucket = function (e, t) {
16664                return (e[t] = []);
16665              }),
16666              (o._bucketAddBody = function (e, t, n) {
16667                for (var o = 0; o < t.length; o++) {
16668                  var r = t[o];
16669                  if (!(n.id === r.id || (n.isStatic && r.isStatic))) {
16670                    var s = i.id(n, r),
16671                      a = e.pairs[s];
16672                    a ? (a[2] += 1) : (e.pairs[s] = [n, r, 1]);
16673                  }
16674                }
16675                t.push(n);
16676              }),
16677              (o._bucketRemoveBody = function (e, t, n) {
16678                t.splice(s.indexOf(t, n), 1);
16679                for (var o = 0; o < t.length; o++) {
16680                  var r = t[o],
16681                    a = i.id(n, r),
16682                    l = e.pairs[a];
16683                  l && (l[2] -= 1);
16684                }
16685              }),
16686              (o._createActivePairsList = function (e) {
16687                var t,
16688                  n,
16689                  o = [];
16690                t = s.keys(e.pairs);
16691                for (var i = 0; i < t.length; i++)
16692                  (n = e.pairs[t[i]]),
16693                    n[2] > 0 ? o.push(n) : delete e.pairs[t[i]];
16694                return o;
16695              });
16696          })();
16697        },
16698        { "../core/Common": 14, "./Detector": 5, "./Pair": 7 },
16699      ],
16700      7: [
16701        function (e, t, n) {
16702          var o = {};
16703          t.exports = o;
16704          var i = e("./Contact");
16705          !(function () {
16706            (o.create = function (e, t) {
16707              var n = e.bodyA,
16708                i = e.bodyB,
16709                r = e.parentA,
16710                s = e.parentB,
16711                a = {
16712                  id: o.id(n, i),
16713                  bodyA: n,
16714                  bodyB: i,
16715                  contacts: {},
16716                  activeContacts: [],
16717                  separation: 0,
16718                  isActive: !0,
16719                  isSensor: n.isSensor || i.isSensor,
16720                  timeCreated: t,
16721                  timeUpdated: t,
16722                  inverseMass: r.inverseMass + s.inverseMass,
16723                  friction: Math.min(r.friction, s.friction),
16724                  frictionStatic: Math.max(r.frictionStatic, s.frictionStatic),
16725                  restitution: Math.max(r.restitution, s.restitution),
16726                  slop: Math.max(r.slop, s.slop),
16727                };
16728              return o.update(a, e, t), a;
16729            }),
16730              (o.update = function (e, t, n) {
16731                var r = e.contacts,
16732                  s = t.supports,
16733                  a = e.activeContacts,
16734                  l = t.parentA,
16735                  c = t.parentB;
16736                if (
16737                  ((e.collision = t),
16738                  (e.inverseMass = l.inverseMass + c.inverseMass),
16739                  (e.friction = Math.min(l.friction, c.friction)),
16740                  (e.frictionStatic = Math.max(
16741                    l.frictionStatic,
16742                    c.frictionStatic,
16743                  )),
16744                  (e.restitution = Math.max(l.restitution, c.restitution)),
16745                  (e.slop = Math.max(l.slop, c.slop)),
16746                  (a.length = 0),
16747                  t.collided)
16748                ) {
16749                  for (var d = 0; d < s.length; d++) {
16750                    var u = s[d],
16751                      p = i.id(u),
16752                      f = r[p];
16753                    f ? a.push(f) : a.push((r[p] = i.create(u)));
16754                  }
16755                  (e.separation = t.depth), o.setActive(e, !0, n);
16756                } else !0 === e.isActive && o.setActive(e, !1, n);
16757              }),
16758              (o.setActive = function (e, t, n) {
16759                t
16760                  ? ((e.isActive = !0), (e.timeUpdated = n))
16761                  : ((e.isActive = !1), (e.activeContacts.length = 0));
16762              }),
16763              (o.id = function (e, t) {
16764                return e.id < t.id
16765                  ? "A" + e.id + "B" + t.id
16766                  : "A" + t.id + "B" + e.id;
16767              });
16768          })();
16769        },
16770        { "./Contact": 4 },
16771      ],
16772      8: [
16773        function (e, t, n) {
16774          var o = {};
16775          t.exports = o;
16776          var i = e("./Pair"),
16777            r = e("../core/Common");
16778          !(function () {
16779            (o._pairMaxIdleLife = 1e3),
16780              (o.create = function (e) {
16781                return r.extend(
16782                  {
16783                    table: {},
16784                    list: [],
16785                    collisionStart: [],
16786                    collisionActive: [],
16787                    collisionEnd: [],
16788                  },
16789                  e,
16790                );
16791              }),
16792              (o.update = function (e, t, n) {
16793                var o,
16794                  s,
16795                  a,
16796                  l,
16797                  c = e.list,
16798                  d = e.table,
16799                  u = e.collisionStart,
16800                  p = e.collisionEnd,
16801                  f = e.collisionActive,
16802                  m = [];
16803                for (
16804                  u.length = 0, p.length = 0, f.length = 0, l = 0;
16805                  l < t.length;
16806                  l++
16807                )
16808                  (o = t[l]),
16809                    o.collided &&
16810                      ((s = i.id(o.bodyA, o.bodyB)),
16811                      m.push(s),
16812                      (a = d[s]),
16813                      a
16814                        ? (a.isActive ? f.push(a) : u.push(a),
16815                          i.update(a, o, n))
16816                        : ((a = i.create(o, n)),
16817                          (d[s] = a),
16818                          u.push(a),
16819                          c.push(a)));
16820                for (l = 0; l < c.length; l++)
16821                  (a = c[l]),
16822                    a.isActive &&
16823                      -1 === r.indexOf(m, a.id) &&
16824                      (i.setActive(a, !1, n), p.push(a));
16825              }),
16826              (o.removeOld = function (e, t) {
16827                var n,
16828                  i,
16829                  r,
16830                  s,
16831                  a = e.list,
16832                  l = e.table,
16833                  c = [];
16834                for (s = 0; s < a.length; s++)
16835                  (n = a[s]),
16836                    (i = n.collision),
16837                    i.bodyA.isSleeping || i.bodyB.isSleeping
16838                      ? (n.timeUpdated = t)
16839                      : t - n.timeUpdated > o._pairMaxIdleLife && c.push(s);
16840                for (s = 0; s < c.length; s++)
16841                  (r = c[s] - s), (n = a[r]), delete l[n.id], a.splice(r, 1);
16842              }),
16843              (o.clear = function (e) {
16844                return (
16845                  (e.table = {}),
16846                  (e.list.length = 0),
16847                  (e.collisionStart.length = 0),
16848                  (e.collisionActive.length = 0),
16849                  (e.collisionEnd.length = 0),
16850                  e
16851                );
16852              });
16853          })();
16854        },
16855        { "../core/Common": 14, "./Pair": 7 },
16856      ],
16857      9: [
16858        function (e, t, n) {
16859          var o = {};
16860          t.exports = o;
16861          var i = e("../geometry/Vector"),
16862            r = e("./SAT"),
16863            s = e("../geometry/Bounds"),
16864            a = e("../factory/Bodies"),
16865            l = e("../geometry/Vertices");
16866          !(function () {
16867            (o.collides = function (e, t) {
16868              for (var n = [], o = 0; o < t.length; o++) {
16869                var i = t[o];
16870                if (s.overlaps(i.bounds, e.bounds))
16871                  for (
16872                    var a = 1 === i.parts.length ? 0 : 1;
16873                    a < i.parts.length;
16874                    a++
16875                  ) {
16876                    var l = i.parts[a];
16877                    if (s.overlaps(l.bounds, e.bounds)) {
16878                      var c = r.collides(l, e);
16879                      if (c.collided) {
16880                        n.push(c);
16881                        break;
16882                      }
16883                    }
16884                  }
16885              }
16886              return n;
16887            }),
16888              (o.ray = function (e, t, n, r) {
16889                r = r || 1e-100;
16890                for (
16891                  var s = i.angle(t, n),
16892                    l = i.magnitude(i.sub(t, n)),
16893                    c = 0.5 * (n.x + t.x),
16894                    d = 0.5 * (n.y + t.y),
16895                    u = a.rectangle(c, d, l, r, { angle: s }),
16896                    p = o.collides(u, e),
16897                    f = 0;
16898                  f < p.length;
16899                  f += 1
16900                ) {
16901                  var m = p[f];
16902                  m.body = m.bodyB = m.bodyA;
16903                }
16904                return p;
16905              }),
16906              (o.region = function (e, t, n) {
16907                for (var o = [], i = 0; i < e.length; i++) {
16908                  var r = e[i],
16909                    a = s.overlaps(r.bounds, t);
16910                  ((a && !n) || (!a && n)) && o.push(r);
16911                }
16912                return o;
16913              }),
16914              (o.point = function (e, t) {
16915                for (var n = [], o = 0; o < e.length; o++) {
16916                  var i = e[o];
16917                  if (s.contains(i.bounds, t))
16918                    for (
16919                      var r = 1 === i.parts.length ? 0 : 1;
16920                      r < i.parts.length;
16921                      r++
16922                    ) {
16923                      var a = i.parts[r];
16924                      if (
16925                        s.contains(a.bounds, t) &&
16926                        l.contains(a.vertices, t)
16927                      ) {
16928                        n.push(i);
16929                        break;
16930                      }
16931                    }
16932                }
16933                return n;
16934              });
16935          })();
16936        },
16937        {
16938          "../factory/Bodies": 23,
16939          "../geometry/Bounds": 26,
16940          "../geometry/Vector": 28,
16941          "../geometry/Vertices": 29,
16942          "./SAT": 11,
16943        },
16944      ],
16945      10: [
16946        function (e, t, n) {
16947          var o = {};
16948          t.exports = o;
16949          var i = e("../geometry/Vertices"),
16950            r = e("../geometry/Vector"),
16951            s = e("../core/Common"),
16952            a = e("../geometry/Bounds");
16953          !(function () {
16954            (o._restingThresh = 4),
16955              (o._restingThreshTangent = 6),
16956              (o._positionDampen = 0.9),
16957              (o._positionWarming = 0.8),
16958              (o._frictionNormalMultiplier = 5),
16959              (o.preSolvePosition = function (e) {
16960                var t, n, o;
16961                for (t = 0; t < e.length; t++)
16962                  (n = e[t]),
16963                    n.isActive &&
16964                      ((o = n.activeContacts.length),
16965                      (n.collision.parentA.totalContacts += o),
16966                      (n.collision.parentB.totalContacts += o));
16967              }),
16968              (o.solvePosition = function (e, t) {
16969                var n,
16970                  i,
16971                  s,
16972                  a,
16973                  l,
16974                  c,
16975                  d,
16976                  u,
16977                  p,
16978                  f = r._temp[0],
16979                  m = r._temp[1],
16980                  v = r._temp[2],
16981                  y = r._temp[3];
16982                for (n = 0; n < e.length; n++)
16983                  (i = e[n]),
16984                    i.isActive &&
16985                      !i.isSensor &&
16986                      ((s = i.collision),
16987                      (a = s.parentA),
16988                      (l = s.parentB),
16989                      (c = s.normal),
16990                      (d = r.sub(
16991                        r.add(l.positionImpulse, l.position, f),
16992                        r.add(
16993                          a.positionImpulse,
16994                          r.sub(l.position, s.penetration, m),
16995                          v,
16996                        ),
16997                        y,
16998                      )),
16999                      (i.separation = r.dot(c, d)));
17000                for (n = 0; n < e.length; n++)
17001                  (i = e[n]),
17002                    i.isActive &&
17003                      !i.isSensor &&
17004                      ((s = i.collision),
17005                      (a = s.parentA),
17006                      (l = s.parentB),
17007                      (c = s.normal),
17008                      (p = (i.separation - i.slop) * t),
17009                      (a.isStatic || l.isStatic) && (p *= 2),
17010                      a.isStatic ||
17011                        a.isSleeping ||
17012                        ((u = o._positionDampen / a.totalContacts),
17013                        (a.positionImpulse.x += c.x * p * u),
17014                        (a.positionImpulse.y += c.y * p * u)),
17015                      l.isStatic ||
17016                        l.isSleeping ||
17017                        ((u = o._positionDampen / l.totalContacts),
17018                        (l.positionImpulse.x -= c.x * p * u),
17019                        (l.positionImpulse.y -= c.y * p * u)));
17020              }),
17021              (o.postSolvePosition = function (e) {
17022                for (var t = 0; t < e.length; t++) {
17023                  var n = e[t];
17024                  if (
17025                    ((n.totalContacts = 0),
17026                    0 !== n.positionImpulse.x || 0 !== n.positionImpulse.y)
17027                  ) {
17028                    for (var s = 0; s < n.parts.length; s++) {
17029                      var l = n.parts[s];
17030                      i.translate(l.vertices, n.positionImpulse),
17031                        a.update(l.bounds, l.vertices, n.velocity),
17032                        (l.position.x += n.positionImpulse.x),
17033                        (l.position.y += n.positionImpulse.y);
17034                    }
17035                    (n.positionPrev.x += n.positionImpulse.x),
17036                      (n.positionPrev.y += n.positionImpulse.y),
17037                      r.dot(n.positionImpulse, n.velocity) < 0
17038                        ? ((n.positionImpulse.x = 0), (n.positionImpulse.y = 0))
17039                        : ((n.positionImpulse.x *= o._positionWarming),
17040                          (n.positionImpulse.y *= o._positionWarming));
17041                  }
17042                }
17043              }),
17044              (o.preSolveVelocity = function (e) {
17045                var t,
17046                  n,
17047                  o,
17048                  i,
17049                  s,
17050                  a,
17051                  l,
17052                  c,
17053                  d,
17054                  u,
17055                  p,
17056                  f,
17057                  m,
17058                  v,
17059                  y = r._temp[0],
17060                  g = r._temp[1];
17061                for (t = 0; t < e.length; t++)
17062                  if (((o = e[t]), o.isActive && !o.isSensor))
17063                    for (
17064                      i = o.activeContacts,
17065                        s = o.collision,
17066                        a = s.parentA,
17067                        l = s.parentB,
17068                        c = s.normal,
17069                        d = s.tangent,
17070                        n = 0;
17071                      n < i.length;
17072                      n++
17073                    )
17074                      (u = i[n]),
17075                        (p = u.vertex),
17076                        (f = u.normalImpulse),
17077                        (m = u.tangentImpulse),
17078                        (0 === f && 0 === m) ||
17079                          ((y.x = c.x * f + d.x * m),
17080                          (y.y = c.y * f + d.y * m),
17081                          a.isStatic ||
17082                            a.isSleeping ||
17083                            ((v = r.sub(p, a.position, g)),
17084                            (a.positionPrev.x += y.x * a.inverseMass),
17085                            (a.positionPrev.y += y.y * a.inverseMass),
17086                            (a.anglePrev += r.cross(v, y) * a.inverseInertia)),
17087                          l.isStatic ||
17088                            l.isSleeping ||
17089                            ((v = r.sub(p, l.position, g)),
17090                            (l.positionPrev.x -= y.x * l.inverseMass),
17091                            (l.positionPrev.y -= y.y * l.inverseMass),
17092                            (l.anglePrev -= r.cross(v, y) * l.inverseInertia)));
17093              }),
17094              (o.solveVelocity = function (e, t) {
17095                for (
17096                  var n = t * t,
17097                    i = r._temp[0],
17098                    a = r._temp[1],
17099                    l = r._temp[2],
17100                    c = r._temp[3],
17101                    d = r._temp[4],
17102                    u = r._temp[5],
17103                    p = 0;
17104                  p < e.length;
17105                  p++
17106                ) {
17107                  var f = e[p];
17108                  if (f.isActive && !f.isSensor) {
17109                    var m = f.collision,
17110                      v = m.parentA,
17111                      y = m.parentB,
17112                      g = m.normal,
17113                      x = m.tangent,
17114                      h = f.activeContacts,
17115                      b = 1 / h.length;
17116                    (v.velocity.x = v.position.x - v.positionPrev.x),
17117                      (v.velocity.y = v.position.y - v.positionPrev.y),
17118                      (y.velocity.x = y.position.x - y.positionPrev.x),
17119                      (y.velocity.y = y.position.y - y.positionPrev.y),
17120                      (v.angularVelocity = v.angle - v.anglePrev),
17121                      (y.angularVelocity = y.angle - y.anglePrev);
17122                    for (var w = 0; w < h.length; w++) {
17123                      var S = h[w],
17124                        C = S.vertex,
17125                        A = r.sub(C, v.position, a),
17126                        P = r.sub(C, y.position, l),
17127                        B = r.add(
17128                          v.velocity,
17129                          r.mult(r.perp(A), v.angularVelocity),
17130                          c,
17131                        ),
17132                        M = r.add(
17133                          y.velocity,
17134                          r.mult(r.perp(P), y.angularVelocity),
17135                          d,
17136                        ),
17137                        k = r.sub(B, M, u),
17138                        I = r.dot(g, k),
17139                        _ = r.dot(x, k),
17140                        T = Math.abs(_),
17141                        R = s.sign(_),
17142                        V = (1 + f.restitution) * I,
17143                        E =
17144                          s.clamp(f.separation + I, 0, 1) *
17145                          o._frictionNormalMultiplier,
17146                        L = _,
17147                        F = 1 / 0;
17148                      T > f.friction * f.frictionStatic * E * n &&
17149                        ((F = T), (L = s.clamp(f.friction * R * n, -F, F)));
17150                      var O = r.cross(A, g),
17151                        q = r.cross(P, g),
17152                        W =
17153                          b /
17154                          (v.inverseMass +
17155                            y.inverseMass +
17156                            v.inverseInertia * O * O +
17157                            y.inverseInertia * q * q);
17158                      if (
17159                        ((V *= W),
17160                        (L *= W),
17161                        I < 0 && I * I > o._restingThresh * n)
17162                      )
17163                        S.normalImpulse = 0;
17164                      else {
17165                        var D = S.normalImpulse;
17166                        (S.normalImpulse = Math.min(S.normalImpulse + V, 0)),
17167                          (V = S.normalImpulse - D);
17168                      }
17169                      if (_ * _ > o._restingThreshTangent * n)
17170                        S.tangentImpulse = 0;
17171                      else {
17172                        var N = S.tangentImpulse;
17173                        (S.tangentImpulse = s.clamp(
17174                          S.tangentImpulse + L,
17175                          -F,
17176                          F,
17177                        )),
17178                          (L = S.tangentImpulse - N);
17179                      }
17180                      (i.x = g.x * V + x.x * L),
17181                        (i.y = g.y * V + x.y * L),
17182                        v.isStatic ||
17183                          v.isSleeping ||
17184                          ((v.positionPrev.x += i.x * v.inverseMass),
17185                          (v.positionPrev.y += i.y * v.inverseMass),
17186                          (v.anglePrev += r.cross(A, i) * v.inverseInertia)),
17187                        y.isStatic ||
17188                          y.isSleeping ||
17189                          ((y.positionPrev.x -= i.x * y.inverseMass),
17190                          (y.positionPrev.y -= i.y * y.inverseMass),
17191                          (y.anglePrev -= r.cross(P, i) * y.inverseInertia));
17192                    }
17193                  }
17194                }
17195              });
17196          })();
17197        },
17198        {
17199          "../core/Common": 14,
17200          "../geometry/Bounds": 26,
17201          "../geometry/Vector": 28,
17202          "../geometry/Vertices": 29,
17203        },
17204      ],
17205      11: [
17206        function (e, t, n) {
17207          var o = {};
17208          t.exports = o;
17209          var i = e("../geometry/Vertices"),
17210            r = e("../geometry/Vector");
17211          !(function () {
17212            (o.collides = function (e, t, n) {
17213              var s,
17214                a,
17215                l,
17216                c,
17217                d = !1;
17218              if (n) {
17219                var u = e.parent,
17220                  p = t.parent,
17221                  f =
17222                    u.speed * u.speed +
17223                    u.angularSpeed * u.angularSpeed +
17224                    p.speed * p.speed +
17225                    p.angularSpeed * p.angularSpeed;
17226                (d = n && n.collided && f < 0.2), (c = n);
17227              } else c = { collided: !1, bodyA: e, bodyB: t };
17228              if (n && d) {
17229                var m = c.axisBody,
17230                  v = m === e ? t : e,
17231                  y = [m.axes[n.axisNumber]];
17232                if (
17233                  ((l = o._overlapAxes(m.vertices, v.vertices, y)),
17234                  (c.reused = !0),
17235                  l.overlap <= 0)
17236                )
17237                  return (c.collided = !1), c;
17238              } else {
17239                if (
17240                  ((s = o._overlapAxes(e.vertices, t.vertices, e.axes)),
17241                  s.overlap <= 0)
17242                )
17243                  return (c.collided = !1), c;
17244                if (
17245                  ((a = o._overlapAxes(t.vertices, e.vertices, t.axes)),
17246                  a.overlap <= 0)
17247                )
17248                  return (c.collided = !1), c;
17249                s.overlap < a.overlap
17250                  ? ((l = s), (c.axisBody = e))
17251                  : ((l = a), (c.axisBody = t)),
17252                  (c.axisNumber = l.axisNumber);
17253              }
17254              (c.bodyA = e.id < t.id ? e : t),
17255                (c.bodyB = e.id < t.id ? t : e),
17256                (c.collided = !0),
17257                (c.depth = l.overlap),
17258                (c.parentA = c.bodyA.parent),
17259                (c.parentB = c.bodyB.parent),
17260                (e = c.bodyA),
17261                (t = c.bodyB),
17262                r.dot(l.axis, r.sub(t.position, e.position)) < 0
17263                  ? (c.normal = { x: l.axis.x, y: l.axis.y })
17264                  : (c.normal = { x: -l.axis.x, y: -l.axis.y }),
17265                (c.tangent = r.perp(c.normal)),
17266                (c.penetration = c.penetration || {}),
17267                (c.penetration.x = c.normal.x * c.depth),
17268                (c.penetration.y = c.normal.y * c.depth);
17269              var g = o._findSupports(e, t, c.normal),
17270                x = [];
17271              if (
17272                (i.contains(e.vertices, g[0]) && x.push(g[0]),
17273                i.contains(e.vertices, g[1]) && x.push(g[1]),
17274                x.length < 2)
17275              ) {
17276                var h = o._findSupports(t, e, r.neg(c.normal));
17277                i.contains(t.vertices, h[0]) && x.push(h[0]),
17278                  x.length < 2 && i.contains(t.vertices, h[1]) && x.push(h[1]);
17279              }
17280              return x.length < 1 && (x = [g[0]]), (c.supports = x), c;
17281            }),
17282              (o._overlapAxes = function (e, t, n) {
17283                for (
17284                  var i,
17285                    s,
17286                    a = r._temp[0],
17287                    l = r._temp[1],
17288                    c = { overlap: Number.MAX_VALUE },
17289                    d = 0;
17290                  d < n.length;
17291                  d++
17292                ) {
17293                  if (
17294                    ((s = n[d]),
17295                    o._projectToAxis(a, e, s),
17296                    o._projectToAxis(l, t, s),
17297                    (i = Math.min(a.max - l.min, l.max - a.min)) <= 0)
17298                  )
17299                    return (c.overlap = i), c;
17300                  i < c.overlap &&
17301                    ((c.overlap = i), (c.axis = s), (c.axisNumber = d));
17302                }
17303                return c;
17304              }),
17305              (o._projectToAxis = function (e, t, n) {
17306                for (
17307                  var o = r.dot(t[0], n), i = o, s = 1;
17308                  s < t.length;
17309                  s += 1
17310                ) {
17311                  var a = r.dot(t[s], n);
17312                  a > i ? (i = a) : a < o && (o = a);
17313                }
17314                (e.min = o), (e.max = i);
17315              }),
17316              (o._findSupports = function (e, t, n) {
17317                for (
17318                  var o,
17319                    i,
17320                    s,
17321                    a,
17322                    l = Number.MAX_VALUE,
17323                    c = r._temp[0],
17324                    d = t.vertices,
17325                    u = e.position,
17326                    p = 0;
17327                  p < d.length;
17328                  p++
17329                )
17330                  (i = d[p]),
17331                    (c.x = i.x - u.x),
17332                    (c.y = i.y - u.y),
17333                    (o = -r.dot(n, c)) < l && ((l = o), (s = i));
17334                return (
17335                  (i = d[s.index - 1 >= 0 ? s.index - 1 : d.length - 1]),
17336                  (c.x = i.x - u.x),
17337                  (c.y = i.y - u.y),
17338                  (l = -r.dot(n, c)),
17339                  (a = i),
17340                  (i = d[(s.index + 1) % d.length]),
17341                  (c.x = i.x - u.x),
17342                  (c.y = i.y - u.y),
17343                  (o = -r.dot(n, c)),
17344                  o < l && (a = i),
17345                  [s, a]
17346                );
17347              });
17348          })();
17349        },
17350        { "../geometry/Vector": 28, "../geometry/Vertices": 29 },
17351      ],
17352      12: [
17353        function (e, t, n) {
17354          var o = {};
17355          t.exports = o;
17356          var i = e("../geometry/Vertices"),
17357            r = e("../geometry/Vector"),
17358            s = e("../core/Sleeping"),
17359            a = e("../geometry/Bounds"),
17360            l = e("../geometry/Axes"),
17361            c = e("../core/Common");
17362          !(function () {
17363            (o._warming = 0.4),
17364              (o._torqueDampen = 1),
17365              (o._minLength = 1e-6),
17366              (o.create = function (e) {
17367                var t = e;
17368                t.bodyA && !t.pointA && (t.pointA = { x: 0, y: 0 }),
17369                  t.bodyB && !t.pointB && (t.pointB = { x: 0, y: 0 });
17370                var n = t.bodyA ? r.add(t.bodyA.position, t.pointA) : t.pointA,
17371                  o = t.bodyB ? r.add(t.bodyB.position, t.pointB) : t.pointB,
17372                  i = r.magnitude(r.sub(n, o));
17373                (t.length = void 0 !== t.length ? t.length : i),
17374                  (t.id = t.id || c.nextId()),
17375                  (t.label = t.label || "Constraint"),
17376                  (t.type = "constraint"),
17377                  (t.stiffness = t.stiffness || (t.length > 0 ? 1 : 0.7)),
17378                  (t.damping = t.damping || 0),
17379                  (t.angularStiffness = t.angularStiffness || 0),
17380                  (t.angleA = t.bodyA ? t.bodyA.angle : t.angleA),
17381                  (t.angleB = t.bodyB ? t.bodyB.angle : t.angleB),
17382                  (t.plugin = {});
17383                var s = {
17384                  visible: !0,
17385                  lineWidth: 2,
17386                  strokeStyle: "#ffffff",
17387                  type: "line",
17388                  anchors: !0,
17389                };
17390                return (
17391                  0 === t.length && t.stiffness > 0.1
17392                    ? ((s.type = "pin"), (s.anchors = !1))
17393                    : t.stiffness < 0.9 && (s.type = "spring"),
17394                  (t.render = c.extend(s, t.render)),
17395                  t
17396                );
17397              }),
17398              (o.preSolveAll = function (e) {
17399                for (var t = 0; t < e.length; t += 1) {
17400                  var n = e[t],
17401                    o = n.constraintImpulse;
17402                  n.isStatic ||
17403                    (0 === o.x && 0 === o.y && 0 === o.angle) ||
17404                    ((n.position.x += o.x),
17405                    (n.position.y += o.y),
17406                    (n.angle += o.angle));
17407                }
17408              }),
17409              (o.solveAll = function (e, t) {
17410                for (var n = 0; n < e.length; n += 1) {
17411                  var i = e[n],
17412                    r = !i.bodyA || (i.bodyA && i.bodyA.isStatic),
17413                    s = !i.bodyB || (i.bodyB && i.bodyB.isStatic);
17414                  (r || s) && o.solve(e[n], t);
17415                }
17416                for (n = 0; n < e.length; n += 1)
17417                  (i = e[n]),
17418                    (r = !i.bodyA || (i.bodyA && i.bodyA.isStatic)),
17419                    (s = !i.bodyB || (i.bodyB && i.bodyB.isStatic)),
17420                    r || s || o.solve(e[n], t);
17421              }),
17422              (o.solve = function (e, t) {
17423                var n = e.bodyA,
17424                  i = e.bodyB,
17425                  s = e.pointA,
17426                  a = e.pointB;
17427                if (n || i) {
17428                  n &&
17429                    !n.isStatic &&
17430                    (r.rotate(s, n.angle - e.angleA, s), (e.angleA = n.angle)),
17431                    i &&
17432                      !i.isStatic &&
17433                      (r.rotate(a, i.angle - e.angleB, a),
17434                      (e.angleB = i.angle));
17435                  var l = s,
17436                    c = a;
17437                  if (
17438                    (n && (l = r.add(n.position, s)),
17439                    i && (c = r.add(i.position, a)),
17440                    l && c)
17441                  ) {
17442                    var d = r.sub(l, c),
17443                      u = r.magnitude(d);
17444                    u < o._minLength && (u = o._minLength);
17445                    var p,
17446                      f,
17447                      m,
17448                      v,
17449                      y,
17450                      g = (u - e.length) / u,
17451                      x = e.stiffness < 1 ? e.stiffness * t : e.stiffness,
17452                      h = r.mult(d, g * x),
17453                      b = (n ? n.inverseMass : 0) + (i ? i.inverseMass : 0),
17454                      w =
17455                        (n ? n.inverseInertia : 0) + (i ? i.inverseInertia : 0),
17456                      S = b + w;
17457                    if (e.damping) {
17458                      var C = r.create();
17459                      (m = r.div(d, u)),
17460                        (y = r.sub(
17461                          (i && r.sub(i.position, i.positionPrev)) || C,
17462                          (n && r.sub(n.position, n.positionPrev)) || C,
17463                        )),
17464                        (v = r.dot(m, y));
17465                    }
17466                    n &&
17467                      !n.isStatic &&
17468                      ((f = n.inverseMass / b),
17469                      (n.constraintImpulse.x -= h.x * f),
17470                      (n.constraintImpulse.y -= h.y * f),
17471                      (n.position.x -= h.x * f),
17472                      (n.position.y -= h.y * f),
17473                      e.damping &&
17474                        ((n.positionPrev.x -= e.damping * m.x * v * f),
17475                        (n.positionPrev.y -= e.damping * m.y * v * f)),
17476                      (p =
17477                        (r.cross(s, h) / S) *
17478                        o._torqueDampen *
17479                        n.inverseInertia *
17480                        (1 - e.angularStiffness)),
17481                      (n.constraintImpulse.angle -= p),
17482                      (n.angle -= p)),
17483                      i &&
17484                        !i.isStatic &&
17485                        ((f = i.inverseMass / b),
17486                        (i.constraintImpulse.x += h.x * f),
17487                        (i.constraintImpulse.y += h.y * f),
17488                        (i.position.x += h.x * f),
17489                        (i.position.y += h.y * f),
17490                        e.damping &&
17491                          ((i.positionPrev.x += e.damping * m.x * v * f),
17492                          (i.positionPrev.y += e.damping * m.y * v * f)),
17493                        (p =
17494                          (r.cross(a, h) / S) *
17495                          o._torqueDampen *
17496                          i.inverseInertia *
17497                          (1 - e.angularStiffness)),
17498                        (i.constraintImpulse.angle += p),
17499                        (i.angle += p));
17500                  }
17501                }
17502              }),
17503              (o.postSolveAll = function (e) {
17504                for (var t = 0; t < e.length; t++) {
17505                  var n = e[t],
17506                    c = n.constraintImpulse;
17507                  if (
17508                    !(n.isStatic || (0 === c.x && 0 === c.y && 0 === c.angle))
17509                  ) {
17510                    s.set(n, !1);
17511                    for (var d = 0; d < n.parts.length; d++) {
17512                      var u = n.parts[d];
17513                      i.translate(u.vertices, c),
17514                        d > 0 && ((u.position.x += c.x), (u.position.y += c.y)),
17515                        0 !== c.angle &&
17516                          (i.rotate(u.vertices, c.angle, n.position),
17517                          l.rotate(u.axes, c.angle),
17518                          d > 0 &&
17519                            r.rotateAbout(
17520                              u.position,
17521                              c.angle,
17522                              n.position,
17523                              u.position,
17524                            )),
17525                        a.update(u.bounds, u.vertices, n.velocity);
17526                    }
17527                    (c.angle *= o._warming),
17528                      (c.x *= o._warming),
17529                      (c.y *= o._warming);
17530                  }
17531                }
17532              });
17533          })();
17534        },
17535        {
17536          "../core/Common": 14,
17537          "../core/Sleeping": 22,
17538          "../geometry/Axes": 25,
17539          "../geometry/Bounds": 26,
17540          "../geometry/Vector": 28,
17541          "../geometry/Vertices": 29,
17542        },
17543      ],
17544      13: [
17545        function (e, t, n) {
17546          var o = {};
17547          t.exports = o;
17548          var i = e("../geometry/Vertices"),
17549            r = e("../core/Sleeping"),
17550            s = e("../core/Mouse"),
17551            a = e("../core/Events"),
17552            l = e("../collision/Detector"),
17553            c = e("./Constraint"),
17554            d = e("../body/Composite"),
17555            u = e("../core/Common"),
17556            p = e("../geometry/Bounds");
17557          !(function () {
17558            (o.create = function (e, t) {
17559              var n = (e ? e.mouse : null) || (t ? t.mouse : null);
17560              n ||
17561                (e && e.render && e.render.canvas
17562                  ? (n = s.create(e.render.canvas))
17563                  : t && t.element
17564                    ? (n = s.create(t.element))
17565                    : ((n = s.create()),
17566                      u.warn(
17567                        "MouseConstraint.create: options.mouse was undefined, options.element was undefined, may not function as expected",
17568                      )));
17569              var i = c.create({
17570                  label: "Mouse Constraint",
17571                  pointA: n.position,
17572                  pointB: { x: 0, y: 0 },
17573                  length: 0.01,
17574                  stiffness: 0.1,
17575                  angularStiffness: 1,
17576                  render: { strokeStyle: "#90EE90", lineWidth: 3 },
17577                }),
17578                r = {
17579                  type: "mouseConstraint",
17580                  mouse: n,
17581                  element: null,
17582                  body: null,
17583                  constraint: i,
17584                  collisionFilter: { category: 1, mask: 4294967295, group: 0 },
17585                },
17586                l = u.extend(r, t);
17587              return (
17588                a.on(e, "beforeUpdate", function () {
17589                  var t = d.allBodies(e.world);
17590                  o.update(l, t), o._triggerEvents(l);
17591                }),
17592                l
17593              );
17594            }),
17595              (o.update = function (e, t) {
17596                var n = e.mouse,
17597                  o = e.constraint,
17598                  s = e.body;
17599                if (0 === n.button) {
17600                  if (o.bodyB) r.set(o.bodyB, !1), (o.pointA = n.position);
17601                  else
17602                    for (var c = 0; c < t.length; c++)
17603                      if (
17604                        ((s = t[c]),
17605                        p.contains(s.bounds, n.position) &&
17606                          l.canCollide(s.collisionFilter, e.collisionFilter))
17607                      )
17608                        for (
17609                          var d = s.parts.length > 1 ? 1 : 0;
17610                          d < s.parts.length;
17611                          d++
17612                        ) {
17613                          var u = s.parts[d];
17614                          if (i.contains(u.vertices, n.position)) {
17615                            (o.pointA = n.position),
17616                              (o.bodyB = e.body = s),
17617                              (o.pointB = {
17618                                x: n.position.x - s.position.x,
17619                                y: n.position.y - s.position.y,
17620                              }),
17621                              (o.angleB = s.angle),
17622                              r.set(s, !1),
17623                              a.trigger(e, "startdrag", { mouse: n, body: s });
17624                            break;
17625                          }
17626                        }
17627                } else
17628                  (o.bodyB = e.body = null),
17629                    (o.pointB = null),
17630                    s && a.trigger(e, "enddrag", { mouse: n, body: s });
17631              }),
17632              (o._triggerEvents = function (e) {
17633                var t = e.mouse,
17634                  n = t.sourceEvents;
17635                n.mousemove && a.trigger(e, "mousemove", { mouse: t }),
17636                  n.mousedown && a.trigger(e, "mousedown", { mouse: t }),
17637                  n.mouseup && a.trigger(e, "mouseup", { mouse: t }),
17638                  s.clearSourceEvents(t);
17639              });
17640          })();
17641        },
17642        {
17643          "../body/Composite": 2,
17644          "../collision/Detector": 5,
17645          "../core/Common": 14,
17646          "../core/Events": 16,
17647          "../core/Mouse": 19,
17648          "../core/Sleeping": 22,
17649          "../geometry/Bounds": 26,
17650          "../geometry/Vertices": 29,
17651          "./Constraint": 12,
17652        },
17653      ],
17654      14: [
17655        function (e, t, n) {
17656          (function (n) {
17657            var o = {};
17658            (t.exports = o),
17659              (function () {
17660                (o._nextId = 0),
17661                  (o._seed = 0),
17662                  (o._nowStartTime = +new Date()),
17663                  (o.extend = function (e, t) {
17664                    var n, i;
17665                    "boolean" == typeof t
17666                      ? ((n = 2), (i = t))
17667                      : ((n = 1), (i = !0));
17668                    for (var r = n; r < arguments.length; r++) {
17669                      var s = arguments[r];
17670                      if (s)
17671                        for (var a in s)
17672                          i && s[a] && s[a].constructor === Object
17673                            ? e[a] && e[a].constructor !== Object
17674                              ? (e[a] = s[a])
17675                              : ((e[a] = e[a] || {}), o.extend(e[a], i, s[a]))
17676                            : (e[a] = s[a]);
17677                    }
17678                    return e;
17679                  }),
17680                  (o.clone = function (e, t) {
17681                    return o.extend({}, t, e);
17682                  }),
17683                  (o.keys = function (e) {
17684                    if (Object.keys) return Object.keys(e);
17685                    var t = [];
17686                    for (var n in e) t.push(n);
17687                    return t;
17688                  }),
17689                  (o.values = function (e) {
17690                    var t = [];
17691                    if (Object.keys) {
17692                      for (var n = Object.keys(e), o = 0; o < n.length; o++)
17693                        t.push(e[n[o]]);
17694                      return t;
17695                    }
17696                    for (var i in e) t.push(e[i]);
17697                    return t;
17698                  }),
17699                  (o.get = function (e, t, n, o) {
17700                    t = t.split(".").slice(n, o);
17701                    for (var i = 0; i < t.length; i += 1) e = e[t[i]];
17702                    return e;
17703                  }),
17704                  (o.set = function (e, t, n, i, r) {
17705                    var s = t.split(".").slice(i, r);
17706                    return (o.get(e, t, 0, -1)[s[s.length - 1]] = n), n;
17707                  }),
17708                  (o.shuffle = function (e) {
17709                    for (var t = e.length - 1; t > 0; t--) {
17710                      var n = Math.floor(o.random() * (t + 1)),
17711                        i = e[t];
17712                      (e[t] = e[n]), (e[n] = i);
17713                    }
17714                    return e;
17715                  }),
17716                  (o.choose = function (e) {
17717                    return e[Math.floor(o.random() * e.length)];
17718                  }),
17719                  (o.isElement = function (e) {
17720                    return "undefined" != typeof HTMLElement
17721                      ? e instanceof HTMLElement
17722                      : !!(e && e.nodeType && e.nodeName);
17723                  }),
17724                  (o.isArray = function (e) {
17725                    return (
17726                      "[object Array]" === Object.prototype.toString.call(e)
17727                    );
17728                  }),
17729                  (o.isFunction = function (e) {
17730                    return "function" == typeof e;
17731                  }),
17732                  (o.isPlainObject = function (e) {
17733                    return "object" == typeof e && e.constructor === Object;
17734                  }),
17735                  (o.isString = function (e) {
17736                    return "[object String]" === toString.call(e);
17737                  }),
17738                  (o.clamp = function (e, t, n) {
17739                    return e < t ? t : e > n ? n : e;
17740                  }),
17741                  (o.sign = function (e) {
17742                    return e < 0 ? -1 : 1;
17743                  }),
17744                  (o.now = function () {
17745                    if (window.performance) {
17746                      if (window.performance.now)
17747                        return window.performance.now();
17748                      if (window.performance.webkitNow)
17749                        return window.performance.webkitNow();
17750                    }
17751                    return new Date() - o._nowStartTime;
17752                  }),
17753                  (o.random = function (e, n) {
17754                    return (
17755                      (e = void 0 !== e ? e : 0),
17756                      (n = void 0 !== n ? n : 1),
17757                      e + t() * (n - e)
17758                    );
17759                  });
17760                var t = function () {
17761                  return (
17762                    (o._seed = (9301 * o._seed + 49297) % 233280),
17763                    o._seed / 233280
17764                  );
17765                };
17766                (o.colorToNumber = function (e) {
17767                  return (
17768                    (e = e.replace("#", "")),
17769                    3 == e.length &&
17770                      (e =
17771                        e.charAt(0) +
17772                        e.charAt(0) +
17773                        e.charAt(1) +
17774                        e.charAt(1) +
17775                        e.charAt(2) +
17776                        e.charAt(2)),
17777                    parseInt(e, 16)
17778                  );
17779                }),
17780                  (o.logLevel = 1),
17781                  (o.log = function () {
17782                    console &&
17783                      o.logLevel > 0 &&
17784                      o.logLevel <= 3 &&
17785                      console.log.apply(
17786                        console,
17787                        ["matter-js:"].concat(
17788                          Array.prototype.slice.call(arguments),
17789                        ),
17790                      );
17791                  }),
17792                  (o.info = function () {
17793                    console &&
17794                      o.logLevel > 0 &&
17795                      o.logLevel <= 2 &&
17796                      console.info.apply(
17797                        console,
17798                        ["matter-js:"].concat(
17799                          Array.prototype.slice.call(arguments),
17800                        ),
17801                      );
17802                  }),
17803                  (o.warn = function () {
17804                    console &&
17805                      o.logLevel > 0 &&
17806                      o.logLevel <= 3 &&
17807                      console.warn.apply(
17808                        console,
17809                        ["matter-js:"].concat(
17810                          Array.prototype.slice.call(arguments),
17811                        ),
17812                      );
17813                  }),
17814                  (o.nextId = function () {
17815                    return o._nextId++;
17816                  }),
17817                  (o.indexOf = function (e, t) {
17818                    if (e.indexOf) return e.indexOf(t);
17819                    for (var n = 0; n < e.length; n++) if (e[n] === t) return n;
17820                    return -1;
17821                  }),
17822                  (o.map = function (e, t) {
17823                    if (e.map) return e.map(t);
17824                    for (var n = [], o = 0; o < e.length; o += 1)
17825                      n.push(t(e[o]));
17826                    return n;
17827                  }),
17828                  (o.topologicalSort = function (e) {
17829                    var t = [],
17830                      n = [],
17831                      i = [];
17832                    for (var r in e)
17833                      n[r] || i[r] || o._topologicalSort(r, n, i, e, t);
17834                    return t;
17835                  }),
17836                  (o._topologicalSort = function (e, t, n, i, r) {
17837                    var s = i[e] || [];
17838                    n[e] = !0;
17839                    for (var a = 0; a < s.length; a += 1) {
17840                      var l = s[a];
17841                      n[l] || t[l] || o._topologicalSort(l, t, n, i, r);
17842                    }
17843                    (n[e] = !1), (t[e] = !0), r.push(e);
17844                  }),
17845                  (o.chain = function () {
17846                    for (var e = [], t = 0; t < arguments.length; t += 1) {
17847                      var n = arguments[t];
17848                      n._chained ? e.push.apply(e, n._chained) : e.push(n);
17849                    }
17850                    var o = function () {
17851                      for (
17852                        var t,
17853                          n = new Array(arguments.length),
17854                          o = 0,
17855                          i = arguments.length;
17856                        o < i;
17857                        o++
17858                      )
17859                        n[o] = arguments[o];
17860                      for (o = 0; o < e.length; o += 1) {
17861                        var r = e[o].apply(t, n);
17862                        void 0 !== r && (t = r);
17863                      }
17864                      return t;
17865                    };
17866                    return (o._chained = e), o;
17867                  }),
17868                  (o.chainPathBefore = function (e, t, n) {
17869                    return o.set(e, t, o.chain(n, o.get(e, t)));
17870                  }),
17871                  (o.chainPathAfter = function (e, t, n) {
17872                    return o.set(e, t, o.chain(o.get(e, t), n));
17873                  }),
17874                  (o._requireGlobal = function (t, o) {
17875                    return (
17876                      ("undefined" != typeof window
17877                        ? window[t]
17878                        : void 0 !== n
17879                          ? n[t]
17880                          : null) || e(o)
17881                    );
17882                  });
17883              })();
17884          }).call(
17885            this,
17886            "undefined" != typeof global
17887              ? global
17888              : "undefined" != typeof self
17889                ? self
17890                : "undefined" != typeof window
17891                  ? window
17892                  : {},
17893          );
17894        },
17895        {},
17896      ],
17897      15: [
17898        function (e, t, n) {
17899          var o = {};
17900          t.exports = o;
17901          var i = e("../body/World"),
17902            r = e("./Sleeping"),
17903            s = e("../collision/Resolver"),
17904            a = e("../render/Render"),
17905            l = e("../collision/Pairs"),
17906            c = (e("./Metrics"), e("../collision/Grid")),
17907            d = e("./Events"),
17908            u = e("../body/Composite"),
17909            p = e("../constraint/Constraint"),
17910            f = e("./Common"),
17911            m = e("../body/Body");
17912          !(function () {
17913            (o.create = function (e, t) {
17914              (t = f.isElement(e) ? t : e),
17915                (e = f.isElement(e) ? e : null),
17916                (t = t || {}),
17917                (e || t.render) &&
17918                  f.warn(
17919                    "Engine.create: engine.render is deprecated (see docs)",
17920                  );
17921              var n = {
17922                  positionIterations: 6,
17923                  velocityIterations: 4,
17924                  constraintIterations: 2,
17925                  enableSleeping: !1,
17926                  events: [],
17927                  plugin: {},
17928                  timing: { timestamp: 0, timeScale: 1 },
17929                  broadphase: { controller: c },
17930                },
17931                o = f.extend(n, t);
17932              if (e || o.render) {
17933                var r = { element: e, controller: a };
17934                o.render = f.extend(r, o.render);
17935              }
17936              return (
17937                o.render &&
17938                  o.render.controller &&
17939                  (o.render = o.render.controller.create(o.render)),
17940                o.render && (o.render.engine = o),
17941                (o.world = t.world || i.create(o.world)),
17942                (o.pairs = l.create()),
17943                (o.broadphase = o.broadphase.controller.create(o.broadphase)),
17944                (o.metrics = o.metrics || { extended: !1 }),
17945                o
17946              );
17947            }),
17948              (o.update = function (e, t, n) {
17949                (t = t || 1e3 / 60), (n = n || 1);
17950                var i,
17951                  a = e.world,
17952                  c = e.timing,
17953                  f = e.broadphase,
17954                  m = [];
17955                c.timestamp += t * c.timeScale;
17956                var v = { timestamp: c.timestamp };
17957                d.trigger(e, "beforeUpdate", v);
17958                var y = u.allBodies(a),
17959                  g = u.allConstraints(a);
17960                for (
17961                  e.enableSleeping && r.update(y, c.timeScale),
17962                    o._bodiesApplyGravity(y, a.gravity),
17963                    o._bodiesUpdate(y, t, c.timeScale, n, a.bounds),
17964                    p.preSolveAll(y),
17965                    i = 0;
17966                  i < e.constraintIterations;
17967                  i++
17968                )
17969                  p.solveAll(g, c.timeScale);
17970                p.postSolveAll(y),
17971                  f.controller
17972                    ? (a.isModified && f.controller.clear(f),
17973                      f.controller.update(f, y, e, a.isModified),
17974                      (m = f.pairsList))
17975                    : (m = y),
17976                  a.isModified && u.setModified(a, !1, !1, !0);
17977                var x = f.detector(m, e),
17978                  h = e.pairs,
17979                  b = c.timestamp;
17980                for (
17981                  l.update(h, x, b),
17982                    l.removeOld(h, b),
17983                    e.enableSleeping && r.afterCollisions(h.list, c.timeScale),
17984                    h.collisionStart.length > 0 &&
17985                      d.trigger(e, "collisionStart", {
17986                        pairs: h.collisionStart,
17987                      }),
17988                    s.preSolvePosition(h.list),
17989                    i = 0;
17990                  i < e.positionIterations;
17991                  i++
17992                )
17993                  s.solvePosition(h.list, c.timeScale);
17994                for (
17995                  s.postSolvePosition(y), p.preSolveAll(y), i = 0;
17996                  i < e.constraintIterations;
17997                  i++
17998                )
17999                  p.solveAll(g, c.timeScale);
18000                for (
18001                  p.postSolveAll(y), s.preSolveVelocity(h.list), i = 0;
18002                  i < e.velocityIterations;
18003                  i++
18004                )
18005                  s.solveVelocity(h.list, c.timeScale);
18006                return (
18007                  h.collisionActive.length > 0 &&
18008                    d.trigger(e, "collisionActive", {
18009                      pairs: h.collisionActive,
18010                    }),
18011                  h.collisionEnd.length > 0 &&
18012                    d.trigger(e, "collisionEnd", { pairs: h.collisionEnd }),
18013                  o._bodiesClearForces(y),
18014                  d.trigger(e, "afterUpdate", v),
18015                  e
18016                );
18017              }),
18018              (o.merge = function (e, t) {
18019                if ((f.extend(e, t), t.world)) {
18020                  (e.world = t.world), o.clear(e);
18021                  for (var n = u.allBodies(e.world), i = 0; i < n.length; i++) {
18022                    var s = n[i];
18023                    r.set(s, !1), (s.id = f.nextId());
18024                  }
18025                }
18026              }),
18027              (o.clear = function (e) {
18028                var t = e.world;
18029                l.clear(e.pairs);
18030                var n = e.broadphase;
18031                if (n.controller) {
18032                  var o = u.allBodies(t);
18033                  n.controller.clear(n), n.controller.update(n, o, e, !0);
18034                }
18035              }),
18036              (o._bodiesClearForces = function (e) {
18037                for (var t = 0; t < e.length; t++) {
18038                  var n = e[t];
18039                  (n.force.x = 0), (n.force.y = 0), (n.torque = 0);
18040                }
18041              }),
18042              (o._bodiesApplyGravity = function (e, t) {
18043                var n = void 0 !== t.scale ? t.scale : 0.001;
18044                if ((0 !== t.x || 0 !== t.y) && 0 !== n)
18045                  for (var o = 0; o < e.length; o++) {
18046                    var i = e[o];
18047                    i.isStatic ||
18048                      i.isSleeping ||
18049                      ((i.force.y += i.mass * t.y * n),
18050                      (i.force.x += i.mass * t.x * n));
18051                  }
18052              }),
18053              (o._bodiesUpdate = function (e, t, n, o, i) {
18054                for (var r = 0; r < e.length; r++) {
18055                  var s = e[r];
18056                  s.isStatic || s.isSleeping || m.update(s, t, n, o);
18057                }
18058              });
18059          })();
18060        },
18061        {
18062          "../body/Body": 1,
18063          "../body/Composite": 2,
18064          "../body/World": 3,
18065          "../collision/Grid": 6,
18066          "../collision/Pairs": 8,
18067          "../collision/Resolver": 10,
18068          "../constraint/Constraint": 12,
18069          "../render/Render": 31,
18070          "./Common": 14,
18071          "./Events": 16,
18072          "./Metrics": 18,
18073          "./Sleeping": 22,
18074        },
18075      ],
18076      16: [
18077        function (e, t, n) {
18078          var o = {};
18079          t.exports = o;
18080          var i = e("./Common");
18081          !(function () {
18082            (o.on = function (e, t, n) {
18083              for (var o, i = t.split(" "), r = 0; r < i.length; r++)
18084                (o = i[r]),
18085                  (e.events = e.events || {}),
18086                  (e.events[o] = e.events[o] || []),
18087                  e.events[o].push(n);
18088              return n;
18089            }),
18090              (o.off = function (e, t, n) {
18091                if (!t) return void (e.events = {});
18092                "function" == typeof t &&
18093                  ((n = t), (t = i.keys(e.events).join(" ")));
18094                for (var o = t.split(" "), r = 0; r < o.length; r++) {
18095                  var s = e.events[o[r]],
18096                    a = [];
18097                  if (n && s)
18098                    for (var l = 0; l < s.length; l++)
18099                      s[l] !== n && a.push(s[l]);
18100                  e.events[o[r]] = a;
18101                }
18102              }),
18103              (o.trigger = function (e, t, n) {
18104                var o, r, s, a;
18105                if (e.events) {
18106                  n || (n = {}), (o = t.split(" "));
18107                  for (var l = 0; l < o.length; l++)
18108                    if (((r = o[l]), (s = e.events[r]))) {
18109                      (a = i.clone(n, !1)), (a.name = r), (a.source = e);
18110                      for (var c = 0; c < s.length; c++) s[c].apply(e, [a]);
18111                    }
18112                }
18113              });
18114          })();
18115        },
18116        { "./Common": 14 },
18117      ],
18118      17: [
18119        function (e, t, n) {
18120          var o = {};
18121          t.exports = o;
18122          var i = e("./Plugin"),
18123            r = e("./Common");
18124          !(function () {
18125            (o.name = "matter-js"),
18126              (o.version = "0.14.2"),
18127              (o.uses = []),
18128              (o.used = []),
18129              (o.use = function () {
18130                i.use(o, Array.prototype.slice.call(arguments));
18131              }),
18132              (o.before = function (e, t) {
18133                return (
18134                  (e = e.replace(/^Matter./, "")), r.chainPathBefore(o, e, t)
18135                );
18136              }),
18137              (o.after = function (e, t) {
18138                return (
18139                  (e = e.replace(/^Matter./, "")), r.chainPathAfter(o, e, t)
18140                );
18141              });
18142          })();
18143        },
18144        { "./Common": 14, "./Plugin": 20 },
18145      ],
18146      18: [function (e, t, n) {}, { "../body/Composite": 2, "./Common": 14 }],
18147      19: [
18148        function (e, t, n) {
18149          var o = {};
18150          t.exports = o;
18151          var i = e("../core/Common");
18152          !(function () {
18153            (o.create = function (e) {
18154              var t = {};
18155              return (
18156                e ||
18157                  i.log(
18158                    "Mouse.create: element was undefined, defaulting to document.body",
18159                    "warn",
18160                  ),
18161                (t.element = e || document.body),
18162                (t.absolute = { x: 0, y: 0 }),
18163                (t.position = { x: 0, y: 0 }),
18164                (t.mousedownPosition = { x: 0, y: 0 }),
18165                (t.mouseupPosition = { x: 0, y: 0 }),
18166                (t.offset = { x: 0, y: 0 }),
18167                (t.scale = { x: 1, y: 1 }),
18168                (t.wheelDelta = 0),
18169                (t.button = -1),
18170                (t.pixelRatio =
18171                  t.element.getAttribute("data-pixel-ratio") || 1),
18172                (t.sourceEvents = {
18173                  mousemove: null,
18174                  mousedown: null,
18175                  mouseup: null,
18176                  mousewheel: null,
18177                }),
18178                (t.mousemove = function (e) {
18179                  var n = o._getRelativeMousePosition(
18180                    e,
18181                    t.element,
18182                    t.pixelRatio,
18183                  );
18184                  e.changedTouches && ((t.button = 0), e.preventDefault()),
18185                    (t.absolute.x = n.x),
18186                    (t.absolute.y = n.y),
18187                    (t.position.x = t.absolute.x * t.scale.x + t.offset.x),
18188                    (t.position.y = t.absolute.y * t.scale.y + t.offset.y),
18189                    (t.sourceEvents.mousemove = e);
18190                }),
18191                (t.mousedown = function (e) {
18192                  var n = o._getRelativeMousePosition(
18193                    e,
18194                    t.element,
18195                    t.pixelRatio,
18196                  );
18197                  e.changedTouches
18198                    ? ((t.button = 0), e.preventDefault())
18199                    : (t.button = e.button),
18200                    (t.absolute.x = n.x),
18201                    (t.absolute.y = n.y),
18202                    (t.position.x = t.absolute.x * t.scale.x + t.offset.x),
18203                    (t.position.y = t.absolute.y * t.scale.y + t.offset.y),
18204                    (t.mousedownPosition.x = t.position.x),
18205                    (t.mousedownPosition.y = t.position.y),
18206                    (t.sourceEvents.mousedown = e);
18207                }),
18208                (t.mouseup = function (e) {
18209                  var n = o._getRelativeMousePosition(
18210                    e,
18211                    t.element,
18212                    t.pixelRatio,
18213                  );
18214                  e.changedTouches && e.preventDefault(),
18215                    (t.button = -1),
18216                    (t.absolute.x = n.x),
18217                    (t.absolute.y = n.y),
18218                    (t.position.x = t.absolute.x * t.scale.x + t.offset.x),
18219                    (t.position.y = t.absolute.y * t.scale.y + t.offset.y),
18220                    (t.mouseupPosition.x = t.position.x),
18221                    (t.mouseupPosition.y = t.position.y),
18222                    (t.sourceEvents.mouseup = e);
18223                }),
18224                (t.mousewheel = function (e) {
18225                  (t.wheelDelta = Math.max(
18226                    -1,
18227                    Math.min(1, e.wheelDelta || -e.detail),
18228                  )),
18229                    e.preventDefault();
18230                }),
18231                o.setElement(t, t.element),
18232                t
18233              );
18234            }),
18235              (o.setElement = function (e, t) {
18236                (e.element = t),
18237                  t.addEventListener("mousemove", e.mousemove),
18238                  t.addEventListener("mousedown", e.mousedown),
18239                  t.addEventListener("mouseup", e.mouseup),
18240                  t.addEventListener("mousewheel", e.mousewheel),
18241                  t.addEventListener("DOMMouseScroll", e.mousewheel),
18242                  t.addEventListener("touchmove", e.mousemove),
18243                  t.addEventListener("touchstart", e.mousedown),
18244                  t.addEventListener("touchend", e.mouseup);
18245              }),
18246              (o.clearSourceEvents = function (e) {
18247                (e.sourceEvents.mousemove = null),
18248                  (e.sourceEvents.mousedown = null),
18249                  (e.sourceEvents.mouseup = null),
18250                  (e.sourceEvents.mousewheel = null),
18251                  (e.wheelDelta = 0);
18252              }),
18253              (o.setOffset = function (e, t) {
18254                (e.offset.x = t.x),
18255                  (e.offset.y = t.y),
18256                  (e.position.x = e.absolute.x * e.scale.x + e.offset.x),
18257                  (e.position.y = e.absolute.y * e.scale.y + e.offset.y);
18258              }),
18259              (o.setScale = function (e, t) {
18260                (e.scale.x = t.x),
18261                  (e.scale.y = t.y),
18262                  (e.position.x = e.absolute.x * e.scale.x + e.offset.x),
18263                  (e.position.y = e.absolute.y * e.scale.y + e.offset.y);
18264              }),
18265              (o._getRelativeMousePosition = function (e, t, n) {
18266                var o,
18267                  i,
18268                  r = t.getBoundingClientRect(),
18269                  s =
18270                    document.documentElement ||
18271                    document.body.parentNode ||
18272                    document.body,
18273                  a =
18274                    void 0 !== window.pageXOffset
18275                      ? window.pageXOffset
18276                      : s.scrollLeft,
18277                  l =
18278                    void 0 !== window.pageYOffset
18279                      ? window.pageYOffset
18280                      : s.scrollTop,
18281                  c = e.changedTouches;
18282                return (
18283                  c
18284                    ? ((o = c[0].pageX - r.left - a),
18285                      (i = c[0].pageY - r.top - l))
18286                    : ((o = e.pageX - r.left - a), (i = e.pageY - r.top - l)),
18287                  {
18288                    x: o / ((t.clientWidth / (t.width || t.clientWidth)) * n),
18289                    y:
18290                      i / ((t.clientHeight / (t.height || t.clientHeight)) * n),
18291                  }
18292                );
18293              });
18294          })();
18295        },
18296        { "../core/Common": 14 },
18297      ],
18298      20: [
18299        function (e, t, n) {
18300          var o = {};
18301          t.exports = o;
18302          var i = e("./Common");
18303          !(function () {
18304            (o._registry = {}),
18305              (o.register = function (e) {
18306                if (
18307                  (o.isPlugin(e) ||
18308                    i.warn(
18309                      "Plugin.register:",
18310                      o.toString(e),
18311                      "does not implement all required fields.",
18312                    ),
18313                  e.name in o._registry)
18314                ) {
18315                  var t = o._registry[e.name],
18316                    n = o.versionParse(e.version).number,
18317                    r = o.versionParse(t.version).number;
18318                  n > r
18319                    ? (i.warn(
18320                        "Plugin.register:",
18321                        o.toString(t),
18322                        "was upgraded to",
18323                        o.toString(e),
18324                      ),
18325                      (o._registry[e.name] = e))
18326                    : n < r
18327                      ? i.warn(
18328                          "Plugin.register:",
18329                          o.toString(t),
18330                          "can not be downgraded to",
18331                          o.toString(e),
18332                        )
18333                      : e !== t &&
18334                        i.warn(
18335                          "Plugin.register:",
18336                          o.toString(e),
18337                          "is already registered to different plugin object",
18338                        );
18339                } else o._registry[e.name] = e;
18340                return e;
18341              }),
18342              (o.resolve = function (e) {
18343                return o._registry[o.dependencyParse(e).name];
18344              }),
18345              (o.toString = function (e) {
18346                return "string" == typeof e
18347                  ? e
18348                  : (e.name || "anonymous") +
18349                      "@" +
18350                      (e.version || e.range || "0.0.0");
18351              }),
18352              (o.isPlugin = function (e) {
18353                return e && e.name && e.version && e.install;
18354              }),
18355              (o.isUsed = function (e, t) {
18356                return e.used.indexOf(t) > -1;
18357              }),
18358              (o.isFor = function (e, t) {
18359                var n = e.for && o.dependencyParse(e.for);
18360                return (
18361                  !e.for ||
18362                  (t.name === n.name && o.versionSatisfies(t.version, n.range))
18363                );
18364              }),
18365              (o.use = function (e, t) {
18366                if (
18367                  ((e.uses = (e.uses || []).concat(t || [])),
18368                  0 === e.uses.length)
18369                )
18370                  return void i.warn(
18371                    "Plugin.use:",
18372                    o.toString(e),
18373                    "does not specify any dependencies to install.",
18374                  );
18375                for (
18376                  var n = o.dependencies(e),
18377                    r = i.topologicalSort(n),
18378                    s = [],
18379                    a = 0;
18380                  a < r.length;
18381                  a += 1
18382                )
18383                  if (r[a] !== e.name) {
18384                    var l = o.resolve(r[a]);
18385                    l
18386                      ? o.isUsed(e, l.name) ||
18387                        (o.isFor(l, e) ||
18388                          (i.warn(
18389                            "Plugin.use:",
18390                            o.toString(l),
18391                            "is for",
18392                            l.for,
18393                            "but installed on",
18394                            o.toString(e) + ".",
18395                          ),
18396                          (l._warned = !0)),
18397                        l.install
18398                          ? l.install(e)
18399                          : (i.warn(
18400                              "Plugin.use:",
18401                              o.toString(l),
18402                              "does not specify an install function.",
18403                            ),
18404                            (l._warned = !0)),
18405                        l._warned
18406                          ? (s.push("🔶 " + o.toString(l)), delete l._warned)
18407                          : s.push("✅ " + o.toString(l)),
18408                        e.used.push(l.name))
18409                      : s.push("❌ " + r[a]);
18410                  }
18411                s.length > 0 && i.info(s.join("  "));
18412              }),
18413              (o.dependencies = function (e, t) {
18414                var n = o.dependencyParse(e),
18415                  r = n.name;
18416                if (((t = t || {}), !(r in t))) {
18417                  (e = o.resolve(e) || e),
18418                    (t[r] = i.map(e.uses || [], function (t) {
18419                      o.isPlugin(t) && o.register(t);
18420                      var r = o.dependencyParse(t),
18421                        s = o.resolve(t);
18422                      return (
18423                        s && !o.versionSatisfies(s.version, r.range)
18424                          ? (i.warn(
18425                              "Plugin.dependencies:",
18426                              o.toString(s),
18427                              "does not satisfy",
18428                              o.toString(r),
18429                              "used by",
18430                              o.toString(n) + ".",
18431                            ),
18432                            (s._warned = !0),
18433                            (e._warned = !0))
18434                          : s ||
18435                            (i.warn(
18436                              "Plugin.dependencies:",
18437                              o.toString(t),
18438                              "used by",
18439                              o.toString(n),
18440                              "could not be resolved.",
18441                            ),
18442                            (e._warned = !0)),
18443                        r.name
18444                      );
18445                    }));
18446                  for (var s = 0; s < t[r].length; s += 1)
18447                    o.dependencies(t[r][s], t);
18448                  return t;
18449                }
18450              }),
18451              (o.dependencyParse = function (e) {
18452                if (i.isString(e)) {
18453                  return (
18454                    /^[\w-]+(@(\*|[\^~]?\d+\.\d+\.\d+(-[0-9A-Za-z-]+)?))?$/.test(
18455                      e,
18456                    ) ||
18457                      i.warn(
18458                        "Plugin.dependencyParse:",
18459                        e,
18460                        "is not a valid dependency string.",
18461                      ),
18462                    { name: e.split("@")[0], range: e.split("@")[1] || "*" }
18463                  );
18464                }
18465                return { name: e.name, range: e.range || e.version };
18466              }),
18467              (o.versionParse = function (e) {
18468                /^\*|[\^~]?\d+\.\d+\.\d+(-[0-9A-Za-z-]+)?$/.test(e) ||
18469                  i.warn(
18470                    "Plugin.versionParse:",
18471                    e,
18472                    "is not a valid version or range.",
18473                  );
18474                var t = e.split("-");
18475                e = t[0];
18476                var n = isNaN(Number(e[0])),
18477                  o = n ? e.substr(1) : e,
18478                  r = i.map(o.split("."), function (e) {
18479                    return Number(e);
18480                  });
18481                return {
18482                  isRange: n,
18483                  version: o,
18484                  range: e,
18485                  operator: n ? e[0] : "",
18486                  parts: r,
18487                  prerelease: t[1],
18488                  number: 1e8 * r[0] + 1e4 * r[1] + r[2],
18489                };
18490              }),
18491              (o.versionSatisfies = function (e, t) {
18492                t = t || "*";
18493                var n = o.versionParse(t),
18494                  i = n.parts,
18495                  r = o.versionParse(e),
18496                  s = r.parts;
18497                if (n.isRange) {
18498                  if ("*" === n.operator || "*" === e) return !0;
18499                  if ("~" === n.operator)
18500                    return s[0] === i[0] && s[1] === i[1] && s[2] >= i[2];
18501                  if ("^" === n.operator)
18502                    return i[0] > 0
18503                      ? s[0] === i[0] && r.number >= n.number
18504                      : i[1] > 0
18505                        ? s[1] === i[1] && s[2] >= i[2]
18506                        : s[2] === i[2];
18507                }
18508                return e === t || "*" === e;
18509              });
18510          })();
18511        },
18512        { "./Common": 14 },
18513      ],
18514      21: [
18515        function (e, t, n) {
18516          var o = {};
18517          t.exports = o;
18518          var i = e("./Events"),
18519            r = e("./Engine"),
18520            s = e("./Common");
18521          !(function () {
18522            var e, t;
18523            if (
18524              ("undefined" != typeof window &&
18525                ((e =
18526                  window.requestAnimationFrame ||
18527                  window.webkitRequestAnimationFrame ||
18528                  window.mozRequestAnimationFrame ||
18529                  window.msRequestAnimationFrame),
18530                (t =
18531                  window.cancelAnimationFrame ||
18532                  window.mozCancelAnimationFrame ||
18533                  window.webkitCancelAnimationFrame ||
18534                  window.msCancelAnimationFrame)),
18535              !e)
18536            ) {
18537              var n;
18538              (e = function (e) {
18539                n = setTimeout(function () {
18540                  e(s.now());
18541                }, 1e3 / 60);
18542              }),
18543                (t = function () {
18544                  clearTimeout(n);
18545                });
18546            }
18547            (o.create = function (e) {
18548              var t = {
18549                  fps: 60,
18550                  correction: 1,
18551                  deltaSampleSize: 60,
18552                  counterTimestamp: 0,
18553                  frameCounter: 0,
18554                  deltaHistory: [],
18555                  timePrev: null,
18556                  timeScalePrev: 1,
18557                  frameRequestId: null,
18558                  isFixed: !1,
18559                  enabled: !0,
18560                },
18561                n = s.extend(t, e);
18562              return (
18563                (n.delta = n.delta || 1e3 / n.fps),
18564                (n.deltaMin = n.deltaMin || 1e3 / n.fps),
18565                (n.deltaMax = n.deltaMax || 1e3 / (0.5 * n.fps)),
18566                (n.fps = 1e3 / n.delta),
18567                n
18568              );
18569            }),
18570              (o.run = function (t, n) {
18571                return (
18572                  void 0 !== t.positionIterations &&
18573                    ((n = t), (t = o.create())),
18574                  (function i(r) {
18575                    (t.frameRequestId = e(i)),
18576                      r && t.enabled && o.tick(t, n, r);
18577                  })(),
18578                  t
18579                );
18580              }),
18581              (o.tick = function (e, t, n) {
18582                var o,
18583                  s = t.timing,
18584                  a = 1,
18585                  l = { timestamp: s.timestamp };
18586                i.trigger(e, "beforeTick", l),
18587                  i.trigger(t, "beforeTick", l),
18588                  e.isFixed
18589                    ? (o = e.delta)
18590                    : ((o = n - e.timePrev || e.delta),
18591                      (e.timePrev = n),
18592                      e.deltaHistory.push(o),
18593                      (e.deltaHistory = e.deltaHistory.slice(
18594                        -e.deltaSampleSize,
18595                      )),
18596                      (o = Math.min.apply(null, e.deltaHistory)),
18597                      (o = o < e.deltaMin ? e.deltaMin : o),
18598                      (o = o > e.deltaMax ? e.deltaMax : o),
18599                      (a = o / e.delta),
18600                      (e.delta = o)),
18601                  0 !== e.timeScalePrev && (a *= s.timeScale / e.timeScalePrev),
18602                  0 === s.timeScale && (a = 0),
18603                  (e.timeScalePrev = s.timeScale),
18604                  (e.correction = a),
18605                  (e.frameCounter += 1),
18606                  n - e.counterTimestamp >= 1e3 &&
18607                    ((e.fps =
18608                      e.frameCounter * ((n - e.counterTimestamp) / 1e3)),
18609                    (e.counterTimestamp = n),
18610                    (e.frameCounter = 0)),
18611                  i.trigger(e, "tick", l),
18612                  i.trigger(t, "tick", l),
18613                  t.world.isModified &&
18614                    t.render &&
18615                    t.render.controller &&
18616                    t.render.controller.clear &&
18617                    t.render.controller.clear(t.render),
18618                  i.trigger(e, "beforeUpdate", l),
18619                  r.update(t, o, a),
18620                  i.trigger(e, "afterUpdate", l),
18621                  t.render &&
18622                    t.render.controller &&
18623                    (i.trigger(e, "beforeRender", l),
18624                    i.trigger(t, "beforeRender", l),
18625                    t.render.controller.world(t.render),
18626                    i.trigger(e, "afterRender", l),
18627                    i.trigger(t, "afterRender", l)),
18628                  i.trigger(e, "afterTick", l),
18629                  i.trigger(t, "afterTick", l);
18630              }),
18631              (o.stop = function (e) {
18632                t(e.frameRequestId);
18633              }),
18634              (o.start = function (e, t) {
18635                o.run(e, t);
18636              });
18637          })();
18638        },
18639        { "./Common": 14, "./Engine": 15, "./Events": 16 },
18640      ],
18641      22: [
18642        function (e, t, n) {
18643          var o = {};
18644          t.exports = o;
18645          var i = e("./Events");
18646          !(function () {
18647            (o._motionWakeThreshold = 0.18),
18648              (o._motionSleepThreshold = 0.08),
18649              (o._minBias = 0.9),
18650              (o.update = function (e, t) {
18651                for (var n = t * t * t, i = 0; i < e.length; i++) {
18652                  var r = e[i],
18653                    s = r.speed * r.speed + r.angularSpeed * r.angularSpeed;
18654                  if (0 === r.force.x && 0 === r.force.y) {
18655                    var a = Math.min(r.motion, s),
18656                      l = Math.max(r.motion, s);
18657                    (r.motion = o._minBias * a + (1 - o._minBias) * l),
18658                      r.sleepThreshold > 0 &&
18659                      r.motion < o._motionSleepThreshold * n
18660                        ? ((r.sleepCounter += 1),
18661                          r.sleepCounter >= r.sleepThreshold && o.set(r, !0))
18662                        : r.sleepCounter > 0 && (r.sleepCounter -= 1);
18663                  } else o.set(r, !1);
18664                }
18665              }),
18666              (o.afterCollisions = function (e, t) {
18667                for (var n = t * t * t, i = 0; i < e.length; i++) {
18668                  var r = e[i];
18669                  if (r.isActive) {
18670                    var s = r.collision,
18671                      a = s.bodyA.parent,
18672                      l = s.bodyB.parent;
18673                    if (
18674                      !(
18675                        (a.isSleeping && l.isSleeping) ||
18676                        a.isStatic ||
18677                        l.isStatic
18678                      ) &&
18679                      (a.isSleeping || l.isSleeping)
18680                    ) {
18681                      var c = a.isSleeping && !a.isStatic ? a : l,
18682                        d = c === a ? l : a;
18683                      !c.isStatic &&
18684                        d.motion > o._motionWakeThreshold * n &&
18685                        o.set(c, !1);
18686                    }
18687                  }
18688                }
18689              }),
18690              (o.set = function (e, t) {
18691                var n = e.isSleeping;
18692                t
18693                  ? ((e.isSleeping = !0),
18694                    (e.sleepCounter = e.sleepThreshold),
18695                    (e.positionImpulse.x = 0),
18696                    (e.positionImpulse.y = 0),
18697                    (e.positionPrev.x = e.position.x),
18698                    (e.positionPrev.y = e.position.y),
18699                    (e.anglePrev = e.angle),
18700                    (e.speed = 0),
18701                    (e.angularSpeed = 0),
18702                    (e.motion = 0),
18703                    n || i.trigger(e, "sleepStart"))
18704                  : ((e.isSleeping = !1),
18705                    (e.sleepCounter = 0),
18706                    n && i.trigger(e, "sleepEnd"));
18707              });
18708          })();
18709        },
18710        {
18711          "./Events": 16,
18712        },
18713      ],
18714      23: [
18715        function (e, t, n) {
18716          var o = {};
18717          t.exports = o;
18718          var i,
18719            r = e("../geometry/Vertices"),
18720            s = e("../core/Common"),
18721            a = e("../body/Body"),
18722            l = e("../geometry/Bounds"),
18723            c = e("../geometry/Vector");
18724          !(function () {
18725            (o.rectangle = function (e, t, n, o, i) {
18726              i = i || {};
18727              var l = {
18728                label: "Rectangle Body",
18729                position: { x: e, y: t },
18730                vertices: r.fromPath(
18731                  "L 0 0 L " + n + " 0 L " + n + " " + o + " L 0 " + o,
18732                ),
18733              };
18734              if (i.chamfer) {
18735                var c = i.chamfer;
18736                (l.vertices = r.chamfer(
18737                  l.vertices,
18738                  c.radius,
18739                  c.quality,
18740                  c.qualityMin,
18741                  c.qualityMax,
18742                )),
18743                  delete i.chamfer;
18744              }
18745              return a.create(s.extend({}, l, i));
18746            }),
18747              (o.trapezoid = function (e, t, n, o, i, l) {
18748                (l = l || {}), (i *= 0.5);
18749                var c,
18750                  d = (1 - 2 * i) * n,
18751                  u = n * i,
18752                  p = u + d,
18753                  f = p + u;
18754                c =
18755                  i < 0.5
18756                    ? "L 0 0 L " +
18757                      u +
18758                      " " +
18759                      -o +
18760                      " L " +
18761                      p +
18762                      " " +
18763                      -o +
18764                      " L " +
18765                      f +
18766                      " 0"
18767                    : "L 0 0 L " + p + " " + -o + " L " + f + " 0";
18768                var m = {
18769                  label: "Trapezoid Body",
18770                  position: { x: e, y: t },
18771                  vertices: r.fromPath(c),
18772                };
18773                if (l.chamfer) {
18774                  var v = l.chamfer;
18775                  (m.vertices = r.chamfer(
18776                    m.vertices,
18777                    v.radius,
18778                    v.quality,
18779                    v.qualityMin,
18780                    v.qualityMax,
18781                  )),
18782                    delete l.chamfer;
18783                }
18784                return a.create(s.extend({}, m, l));
18785              }),
18786              (o.circle = function (e, t, n, i, r) {
18787                i = i || {};
18788                var a = { label: "Circle Body", circleRadius: n };
18789                r = r || 25;
18790                var l = Math.ceil(Math.max(10, Math.min(r, n)));
18791                return (
18792                  l % 2 == 1 && (l += 1),
18793                  o.polygon(e, t, l, n, s.extend({}, a, i))
18794                );
18795              }),
18796              (o.polygon = function (e, t, n, i, l) {
18797                if (((l = l || {}), n < 3)) return o.circle(e, t, i, l);
18798                for (
18799                  var c = (2 * Math.PI) / n, d = "", u = 0.5 * c, p = 0;
18800                  p < n;
18801                  p += 1
18802                ) {
18803                  var f = u + p * c,
18804                    m = Math.cos(f) * i,
18805                    v = Math.sin(f) * i;
18806                  d += "L " + m.toFixed(3) + " " + v.toFixed(3) + " ";
18807                }
18808                var y = {
18809                  label: "Polygon Body",
18810                  position: { x: e, y: t },
18811                  vertices: r.fromPath(d),
18812                };
18813                if (l.chamfer) {
18814                  var g = l.chamfer;
18815                  (y.vertices = r.chamfer(
18816                    y.vertices,
18817                    g.radius,
18818                    g.quality,
18819                    g.qualityMin,
18820                    g.qualityMax,
18821                  )),
18822                    delete l.chamfer;
18823                }
18824                return a.create(s.extend({}, y, l));
18825              }),
18826              (o.fromVertices = function (e, t, n, o, d, u, p) {
18827                i || (i = s._requireGlobal("decomp", "poly-decomp"));
18828                var f, m, v, y, g, x, h, b, w;
18829                for (
18830                  o = o || {},
18831                    m = [],
18832                    d = void 0 !== d && d,
18833                    u = void 0 !== u ? u : 0.01,
18834                    p = void 0 !== p ? p : 10,
18835                    i ||
18836                      s.warn(
18837                        "Bodies.fromVertices: poly-decomp.js required. Could not decompose vertices. Fallback to convex hull.",
18838                      ),
18839                    s.isArray(n[0]) || (n = [n]),
18840                    b = 0;
18841                  b < n.length;
18842                  b += 1
18843                )
18844                  if (((y = n[b]), (v = r.isConvex(y)) || !i))
18845                    (y = v ? r.clockwiseSort(y) : r.hull(y)),
18846                      m.push({ position: { x: e, y: t }, vertices: y });
18847                  else {
18848                    var S = y.map(function (e) {
18849                      return [e.x, e.y];
18850                    });
18851                    i.makeCCW(S), !1 !== u && i.removeCollinearPoints(S, u);
18852                    var C = i.quickDecomp(S);
18853                    for (g = 0; g < C.length; g++) {
18854                      var A = C[g],
18855                        P = A.map(function (e) {
18856                          return { x: e[0], y: e[1] };
18857                        });
18858                      (p > 0 && r.area(P) < p) ||
18859                        m.push({ position: r.centre(P), vertices: P });
18860                    }
18861                  }
18862                for (g = 0; g < m.length; g++)
18863                  m[g] = a.create(s.extend(m[g], o));
18864                if (d) {
18865                  for (g = 0; g < m.length; g++) {
18866                    var B = m[g];
18867                    for (x = g + 1; x < m.length; x++) {
18868                      var M = m[x];
18869                      if (l.overlaps(B.bounds, M.bounds)) {
18870                        var k = B.vertices,
18871                          I = M.vertices;
18872                        for (h = 0; h < B.vertices.length; h++)
18873                          for (w = 0; w < M.vertices.length; w++) {
18874                            var _ = c.magnitudeSquared(
18875                                c.sub(k[(h + 1) % k.length], I[w]),
18876                              ),
18877                              T = c.magnitudeSquared(
18878                                c.sub(k[h], I[(w + 1) % I.length]),
18879                              );
18880                            _ < 5 &&
18881                              T < 5 &&
18882                              ((k[h].isInternal = !0), (I[w].isInternal = !0));
18883                          }
18884                      }
18885                    }
18886                  }
18887                }
18888                return m.length > 1
18889                  ? ((f = a.create(s.extend({ parts: m.slice(0) }, o))),
18890                    a.setPosition(f, { x: e, y: t }),
18891                    f)
18892                  : m[0];
18893              });
18894          })();
18895        },
18896        {
18897          "../body/Body": 1,
18898          "../core/Common": 14,
18899          "../geometry/Bounds": 26,
18900          "../geometry/Vector": 28,
18901          "../geometry/Vertices": 29,
18902        },
18903      ],
18904      24: [
18905        function (e, t, n) {
18906          var o = {};
18907          t.exports = o;
18908          var i = e("../body/Composite"),
18909            r = e("../constraint/Constraint"),
18910            s = e("../core/Common"),
18911            a = e("../body/Body"),
18912            l = e("./Bodies");
18913          !(function () {
18914            (o.stack = function (e, t, n, o, r, s, l) {
18915              for (
18916                var c,
18917                  d = i.create({ label: "Stack" }),
18918                  u = e,
18919                  p = t,
18920                  f = 0,
18921                  m = 0;
18922                m < o;
18923                m++
18924              ) {
18925                for (var v = 0, y = 0; y < n; y++) {
18926                  var g = l(u, p, y, m, c, f);
18927                  if (g) {
18928                    var x = g.bounds.max.y - g.bounds.min.y,
18929                      h = g.bounds.max.x - g.bounds.min.x;
18930                    x > v && (v = x),
18931                      a.translate(g, { x: 0.5 * h, y: 0.5 * x }),
18932                      (u = g.bounds.max.x + r),
18933                      i.addBody(d, g),
18934                      (c = g),
18935                      (f += 1);
18936                  } else u += r;
18937                }
18938                (p += v + s), (u = e);
18939              }
18940              return d;
18941            }),
18942              (o.chain = function (e, t, n, o, a, l) {
18943                for (var c = e.bodies, d = 1; d < c.length; d++) {
18944                  var u = c[d - 1],
18945                    p = c[d],
18946                    f = u.bounds.max.y - u.bounds.min.y,
18947                    m = u.bounds.max.x - u.bounds.min.x,
18948                    v = p.bounds.max.y - p.bounds.min.y,
18949                    y = p.bounds.max.x - p.bounds.min.x,
18950                    g = {
18951                      bodyA: u,
18952                      pointA: { x: m * t, y: f * n },
18953                      bodyB: p,
18954                      pointB: { x: y * o, y: v * a },
18955                    },
18956                    x = s.extend(g, l);
18957                  i.addConstraint(e, r.create(x));
18958                }
18959                return (e.label += " Chain"), e;
18960              }),
18961              (o.mesh = function (e, t, n, o, a) {
18962                var l,
18963                  c,
18964                  d,
18965                  u,
18966                  p,
18967                  f = e.bodies;
18968                for (l = 0; l < n; l++) {
18969                  for (c = 1; c < t; c++)
18970                    (d = f[c - 1 + l * t]),
18971                      (u = f[c + l * t]),
18972                      i.addConstraint(
18973                        e,
18974                        r.create(s.extend({ bodyA: d, bodyB: u }, a)),
18975                      );
18976                  if (l > 0)
18977                    for (c = 0; c < t; c++)
18978                      (d = f[c + (l - 1) * t]),
18979                        (u = f[c + l * t]),
18980                        i.addConstraint(
18981                          e,
18982                          r.create(s.extend({ bodyA: d, bodyB: u }, a)),
18983                        ),
18984                        o &&
18985                          c > 0 &&
18986                          ((p = f[c - 1 + (l - 1) * t]),
18987                          i.addConstraint(
18988                            e,
18989                            r.create(s.extend({ bodyA: p, bodyB: u }, a)),
18990                          )),
18991                        o &&
18992                          c < t - 1 &&
18993                          ((p = f[c + 1 + (l - 1) * t]),
18994                          i.addConstraint(
18995                            e,
18996                            r.create(s.extend({ bodyA: p, bodyB: u }, a)),
18997                          ));
18998                }
18999                return (e.label += " Mesh"), e;
19000              }),
19001              (o.pyramid = function (e, t, n, i, r, s, l) {
19002                return o.stack(e, t, n, i, r, s, function (t, o, s, c, d, u) {
19003                  var p = Math.min(i, Math.ceil(n / 2)),
19004                    f = d ? d.bounds.max.x - d.bounds.min.x : 0;
19005                  if (!(c > p)) {
19006                    c = p - c;
19007                    var m = c,
19008                      v = n - 1 - c;
19009                    if (!(s < m || s > v)) {
19010                      1 === u &&
19011                        a.translate(d, {
19012                          x: (s + (n % 2 == 1 ? 1 : -1)) * f,
19013                          y: 0,
19014                        });
19015                      return l(e + (d ? s * f : 0) + s * r, o, s, c, d, u);
19016                    }
19017                  }
19018                });
19019              }),
19020              (o.newtonsCradle = function (e, t, n, o, s) {
19021                for (
19022                  var a = i.create({ label: "Newtons Cradle" }), c = 0;
19023                  c < n;
19024                  c++
19025                ) {
19026                  var d = l.circle(e + c * (1.9 * o), t + s, o, {
19027                      inertia: 1 / 0,
19028                      restitution: 1,
19029                      friction: 0,
19030                      frictionAir: 1e-4,
19031                      slop: 1,
19032                    }),
19033                    u = r.create({
19034                      pointA: { x: e + c * (1.9 * o), y: t },
19035                      bodyB: d,
19036                    });
19037                  i.addBody(a, d), i.addConstraint(a, u);
19038                }
19039                return a;
19040              }),
19041              (o.car = function (e, t, n, o, s) {
19042                var c = a.nextGroup(!0),
19043                  d = 0.5 * -n + 20,
19044                  u = 0.5 * n - 20,
19045                  p = i.create({ label: "Car" }),
19046                  f = l.rectangle(e, t, n, o, {
19047                    collisionFilter: { group: c },
19048                    chamfer: { radius: 0.5 * o },
19049                    density: 2e-4,
19050                  }),
19051                  m = l.circle(e + d, t + 0, s, {
19052                    collisionFilter: { group: c },
19053                    friction: 0.8,
19054                  }),
19055                  v = l.circle(e + u, t + 0, s, {
19056                    collisionFilter: { group: c },
19057                    friction: 0.8,
19058                  }),
19059                  y = r.create({
19060                    bodyB: f,
19061                    pointB: { x: d, y: 0 },
19062                    bodyA: m,
19063                    stiffness: 1,
19064                    length: 0,
19065                  }),
19066                  g = r.create({
19067                    bodyB: f,
19068                    pointB: { x: u, y: 0 },
19069                    bodyA: v,
19070                    stiffness: 1,
19071                    length: 0,
19072                  });
19073                return (
19074                  i.addBody(p, f),
19075                  i.addBody(p, m),
19076                  i.addBody(p, v),
19077                  i.addConstraint(p, y),
19078                  i.addConstraint(p, g),
19079                  p
19080                );
19081              }),
19082              (o.softBody = function (e, t, n, i, r, a, c, d, u, p) {
19083                (u = s.extend({ inertia: 1 / 0 }, u)),
19084                  (p = s.extend(
19085                    { stiffness: 0.2, render: { type: "line", anchors: !1 } },
19086                    p,
19087                  ));
19088                var f = o.stack(e, t, n, i, r, a, function (e, t) {
19089                  return l.circle(e, t, d, u);
19090                });
19091                return o.mesh(f, n, i, c, p), (f.label = "Soft Body"), f;
19092              });
19093          })();
19094        },
19095        {
19096          "../body/Body": 1,
19097          "../body/Composite": 2,
19098          "../constraint/Constraint": 12,
19099          "../core/Common": 14,
19100          "./Bodies": 23,
19101        },
19102      ],
19103      25: [
19104        function (e, t, n) {
19105          var o = {};
19106          t.exports = o;
19107          var i = e("../geometry/Vector"),
19108            r = e("../core/Common");
19109          !(function () {
19110            (o.fromVertices = function (e) {
19111              for (var t = {}, n = 0; n < e.length; n++) {
19112                var o = (n + 1) % e.length,
19113                  s = i.normalise({ x: e[o].y - e[n].y, y: e[n].x - e[o].x }),
19114                  a = 0 === s.y ? 1 / 0 : s.x / s.y;
19115                (a = a.toFixed(3).toString()), (t[a] = s);
19116              }
19117              return r.values(t);
19118            }),
19119              (o.rotate = function (e, t) {
19120                if (0 !== t)
19121                  for (
19122                    var n = Math.cos(t), o = Math.sin(t), i = 0;
19123                    i < e.length;
19124                    i++
19125                  ) {
19126                    var r,
19127                      s = e[i];
19128                    (r = s.x * n - s.y * o),
19129                      (s.y = s.x * o + s.y * n),
19130                      (s.x = r);
19131                  }
19132              });
19133          })();
19134        },
19135        { "../core/Common": 14, "../geometry/Vector": 28 },
19136      ],
19137      26: [
19138        function (e, t, n) {
19139          var o = {};
19140          (t.exports = o),
19141            (function () {
19142              (o.create = function (e) {
19143                var t = { min: { x: 0, y: 0 }, max: { x: 0, y: 0 } };
19144                return e && o.update(t, e), t;
19145              }),
19146                (o.update = function (e, t, n) {
19147                  (e.min.x = 1 / 0),
19148                    (e.max.x = -1 / 0),
19149                    (e.min.y = 1 / 0),
19150                    (e.max.y = -1 / 0);
19151                  for (var o = 0; o < t.length; o++) {
19152                    var i = t[o];
19153                    i.x > e.max.x && (e.max.x = i.x),
19154                      i.x < e.min.x && (e.min.x = i.x),
19155                      i.y > e.max.y && (e.max.y = i.y),
19156                      i.y < e.min.y && (e.min.y = i.y);
19157                  }
19158                  n &&
19159                    (n.x > 0 ? (e.max.x += n.x) : (e.min.x += n.x),
19160                    n.y > 0 ? (e.max.y += n.y) : (e.min.y += n.y));
19161                }),
19162                (o.contains = function (e, t) {
19163                  return (
19164                    t.x >= e.min.x &&
19165                    t.x <= e.max.x &&
19166                    t.y >= e.min.y &&
19167                    t.y <= e.max.y
19168                  );
19169                }),
19170                (o.overlaps = function (e, t) {
19171                  return (
19172                    e.min.x <= t.max.x &&
19173                    e.max.x >= t.min.x &&
19174                    e.max.y >= t.min.y &&
19175                    e.min.y <= t.max.y
19176                  );
19177                }),
19178                (o.translate = function (e, t) {
19179                  (e.min.x += t.x),
19180                    (e.max.x += t.x),
19181                    (e.min.y += t.y),
19182                    (e.max.y += t.y);
19183                }),
19184                (o.shift = function (e, t) {
19185                  var n = e.max.x - e.min.x,
19186                    o = e.max.y - e.min.y;
19187                  (e.min.x = t.x),
19188                    (e.max.x = t.x + n),
19189                    (e.min.y = t.y),
19190                    (e.max.y = t.y + o);
19191                });
19192            })();
19193        },
19194        {},
19195      ],
19196      27: [
19197        function (e, t, n) {
19198          var o = {};
19199          t.exports = o;
19200          var i = (e("../geometry/Bounds"), e("../core/Common"));
19201          !(function () {
19202            (o.pathToVertices = function (e, t) {
19203              "undefined" == typeof window ||
19204                "SVGPathSeg" in window ||
19205                i.warn(
19206                  "Svg.pathToVertices: SVGPathSeg not defined, a polyfill is required.",
19207                );
19208              var n,
19209                r,
19210                s,
19211                a,
19212                l,
19213                c,
19214                d,
19215                u,
19216                p,
19217                f,
19218                m,
19219                v,
19220                y = [],
19221                g = 0,
19222                x = 0,
19223                h = 0;
19224              t = t || 15;
19225              var b = function (e, t, n) {
19226                  var o = n % 2 == 1 && n > 1;
19227                  if (!p || e != p.x || t != p.y) {
19228                    p && o ? ((m = p.x), (v = p.y)) : ((m = 0), (v = 0));
19229                    var i = { x: m + e, y: v + t };
19230                    (!o && p) || (p = i), y.push(i), (x = m + e), (h = v + t);
19231                  }
19232                },
19233                w = function (e) {
19234                  var t = e.pathSegTypeAsLetter.toUpperCase();
19235                  if ("Z" !== t) {
19236                    switch (t) {
19237                      case "M":
19238                      case "L":
19239                      case "T":
19240                      case "C":
19241                      case "S":
19242                      case "Q":
19243                        (x = e.x), (h = e.y);
19244                        break;
19245                      case "H":
19246                        x = e.x;
19247                        break;
19248                      case "V":
19249                        h = e.y;
19250                    }
19251                    b(x, h, e.pathSegType);
19252                  }
19253                };
19254              for (
19255                o._svgPathToAbsolute(e), s = e.getTotalLength(), c = [], n = 0;
19256                n < e.pathSegList.numberOfItems;
19257                n += 1
19258              )
19259                c.push(e.pathSegList.getItem(n));
19260              for (d = c.concat(); g < s; ) {
19261                if (((f = e.getPathSegAtLength(g)), (l = c[f]) != u)) {
19262                  for (; d.length && d[0] != l; ) w(d.shift());
19263                  u = l;
19264                }
19265                switch (l.pathSegTypeAsLetter.toUpperCase()) {
19266                  case "C":
19267                  case "T":
19268                  case "S":
19269                  case "Q":
19270                  case "A":
19271                    (a = e.getPointAtLength(g)), b(a.x, a.y, 0);
19272                }
19273                g += t;
19274              }
19275              for (n = 0, r = d.length; n < r; ++n) w(d[n]);
19276              return y;
19277            }),
19278              (o._svgPathToAbsolute = function (e) {
19279                for (
19280                  var t,
19281                    n,
19282                    o,
19283                    i,
19284                    r,
19285                    s,
19286                    a = e.pathSegList,
19287                    l = 0,
19288                    c = 0,
19289                    d = a.numberOfItems,
19290                    u = 0;
19291                  u < d;
19292                  ++u
19293                ) {
19294                  var p = a.getItem(u),
19295                    f = p.pathSegTypeAsLetter;
19296                  if (/[MLHVCSQTA]/.test(f))
19297                    "x" in p && (l = p.x), "y" in p && (c = p.y);
19298                  else
19299                    switch (
19300                      ("x1" in p && (o = l + p.x1),
19301                      "x2" in p && (r = l + p.x2),
19302                      "y1" in p && (i = c + p.y1),
19303                      "y2" in p && (s = c + p.y2),
19304                      "x" in p && (l += p.x),
19305                      "y" in p && (c += p.y),
19306                      f)
19307                    ) {
19308                      case "m":
19309                        a.replaceItem(e.createSVGPathSegMovetoAbs(l, c), u);
19310                        break;
19311                      case "l":
19312                        a.replaceItem(e.createSVGPathSegLinetoAbs(l, c), u);
19313                        break;
19314                      case "h":
19315                        a.replaceItem(
19316                          e.createSVGPathSegLinetoHorizontalAbs(l),
19317                          u,
19318                        );
19319                        break;
19320                      case "v":
19321                        a.replaceItem(
19322                          e.createSVGPathSegLinetoVerticalAbs(c),
19323                          u,
19324                        );
19325                        break;
19326                      case "c":
19327                        a.replaceItem(
19328                          e.createSVGPathSegCurvetoCubicAbs(l, c, o, i, r, s),
19329                          u,
19330                        );
19331                        break;
19332                      case "s":
19333                        a.replaceItem(
19334                          e.createSVGPathSegCurvetoCubicSmoothAbs(l, c, r, s),
19335                          u,
19336                        );
19337                        break;
19338                      case "q":
19339                        a.replaceItem(
19340                          e.createSVGPathSegCurvetoQuadraticAbs(l, c, o, i),
19341                          u,
19342                        );
19343                        break;
19344                      case "t":
19345                        a.replaceItem(
19346                          e.createSVGPathSegCurvetoQuadraticSmoothAbs(l, c),
19347                          u,
19348                        );
19349                        break;
19350                      case "a":
19351                        a.replaceItem(
19352                          e.createSVGPathSegArcAbs(
19353                            l,
19354                            c,
19355                            p.r1,
19356                            p.r2,
19357                            p.angle,
19358                            p.largeArcFlag,
19359                            p.sweepFlag,
19360                          ),
19361                          u,
19362                        );
19363                        break;
19364                      case "z":
19365                      case "Z":
19366                        (l = t), (c = n);
19367                    }
19368                  ("M" != f && "m" != f) || ((t = l), (n = c));
19369                }
19370              });
19371          })();
19372        },
19373        { "../core/Common": 14, "../geometry/Bounds": 26 },
19374      ],
19375      28: [
19376        function (e, t, n) {
19377          var o = {};
19378          (t.exports = o),
19379            (function () {
19380              (o.create = function (e, t) {
19381                return { x: e || 0, y: t || 0 };
19382              }),
19383                (o.clone = function (e) {
19384                  return { x: e.x, y: e.y };
19385                }),
19386                (o.magnitude = function (e) {
19387                  return Math.sqrt(e.x * e.x + e.y * e.y);
19388                }),
19389                (o.magnitudeSquared = function (e) {
19390                  return e.x * e.x + e.y * e.y;
19391                }),
19392                (o.rotate = function (e, t, n) {
19393                  var o = Math.cos(t),
19394                    i = Math.sin(t);
19395                  n || (n = {});
19396                  var r = e.x * o - e.y * i;
19397                  return (n.y = e.x * i + e.y * o), (n.x = r), n;
19398                }),
19399                (o.rotateAbout = function (e, t, n, o) {
19400                  var i = Math.cos(t),
19401                    r = Math.sin(t);
19402                  o || (o = {});
19403                  var s = n.x + ((e.x - n.x) * i - (e.y - n.y) * r);
19404                  return (
19405                    (o.y = n.y + ((e.x - n.x) * r + (e.y - n.y) * i)),
19406                    (o.x = s),
19407                    o
19408                  );
19409                }),
19410                (o.normalise = function (e) {
19411                  var t = o.magnitude(e);
19412                  return 0 === t ? { x: 0, y: 0 } : { x: e.x / t, y: e.y / t };
19413                }),
19414                (o.dot = function (e, t) {
19415                  return e.x * t.x + e.y * t.y;
19416                }),
19417                (o.cross = function (e, t) {
19418                  return e.x * t.y - e.y * t.x;
19419                }),
19420                (o.cross3 = function (e, t, n) {
19421                  return (t.x - e.x) * (n.y - e.y) - (t.y - e.y) * (n.x - e.x);
19422                }),
19423                (o.add = function (e, t, n) {
19424                  return n || (n = {}), (n.x = e.x + t.x), (n.y = e.y + t.y), n;
19425                }),
19426                (o.sub = function (e, t, n) {
19427                  return n || (n = {}), (n.x = e.x - t.x), (n.y = e.y - t.y), n;
19428                }),
19429                (o.mult = function (e, t) {
19430                  return { x: e.x * t, y: e.y * t };
19431                }),
19432                (o.div = function (e, t) {
19433                  return { x: e.x / t, y: e.y / t };
19434                }),
19435                (o.perp = function (e, t) {
19436                  return (t = !0 === t ? -1 : 1), { x: t * -e.y, y: t * e.x };
19437                }),
19438                (o.neg = function (e) {
19439                  return { x: -e.x, y: -e.y };
19440                }),
19441                (o.angle = function (e, t) {
19442                  return Math.atan2(t.y - e.y, t.x - e.x);
19443                }),
19444                (o._temp = [
19445                  o.create(),
19446                  o.create(),
19447                  o.create(),
19448                  o.create(),
19449                  o.create(),
19450                  o.create(),
19451                ]);
19452            })();
19453        },
19454        {},
19455      ],
19456      29: [
19457        function (e, t, n) {
19458          var o = {};
19459          t.exports = o;
19460          var i = e("../geometry/Vector"),
19461            r = e("../core/Common");
19462          !(function () {
19463            (o.create = function (e, t) {
19464              for (var n = [], o = 0; o < e.length; o++) {
19465                var i = e[o],
19466                  r = { x: i.x, y: i.y, index: o, body: t, isInternal: !1 };
19467                n.push(r);
19468              }
19469              return n;
19470            }),
19471              (o.fromPath = function (e, t) {
19472                var n = /L?\s*([\-\d\.e]+)[\s,]*([\-\d\.e]+)*/gi,
19473                  i = [];
19474                return (
19475                  e.replace(n, function (e, t, n) {
19476                    i.push({ x: parseFloat(t), y: parseFloat(n) });
19477                  }),
19478                  o.create(i, t)
19479                );
19480              }),
19481              (o.centre = function (e) {
19482                for (
19483                  var t, n, r, s = o.area(e, !0), a = { x: 0, y: 0 }, l = 0;
19484                  l < e.length;
19485                  l++
19486                )
19487                  (r = (l + 1) % e.length),
19488                    (t = i.cross(e[l], e[r])),
19489                    (n = i.mult(i.add(e[l], e[r]), t)),
19490                    (a = i.add(a, n));
19491                return i.div(a, 6 * s);
19492              }),
19493              (o.mean = function (e) {
19494                for (var t = { x: 0, y: 0 }, n = 0; n < e.length; n++)
19495                  (t.x += e[n].x), (t.y += e[n].y);
19496                return i.div(t, e.length);
19497              }),
19498              (o.area = function (e, t) {
19499                for (var n = 0, o = e.length - 1, i = 0; i < e.length; i++)
19500                  (n += (e[o].x - e[i].x) * (e[o].y + e[i].y)), (o = i);
19501                return t ? n / 2 : Math.abs(n) / 2;
19502              }),
19503              (o.inertia = function (e, t) {
19504                for (var n, o, r = 0, s = 0, a = e, l = 0; l < a.length; l++)
19505                  (o = (l + 1) % a.length),
19506                    (n = Math.abs(i.cross(a[o], a[l]))),
19507                    (r +=
19508                      n *
19509                      (i.dot(a[o], a[o]) +
19510                        i.dot(a[o], a[l]) +
19511                        i.dot(a[l], a[l]))),
19512                    (s += n);
19513                return (t / 6) * (r / s);
19514              }),
19515              (o.translate = function (e, t, n) {
19516                var o;
19517                if (n)
19518                  for (o = 0; o < e.length; o++)
19519                    (e[o].x += t.x * n), (e[o].y += t.y * n);
19520                else
19521                  for (o = 0; o < e.length; o++)
19522                    (e[o].x += t.x), (e[o].y += t.y);
19523                return e;
19524              }),
19525              (o.rotate = function (e, t, n) {
19526                if (0 !== t) {
19527                  for (
19528                    var o = Math.cos(t), i = Math.sin(t), r = 0;
19529                    r < e.length;
19530                    r++
19531                  ) {
19532                    var s = e[r],
19533                      a = s.x - n.x,
19534                      l = s.y - n.y;
19535                    (s.x = n.x + (a * o - l * i)),
19536                      (s.y = n.y + (a * i + l * o));
19537                  }
19538                  return e;
19539                }
19540              }),
19541              (o.contains = function (e, t) {
19542                for (var n = 0; n < e.length; n++) {
19543                  var o = e[n],
19544                    i = e[(n + 1) % e.length];
19545                  if ((t.x - o.x) * (i.y - o.y) + (t.y - o.y) * (o.x - i.x) > 0)
19546                    return !1;
19547                }
19548                return !0;
19549              }),
19550              (o.scale = function (e, t, n, r) {
19551                if (1 === t && 1 === n) return e;
19552                r = r || o.centre(e);
19553                for (var s, a, l = 0; l < e.length; l++)
19554                  (s = e[l]),
19555                    (a = i.sub(s, r)),
19556                    (e[l].x = r.x + a.x * t),
19557                    (e[l].y = r.y + a.y * n);
19558                return e;
19559              }),
19560              (o.chamfer = function (e, t, n, o, s) {
19561                (t = "number" == typeof t ? [t] : t || [8]),
19562                  (n = void 0 !== n ? n : -1),
19563                  (o = o || 2),
19564                  (s = s || 14);
19565                for (var a = [], l = 0; l < e.length; l++) {
19566                  var c = e[l - 1 >= 0 ? l - 1 : e.length - 1],
19567                    d = e[l],
19568                    u = e[(l + 1) % e.length],
19569                    p = t[l < t.length ? l : t.length - 1];
19570                  if (0 !== p) {
19571                    var f = i.normalise({ x: d.y - c.y, y: c.x - d.x }),
19572                      m = i.normalise({ x: u.y - d.y, y: d.x - u.x }),
19573                      v = Math.sqrt(2 * Math.pow(p, 2)),
19574                      y = i.mult(r.clone(f), p),
19575                      g = i.normalise(i.mult(i.add(f, m), 0.5)),
19576                      x = i.sub(d, i.mult(g, v)),
19577                      h = n;
19578                    -1 === n && (h = 1.75 * Math.pow(p, 0.32)),
19579                      (h = r.clamp(h, o, s)),
19580                      h % 2 == 1 && (h += 1);
19581                    for (
19582                      var b = Math.acos(i.dot(f, m)), w = b / h, S = 0;
19583                      S < h;
19584                      S++
19585                    )
19586                      a.push(i.add(i.rotate(y, w * S), x));
19587                  } else a.push(d);
19588                }
19589                return a;
19590              }),
19591              (o.clockwiseSort = function (e) {
19592                var t = o.mean(e);
19593                return (
19594                  e.sort(function (e, n) {
19595                    return i.angle(t, e) - i.angle(t, n);
19596                  }),
19597                  e
19598                );
19599              }),
19600              (o.isConvex = function (e) {
19601                var t,
19602                  n,
19603                  o,
19604                  i,
19605                  r = 0,
19606                  s = e.length;
19607                if (s < 3) return null;
19608                for (t = 0; t < s; t++)
19609                  if (
19610                    ((n = (t + 1) % s),
19611                    (o = (t + 2) % s),
19612                    (i = (e[n].x - e[t].x) * (e[o].y - e[n].y)),
19613                    (i -= (e[n].y - e[t].y) * (e[o].x - e[n].x)),
19614                    i < 0 ? (r |= 1) : i > 0 && (r |= 2),
19615                    3 === r)
19616                  )
19617                    return !1;
19618                return 0 !== r || null;
19619              }),
19620              (o.hull = function (e) {
19621                var t,
19622                  n,
19623                  o = [],
19624                  r = [];
19625                for (
19626                  e = e.slice(0),
19627                    e.sort(function (e, t) {
19628                      var n = e.x - t.x;
19629                      return 0 !== n ? n : e.y - t.y;
19630                    }),
19631                    n = 0;
19632                  n < e.length;
19633                  n += 1
19634                ) {
19635                  for (
19636                    t = e[n];
19637                    r.length >= 2 &&
19638                    i.cross3(r[r.length - 2], r[r.length - 1], t) <= 0;
19639
19640                  )
19641                    r.pop();
19642                  r.push(t);
19643                }
19644                for (n = e.length - 1; n >= 0; n -= 1) {
19645                  for (
19646                    t = e[n];
19647                    o.length >= 2 &&
19648                    i.cross3(o[o.length - 2], o[o.length - 1], t) <= 0;
19649
19650                  )
19651                    o.pop();
19652                  o.push(t);
19653                }
19654                return o.pop(), r.pop(), o.concat(r);
19655              });
19656          })();
19657        },
19658        { "../core/Common": 14, "../geometry/Vector": 28 },
19659      ],
19660      30: [
19661        function (e, t, n) {
19662          var o = (t.exports = e("../core/Matter"));
19663          (o.Body = e("../body/Body")),
19664            (o.Composite = e("../body/Composite")),
19665            (o.World = e("../body/World")),
19666            (o.Contact = e("../collision/Contact")),
19667            (o.Detector = e("../collision/Detector")),
19668            (o.Grid = e("../collision/Grid")),
19669            (o.Pairs = e("../collision/Pairs")),
19670            (o.Pair = e("../collision/Pair")),
19671            (o.Query = e("../collision/Query")),
19672            (o.Resolver = e("../collision/Resolver")),
19673            (o.SAT = e("../collision/SAT")),
19674            (o.Constraint = e("../constraint/Constraint")),
19675            (o.MouseConstraint = e("../constraint/MouseConstraint")),
19676            (o.Common = e("../core/Common")),
19677            (o.Engine = e("../core/Engine")),
19678            (o.Events = e("../core/Events")),
19679            (o.Mouse = e("../core/Mouse")),
19680            (o.Runner = e("../core/Runner")),
19681            (o.Sleeping = e("../core/Sleeping")),
19682            (o.Plugin = e("../core/Plugin")),
19683            (o.Bodies = e("../factory/Bodies")),
19684            (o.Composites = e("../factory/Composites")),
19685            (o.Axes = e("../geometry/Axes")),
19686            (o.Bounds = e("../geometry/Bounds")),
19687            (o.Svg = e("../geometry/Svg")),
19688            (o.Vector = e("../geometry/Vector")),
19689            (o.Vertices = e("../geometry/Vertices")),
19690            (o.Render = e("../render/Render")),
19691            (o.RenderPixi = e("../render/RenderPixi")),
19692            (o.World.add = o.Composite.add),
19693            (o.World.remove = o.Composite.remove),
19694            (o.World.addComposite = o.Composite.addComposite),
19695            (o.World.addBody = o.Composite.addBody),
19696            (o.World.addConstraint = o.Composite.addConstraint),
19697            (o.World.clear = o.Composite.clear),
19698            (o.Engine.run = o.Runner.run);
19699        },
19700        {
19701          "../body/Body": 1,
19702          "../body/Composite": 2,
19703          "../body/World": 3,
19704          "../collision/Contact": 4,
19705          "../collision/Detector": 5,
19706          "../collision/Grid": 6,
19707          "../collision/Pair": 7,
19708          "../collision/Pairs": 8,
19709          "../collision/Query": 9,
19710          "../collision/Resolver": 10,
19711          "../collision/SAT": 11,
19712          "../constraint/Constraint": 12,
19713          "../constraint/MouseConstraint": 13,
19714          "../core/Common": 14,
19715          "../core/Engine": 15,
19716          "../core/Events": 16,
19717          "../core/Matter": 17,
19718          "../core/Metrics": 18,
19719          "../core/Mouse": 19,
19720          "../core/Plugin": 20,
19721          "../core/Runner": 21,
19722          "../core/Sleeping": 22,
19723          "../factory/Bodies": 23,
19724          "../factory/Composites": 24,
19725          "../geometry/Axes": 25,
19726          "../geometry/Bounds": 26,
19727          "../geometry/Svg": 27,
19728          "../geometry/Vector": 28,
19729          "../geometry/Vertices": 29,
19730          "../render/Render": 31,
19731          "../render/RenderPixi": 32,
19732        },
19733      ],
19734      31: [
19735        function (e, t, n) {
19736          var o = {};
19737          t.exports = o;
19738          var i = e("../core/Common"),
19739            r = e("../body/Composite"),
19740            s = e("../geometry/Bounds"),
19741            a = e("../core/Events"),
19742            l = e("../collision/Grid"),
19743            c = e("../geometry/Vector"),
19744            d = e("../core/Mouse");
19745          !(function () {
19746            var e, t;
19747            "undefined" != typeof window &&
19748              ((e =
19749                window.requestAnimationFrame ||
19750                window.webkitRequestAnimationFrame ||
19751                window.mozRequestAnimationFrame ||
19752                window.msRequestAnimationFrame ||
19753                function (e) {
19754                  window.setTimeout(function () {
19755                    e(i.now());
19756                  }, 1e3 / 60);
19757                }),
19758              (t =
19759                window.cancelAnimationFrame ||
19760                window.mozCancelAnimationFrame ||
19761                window.webkitCancelAnimationFrame ||
19762                window.msCancelAnimationFrame)),
19763              (o.create = function (e) {
19764                var t = {
19765                    controller: o,
19766                    engine: null,
19767                    element: null,
19768                    canvas: null,
19769                    mouse: null,
19770                    frameRequestId: null,
19771                    options: {
19772                      width: 800,
19773                      height: 600,
19774                      pixelRatio: 1,
19775                      background: "#18181d",
19776                      wireframeBackground: "#0f0f13",
19777                      hasBounds: !!e.bounds,
19778                      enabled: !0,
19779                      wireframes: !0,
19780                      showSleeping: !0,
19781                      showDebug: !1,
19782                      showBroadphase: !1,
19783                      showBounds: !1,
19784                      showVelocity: !1,
19785                      showCollisions: !1,
19786                      showSeparations: !1,
19787                      showAxes: !1,
19788                      showPositions: !1,
19789                      showAngleIndicator: !1,
19790                      showIds: !1,
19791                      showShadows: !1,
19792                      showVertexNumbers: !1,
19793                      showConvexHulls: !1,
19794                      showInternalEdges: !1,
19795                      showMousePosition: !1,
19796                    },
19797                  },
19798                  r = i.extend(t, e);
19799                return (
19800                  r.canvas &&
19801                    ((r.canvas.width = r.options.width || r.canvas.width),
19802                    (r.canvas.height = r.options.height || r.canvas.height)),
19803                  (r.mouse = e.mouse),
19804                  (r.engine = e.engine),
19805                  (r.canvas = r.canvas || n(r.options.width, r.options.height)),
19806                  (r.context = r.canvas.getContext("2d")),
19807                  (r.textures = {}),
19808                  (r.bounds = r.bounds || {
19809                    min: { x: 0, y: 0 },
19810                    max: { x: r.canvas.width, y: r.canvas.height },
19811                  }),
19812                  1 !== r.options.pixelRatio &&
19813                    o.setPixelRatio(r, r.options.pixelRatio),
19814                  i.isElement(r.element)
19815                    ? r.element.appendChild(r.canvas)
19816                    : r.canvas.parentNode ||
19817                      i.log(
19818                        "Render.create: options.element was undefined, render.canvas was created but not appended",
19819                        "warn",
19820                      ),
19821                  r
19822                );
19823              }),
19824              (o.run = function (t) {
19825                !(function n(i) {
19826                  (t.frameRequestId = e(n)), o.world(t);
19827                })();
19828              }),
19829              (o.stop = function (e) {
19830                t(e.frameRequestId);
19831              }),
19832              (o.setPixelRatio = function (e, t) {
19833                var n = e.options,
19834                  o = e.canvas;
19835                "auto" === t && (t = u(o)),
19836                  (n.pixelRatio = t),
19837                  o.setAttribute("data-pixel-ratio", t),
19838                  (o.width = n.width * t),
19839                  (o.height = n.height * t),
19840                  (o.style.width = n.width + "px"),
19841                  (o.style.height = n.height + "px"),
19842                  e.context.scale(t, t);
19843              }),
19844              (o.lookAt = function (e, t, n, o) {
19845                (o = void 0 === o || o),
19846                  (t = i.isArray(t) ? t : [t]),
19847                  (n = n || { x: 0, y: 0 });
19848                for (
19849                  var r = {
19850                      min: { x: 1 / 0, y: 1 / 0 },
19851                      max: { x: -1 / 0, y: -1 / 0 },
19852                    },
19853                    s = 0;
19854                  s < t.length;
19855                  s += 1
19856                ) {
19857                  var a = t[s],
19858                    l = a.bounds ? a.bounds.min : a.min || a.position || a,
19859                    c = a.bounds ? a.bounds.max : a.max || a.position || a;
19860                  l &&
19861                    c &&
19862                    (l.x < r.min.x && (r.min.x = l.x),
19863                    c.x > r.max.x && (r.max.x = c.x),
19864                    l.y < r.min.y && (r.min.y = l.y),
19865                    c.y > r.max.y && (r.max.y = c.y));
19866                }
19867                var u = r.max.x - r.min.x + 2 * n.x,
19868                  p = r.max.y - r.min.y + 2 * n.y,
19869                  f = e.canvas.height,
19870                  m = e.canvas.width,
19871                  v = m / f,
19872                  y = u / p,
19873                  g = 1,
19874                  x = 1;
19875                y > v ? (x = y / v) : (g = v / y),
19876                  (e.options.hasBounds = !0),
19877                  (e.bounds.min.x = r.min.x),
19878                  (e.bounds.max.x = r.min.x + u * g),
19879                  (e.bounds.min.y = r.min.y),
19880                  (e.bounds.max.y = r.min.y + p * x),
19881                  o &&
19882                    ((e.bounds.min.x += 0.5 * u - u * g * 0.5),
19883                    (e.bounds.max.x += 0.5 * u - u * g * 0.5),
19884                    (e.bounds.min.y += 0.5 * p - p * x * 0.5),
19885                    (e.bounds.max.y += 0.5 * p - p * x * 0.5)),
19886                  (e.bounds.min.x -= n.x),
19887                  (e.bounds.max.x -= n.x),
19888                  (e.bounds.min.y -= n.y),
19889                  (e.bounds.max.y -= n.y),
19890                  e.mouse &&
19891                    (d.setScale(e.mouse, {
19892                      x: (e.bounds.max.x - e.bounds.min.x) / e.canvas.width,
19893                      y: (e.bounds.max.y - e.bounds.min.y) / e.canvas.height,
19894                    }),
19895                    d.setOffset(e.mouse, e.bounds.min));
19896              }),
19897              (o.startViewTransform = function (e) {
19898                var t = e.bounds.max.x - e.bounds.min.x,
19899                  n = e.bounds.max.y - e.bounds.min.y,
19900                  o = t / e.options.width,
19901                  i = n / e.options.height;
19902                e.context.scale(1 / o, 1 / i),
19903                  e.context.translate(-e.bounds.min.x, -e.bounds.min.y);
19904              }),
19905              (o.endViewTransform = function (e) {
19906                e.context.setTransform(
19907                  e.options.pixelRatio,
19908                  0,
19909                  0,
19910                  e.options.pixelRatio,
19911                  0,
19912                  0,
19913                );
19914              }),
19915              (o.world = function (e) {
19916                var t,
19917                  n = e.engine,
19918                  i = n.world,
19919                  u = e.canvas,
19920                  p = e.context,
19921                  m = e.options,
19922                  v = r.allBodies(i),
19923                  y = r.allConstraints(i),
19924                  g = m.wireframes ? m.wireframeBackground : m.background,
19925                  x = [],
19926                  h = [],
19927                  b = { timestamp: n.timing.timestamp };
19928                if (
19929                  (a.trigger(e, "beforeRender", b),
19930                  e.currentBackground !== g && f(e, g),
19931                  (p.globalCompositeOperation = "source-in"),
19932                  (p.fillStyle = "transparent"),
19933                  p.fillRect(0, 0, u.width, u.height),
19934                  (p.globalCompositeOperation = "source-over"),
19935                  m.hasBounds)
19936                ) {
19937                  for (t = 0; t < v.length; t++) {
19938                    var w = v[t];
19939                    s.overlaps(w.bounds, e.bounds) && x.push(w);
19940                  }
19941                  for (t = 0; t < y.length; t++) {
19942                    var S = y[t],
19943                      C = S.bodyA,
19944                      A = S.bodyB,
19945                      P = S.pointA,
19946                      B = S.pointB;
19947                    C && (P = c.add(C.position, S.pointA)),
19948                      A && (B = c.add(A.position, S.pointB)),
19949                      P &&
19950                        B &&
19951                        (s.contains(e.bounds, P) || s.contains(e.bounds, B)) &&
19952                        h.push(S);
19953                  }
19954                  o.startViewTransform(e),
19955                    e.mouse &&
19956                      (d.setScale(e.mouse, {
19957                        x: (e.bounds.max.x - e.bounds.min.x) / e.canvas.width,
19958                        y: (e.bounds.max.y - e.bounds.min.y) / e.canvas.height,
19959                      }),
19960                      d.setOffset(e.mouse, e.bounds.min));
19961                } else (h = y), (x = v);
19962                !m.wireframes || (n.enableSleeping && m.showSleeping)
19963                  ? o.bodies(e, x, p)
19964                  : (m.showConvexHulls && o.bodyConvexHulls(e, x, p),
19965                    o.bodyWireframes(e, x, p)),
19966                  m.showBounds && o.bodyBounds(e, x, p),
19967                  (m.showAxes || m.showAngleIndicator) && o.bodyAxes(e, x, p),
19968                  m.showPositions && o.bodyPositions(e, x, p),
19969                  m.showVelocity && o.bodyVelocity(e, x, p),
19970                  m.showIds && o.bodyIds(e, x, p),
19971                  m.showSeparations && o.separations(e, n.pairs.list, p),
19972                  m.showCollisions && o.collisions(e, n.pairs.list, p),
19973                  m.showVertexNumbers && o.vertexNumbers(e, x, p),
19974                  m.showMousePosition && o.mousePosition(e, e.mouse, p),
19975                  o.constraints(h, p),
19976                  m.showBroadphase &&
19977                    n.broadphase.controller === l &&
19978                    o.grid(e, n.broadphase, p),
19979                  m.showDebug && o.debug(e, p),
19980                  m.hasBounds && o.endViewTransform(e),
19981                  a.trigger(e, "afterRender", b);
19982              }),
19983              (o.debug = function (e, t) {
19984                var n = t,
19985                  o = e.engine,
19986                  i = o.world,
19987                  s = o.metrics,
19988                  a = e.options;
19989                r.allBodies(i);
19990                if (o.timing.timestamp - (e.debugTimestamp || 0) >= 500) {
19991                  var l = "";
19992                  s.timing &&
19993                    (l += "fps: " + Math.round(s.timing.fps) + "    "),
19994                    (e.debugString = l),
19995                    (e.debugTimestamp = o.timing.timestamp);
19996                }
19997                if (e.debugString) {
19998                  (n.font = "12px Arial"),
19999                    a.wireframes
20000                      ? (n.fillStyle = "rgba(255,255,255,0.5)")
20001                      : (n.fillStyle = "rgba(0,0,0,0.5)");
20002                  for (
20003                    var c = e.debugString.split("\n"), d = 0;
20004                    d < c.length;
20005                    d++
20006                  )
20007                    n.fillText(c[d], 50, 50 + 18 * d);
20008                }
20009              }),
20010              (o.constraints = function (e, t) {
20011                for (var n = t, o = 0; o < e.length; o++) {
20012                  var r = e[o];
20013                  if (r.render.visible && r.pointA && r.pointB) {
20014                    var s,
20015                      a,
20016                      l = r.bodyA,
20017                      d = r.bodyB;
20018                    if (
20019                      ((s = l ? c.add(l.position, r.pointA) : r.pointA),
20020                      "pin" === r.render.type)
20021                    )
20022                      n.beginPath(),
20023                        n.arc(s.x, s.y, 3, 0, 2 * Math.PI),
20024                        n.closePath();
20025                    else {
20026                      if (
20027                        ((a = d ? c.add(d.position, r.pointB) : r.pointB),
20028                        n.beginPath(),
20029                        n.moveTo(s.x, s.y),
20030                        "spring" === r.render.type)
20031                      )
20032                        for (
20033                          var u,
20034                            p = c.sub(a, s),
20035                            f = c.perp(c.normalise(p)),
20036                            m = Math.ceil(i.clamp(r.length / 5, 12, 20)),
20037                            v = 1;
20038                          v < m;
20039                          v += 1
20040                        )
20041                          (u = v % 2 == 0 ? 1 : -1),
20042                            n.lineTo(
20043                              s.x + p.x * (v / m) + f.x * u * 4,
20044                              s.y + p.y * (v / m) + f.y * u * 4,
20045                            );
20046                      n.lineTo(a.x, a.y);
20047                    }
20048                    r.render.lineWidth &&
20049                      ((n.lineWidth = r.render.lineWidth),
20050                      (n.strokeStyle = r.render.strokeStyle),
20051                      n.stroke()),
20052                      r.render.anchors &&
20053                        ((n.fillStyle = r.render.strokeStyle),
20054                        n.beginPath(),
20055                        n.arc(s.x, s.y, 3, 0, 2 * Math.PI),
20056                        n.arc(a.x, a.y, 3, 0, 2 * Math.PI),
20057                        n.closePath(),
20058                        n.fill());
20059                  }
20060                }
20061              }),
20062              (o.bodyShadows = function (e, t, n) {
20063                for (var o = n, i = (e.engine, 0); i < t.length; i++) {
20064                  var r = t[i];
20065                  if (r.render.visible) {
20066                    if (r.circleRadius)
20067                      o.beginPath(),
20068                        o.arc(
20069                          r.position.x,
20070                          r.position.y,
20071                          r.circleRadius,
20072                          0,
20073                          2 * Math.PI,
20074                        ),
20075                        o.closePath();
20076                    else {
20077                      o.beginPath(), o.moveTo(r.vertices[0].x, r.vertices[0].y);
20078                      for (var s = 1; s < r.vertices.length; s++)
20079                        o.lineTo(r.vertices[s].x, r.vertices[s].y);
20080                      o.closePath();
20081                    }
20082                    var a = r.position.x - 0.5 * e.options.width,
20083                      l = r.position.y - 0.2 * e.options.height,
20084                      c = Math.abs(a) + Math.abs(l);
20085                    (o.shadowColor = "rgba(0,0,0,0.15)"),
20086                      (o.shadowOffsetX = 0.05 * a),
20087                      (o.shadowOffsetY = 0.05 * l),
20088                      (o.shadowBlur = 1 + 12 * Math.min(1, c / 1e3)),
20089                      o.fill(),
20090                      (o.shadowColor = null),
20091                      (o.shadowOffsetX = null),
20092                      (o.shadowOffsetY = null),
20093                      (o.shadowBlur = null);
20094                  }
20095                }
20096              }),
20097              (o.bodies = function (e, t, n) {
20098                var o,
20099                  i,
20100                  r,
20101                  s,
20102                  a = n,
20103                  l = (e.engine, e.options),
20104                  c = l.showInternalEdges || !l.wireframes;
20105                for (r = 0; r < t.length; r++)
20106                  if (((o = t[r]), o.render.visible))
20107                    for (
20108                      s = o.parts.length > 1 ? 1 : 0;
20109                      s < o.parts.length;
20110                      s++
20111                    )
20112                      if (((i = o.parts[s]), i.render.visible)) {
20113                        if (
20114                          (l.showSleeping && o.isSleeping
20115                            ? (a.globalAlpha = 0.5 * i.render.opacity)
20116                            : 1 !== i.render.opacity &&
20117                              (a.globalAlpha = i.render.opacity),
20118                          i.render.sprite &&
20119                            i.render.sprite.texture &&
20120                            !l.wireframes)
20121                        ) {
20122                          var d = i.render.sprite,
20123                            u = p(e, d.texture);
20124                          a.translate(i.position.x, i.position.y),
20125                            a.rotate(i.angle),
20126                            a.drawImage(
20127                              u,
20128                              u.width * -d.xOffset * d.xScale,
20129                              u.height * -d.yOffset * d.yScale,
20130                              u.width * d.xScale,
20131                              u.height * d.yScale,
20132                            ),
20133                            a.rotate(-i.angle),
20134                            a.translate(-i.position.x, -i.position.y);
20135                        } else {
20136                          if (i.circleRadius)
20137                            a.beginPath(),
20138                              a.arc(
20139                                i.position.x,
20140                                i.position.y,
20141                                i.circleRadius,
20142                                0,
20143                                2 * Math.PI,
20144                              );
20145                          else {
20146                            a.beginPath(),
20147                              a.moveTo(i.vertices[0].x, i.vertices[0].y);
20148                            for (var f = 1; f < i.vertices.length; f++)
20149                              !i.vertices[f - 1].isInternal || c
20150                                ? a.lineTo(i.vertices[f].x, i.vertices[f].y)
20151                                : a.moveTo(i.vertices[f].x, i.vertices[f].y),
20152                                i.vertices[f].isInternal &&
20153                                  !c &&
20154                                  a.moveTo(
20155                                    i.vertices[(f + 1) % i.vertices.length].x,
20156                                    i.vertices[(f + 1) % i.vertices.length].y,
20157                                  );
20158                            a.lineTo(i.vertices[0].x, i.vertices[0].y),
20159                              a.closePath();
20160                          }
20161                          l.wireframes
20162                            ? ((a.lineWidth = 1),
20163                              (a.strokeStyle = "#bbb"),
20164                              a.stroke())
20165                            : ((a.fillStyle = i.render.fillStyle),
20166                              i.render.lineWidth &&
20167                                ((a.lineWidth = i.render.lineWidth),
20168                                (a.strokeStyle = i.render.strokeStyle),
20169                                a.stroke()),
20170                              a.fill());
20171                        }
20172                        a.globalAlpha = 1;
20173                      }
20174              }),
20175              (o.bodyWireframes = function (e, t, n) {
20176                var o,
20177                  i,
20178                  r,
20179                  s,
20180                  a,
20181                  l = n,
20182                  c = e.options.showInternalEdges;
20183                for (l.beginPath(), r = 0; r < t.length; r++)
20184                  if (((o = t[r]), o.render.visible))
20185                    for (
20186                      a = o.parts.length > 1 ? 1 : 0;
20187                      a < o.parts.length;
20188                      a++
20189                    ) {
20190                      for (
20191                        i = o.parts[a],
20192                          l.moveTo(i.vertices[0].x, i.vertices[0].y),
20193                          s = 1;
20194                        s < i.vertices.length;
20195                        s++
20196                      )
20197                        !i.vertices[s - 1].isInternal || c
20198                          ? l.lineTo(i.vertices[s].x, i.vertices[s].y)
20199                          : l.moveTo(i.vertices[s].x, i.vertices[s].y),
20200                          i.vertices[s].isInternal &&
20201                            !c &&
20202                            l.moveTo(
20203                              i.vertices[(s + 1) % i.vertices.length].x,
20204                              i.vertices[(s + 1) % i.vertices.length].y,
20205                            );
20206                      l.lineTo(i.vertices[0].x, i.vertices[0].y);
20207                    }
20208                (l.lineWidth = 1), (l.strokeStyle = "#bbb"), l.stroke();
20209              }),
20210              (o.bodyConvexHulls = function (e, t, n) {
20211                var o,
20212                  i,
20213                  r,
20214                  s = n;
20215                for (s.beginPath(), i = 0; i < t.length; i++)
20216                  if (((o = t[i]), o.render.visible && 1 !== o.parts.length)) {
20217                    for (
20218                      s.moveTo(o.vertices[0].x, o.vertices[0].y), r = 1;
20219                      r < o.vertices.length;
20220                      r++
20221                    )
20222                      s.lineTo(o.vertices[r].x, o.vertices[r].y);
20223                    s.lineTo(o.vertices[0].x, o.vertices[0].y);
20224                  }
20225                (s.lineWidth = 1),
20226                  (s.strokeStyle = "rgba(255,255,255,0.2)"),
20227                  s.stroke();
20228              }),
20229              (o.vertexNumbers = function (e, t, n) {
20230                var o,
20231                  i,
20232                  r,
20233                  s = n;
20234                for (o = 0; o < t.length; o++) {
20235                  var a = t[o].parts;
20236                  for (r = a.length > 1 ? 1 : 0; r < a.length; r++) {
20237                    var l = a[r];
20238                    for (i = 0; i < l.vertices.length; i++)
20239                      (s.fillStyle = "rgba(255,255,255,0.2)"),
20240                        s.fillText(
20241                          o + "_" + i,
20242                          l.position.x + 0.8 * (l.vertices[i].x - l.position.x),
20243                          l.position.y + 0.8 * (l.vertices[i].y - l.position.y),
20244                        );
20245                  }
20246                }
20247              }),
20248              (o.mousePosition = function (e, t, n) {
20249                var o = n;
20250                (o.fillStyle = "rgba(255,255,255,0.8)"),
20251                  o.fillText(
20252                    t.position.x + "  " + t.position.y,
20253                    t.position.x + 5,
20254                    t.position.y - 5,
20255                  );
20256              }),
20257              (o.bodyBounds = function (e, t, n) {
20258                var o = n,
20259                  i = (e.engine, e.options);
20260                o.beginPath();
20261                for (var r = 0; r < t.length; r++) {
20262                  if (t[r].render.visible)
20263                    for (
20264                      var s = t[r].parts, a = s.length > 1 ? 1 : 0;
20265                      a < s.length;
20266                      a++
20267                    ) {
20268                      var l = s[a];
20269                      o.rect(
20270                        l.bounds.min.x,
20271                        l.bounds.min.y,
20272                        l.bounds.max.x - l.bounds.min.x,
20273                        l.bounds.max.y - l.bounds.min.y,
20274                      );
20275                    }
20276                }
20277                i.wireframes
20278                  ? (o.strokeStyle = "rgba(255,255,255,0.08)")
20279                  : (o.strokeStyle = "rgba(0,0,0,0.1)"),
20280                  (o.lineWidth = 1),
20281                  o.stroke();
20282              }),
20283              (o.bodyAxes = function (e, t, n) {
20284                var o,
20285                  i,
20286                  r,
20287                  s,
20288                  a = n,
20289                  l = (e.engine, e.options);
20290                for (a.beginPath(), i = 0; i < t.length; i++) {
20291                  var c = t[i],
20292                    d = c.parts;
20293                  if (c.render.visible)
20294                    if (l.showAxes)
20295                      for (r = d.length > 1 ? 1 : 0; r < d.length; r++)
20296                        for (o = d[r], s = 0; s < o.axes.length; s++) {
20297                          var u = o.axes[s];
20298                          a.moveTo(o.position.x, o.position.y),
20299                            a.lineTo(
20300                              o.position.x + 20 * u.x,
20301                              o.position.y + 20 * u.y,
20302                            );
20303                        }
20304                    else
20305                      for (r = d.length > 1 ? 1 : 0; r < d.length; r++)
20306                        for (o = d[r], s = 0; s < o.axes.length; s++)
20307                          a.moveTo(o.position.x, o.position.y),
20308                            a.lineTo(
20309                              (o.vertices[0].x +
20310                                o.vertices[o.vertices.length - 1].x) /
20311                                2,
20312                              (o.vertices[0].y +
20313                                o.vertices[o.vertices.length - 1].y) /
20314                                2,
20315                            );
20316                }
20317                l.wireframes
20318                  ? ((a.strokeStyle = "indianred"), (a.lineWidth = 1))
20319                  : ((a.strokeStyle = "rgba(255, 255, 255, 0.4)"),
20320                    (a.globalCompositeOperation = "overlay"),
20321                    (a.lineWidth = 2)),
20322                  a.stroke(),
20323                  (a.globalCompositeOperation = "source-over");
20324              }),
20325              (o.bodyPositions = function (e, t, n) {
20326                var o,
20327                  i,
20328                  r,
20329                  s,
20330                  a = n,
20331                  l = (e.engine, e.options);
20332                for (a.beginPath(), r = 0; r < t.length; r++)
20333                  if (((o = t[r]), o.render.visible))
20334                    for (s = 0; s < o.parts.length; s++)
20335                      (i = o.parts[s]),
20336                        a.arc(
20337                          i.position.x,
20338                          i.position.y,
20339                          3,
20340                          0,
20341                          2 * Math.PI,
20342                          !1,
20343                        ),
20344                        a.closePath();
20345                for (
20346                  l.wireframes
20347                    ? (a.fillStyle = "indianred")
20348                    : (a.fillStyle = "rgba(0,0,0,0.5)"),
20349                    a.fill(),
20350                    a.beginPath(),
20351                    r = 0;
20352                  r < t.length;
20353                  r++
20354                )
20355                  (o = t[r]),
20356                    o.render.visible &&
20357                      (a.arc(
20358                        o.positionPrev.x,
20359                        o.positionPrev.y,
20360                        2,
20361                        0,
20362                        2 * Math.PI,
20363                        !1,
20364                      ),
20365                      a.closePath());
20366                (a.fillStyle = "rgba(255,165,0,0.8)"), a.fill();
20367              }),
20368              (o.bodyVelocity = function (e, t, n) {
20369                var o = n;
20370                o.beginPath();
20371                for (var i = 0; i < t.length; i++) {
20372                  var r = t[i];
20373                  r.render.visible &&
20374                    (o.moveTo(r.position.x, r.position.y),
20375                    o.lineTo(
20376                      r.position.x + 2 * (r.position.x - r.positionPrev.x),
20377                      r.position.y + 2 * (r.position.y - r.positionPrev.y),
20378                    ));
20379                }
20380                (o.lineWidth = 3),
20381                  (o.strokeStyle = "cornflowerblue"),
20382                  o.stroke();
20383              }),
20384              (o.bodyIds = function (e, t, n) {
20385                var o,
20386                  i,
20387                  r = n;
20388                for (o = 0; o < t.length; o++)
20389                  if (t[o].render.visible) {
20390                    var s = t[o].parts;
20391                    for (i = s.length > 1 ? 1 : 0; i < s.length; i++) {
20392                      var a = s[i];
20393                      (r.font = "12px Arial"),
20394                        (r.fillStyle = "rgba(255,255,255,0.5)"),
20395                        r.fillText(a.id, a.position.x + 10, a.position.y - 10);
20396                    }
20397                  }
20398              }),
20399              (o.collisions = function (e, t, n) {
20400                var o,
20401                  i,
20402                  r,
20403                  s,
20404                  a = n,
20405                  l = e.options;
20406                for (a.beginPath(), r = 0; r < t.length; r++)
20407                  if (((o = t[r]), o.isActive))
20408                    for (
20409                      i = o.collision, s = 0;
20410                      s < o.activeContacts.length;
20411                      s++
20412                    ) {
20413                      var c = o.activeContacts[s],
20414                        d = c.vertex;
20415                      a.rect(d.x - 1.5, d.y - 1.5, 3.5, 3.5);
20416                    }
20417                for (
20418                  l.wireframes
20419                    ? (a.fillStyle = "rgba(255,255,255,0.7)")
20420                    : (a.fillStyle = "orange"),
20421                    a.fill(),
20422                    a.beginPath(),
20423                    r = 0;
20424                  r < t.length;
20425                  r++
20426                )
20427                  if (
20428                    ((o = t[r]),
20429                    o.isActive &&
20430                      ((i = o.collision), o.activeContacts.length > 0))
20431                  ) {
20432                    var u = o.activeContacts[0].vertex.x,
20433                      p = o.activeContacts[0].vertex.y;
20434                    2 === o.activeContacts.length &&
20435                      ((u =
20436                        (o.activeContacts[0].vertex.x +
20437                          o.activeContacts[1].vertex.x) /
20438                        2),
20439                      (p =
20440                        (o.activeContacts[0].vertex.y +
20441                          o.activeContacts[1].vertex.y) /
20442                        2)),
20443                      i.bodyB === i.supports[0].body || !0 === i.bodyA.isStatic
20444                        ? a.moveTo(u - 8 * i.normal.x, p - 8 * i.normal.y)
20445                        : a.moveTo(u + 8 * i.normal.x, p + 8 * i.normal.y),
20446                      a.lineTo(u, p);
20447                  }
20448                l.wireframes
20449                  ? (a.strokeStyle = "rgba(255,165,0,0.7)")
20450                  : (a.strokeStyle = "orange"),
20451                  (a.lineWidth = 1),
20452                  a.stroke();
20453              }),
20454              (o.separations = function (e, t, n) {
20455                var o,
20456                  i,
20457                  r,
20458                  s,
20459                  a,
20460                  l = n,
20461                  c = e.options;
20462                for (l.beginPath(), a = 0; a < t.length; a++)
20463                  if (((o = t[a]), o.isActive)) {
20464                    (i = o.collision), (r = i.bodyA), (s = i.bodyB);
20465                    var d = 1;
20466                    s.isStatic || r.isStatic || (d = 0.5),
20467                      s.isStatic && (d = 0),
20468                      l.moveTo(s.position.x, s.position.y),
20469                      l.lineTo(
20470                        s.position.x - i.penetration.x * d,
20471                        s.position.y - i.penetration.y * d,
20472                      ),
20473                      (d = 1),
20474                      s.isStatic || r.isStatic || (d = 0.5),
20475                      r.isStatic && (d = 0),
20476                      l.moveTo(r.position.x, r.position.y),
20477                      l.lineTo(
20478                        r.position.x + i.penetration.x * d,
20479                        r.position.y + i.penetration.y * d,
20480                      );
20481                  }
20482                c.wireframes
20483                  ? (l.strokeStyle = "rgba(255,165,0,0.5)")
20484                  : (l.strokeStyle = "orange"),
20485                  l.stroke();
20486              }),
20487              (o.grid = function (e, t, n) {
20488                var o = n;
20489                e.options.wireframes
20490                  ? (o.strokeStyle = "rgba(255,180,0,0.1)")
20491                  : (o.strokeStyle = "rgba(255,180,0,0.5)"),
20492                  o.beginPath();
20493                for (var r = i.keys(t.buckets), s = 0; s < r.length; s++) {
20494                  var a = r[s];
20495                  if (!(t.buckets[a].length < 2)) {
20496                    var l = a.split(/C|R/);
20497                    o.rect(
20498                      0.5 + parseInt(l[1], 10) * t.bucketWidth,
20499                      0.5 + parseInt(l[2], 10) * t.bucketHeight,
20500                      t.bucketWidth,
20501                      t.bucketHeight,
20502                    );
20503                  }
20504                }
20505                (o.lineWidth = 1), o.stroke();
20506              }),
20507              (o.inspector = function (e, t) {
20508                var n,
20509                  o = (e.engine, e.selected),
20510                  i = e.render,
20511                  r = i.options;
20512                if (r.hasBounds) {
20513                  var s = i.bounds.max.x - i.bounds.min.x,
20514                    a = i.bounds.max.y - i.bounds.min.y,
20515                    l = s / i.options.width,
20516                    c = a / i.options.height;
20517                  t.scale(1 / l, 1 / c),
20518                    t.translate(-i.bounds.min.x, -i.bounds.min.y);
20519                }
20520                for (var d = 0; d < o.length; d++) {
20521                  var u = o[d].data;
20522                  switch (
20523                    (t.translate(0.5, 0.5),
20524                    (t.lineWidth = 1),
20525                    (t.strokeStyle = "rgba(255,165,0,0.9)"),
20526                    t.setLineDash([1, 2]),
20527                    u.type)
20528                  ) {
20529                    case "body":
20530                      (n = u.bounds),
20531                        t.beginPath(),
20532                        t.rect(
20533                          Math.floor(n.min.x - 3),
20534                          Math.floor(n.min.y - 3),
20535                          Math.floor(n.max.x - n.min.x + 6),
20536                          Math.floor(n.max.y - n.min.y + 6),
20537                        ),
20538                        t.closePath(),
20539                        t.stroke();
20540                      break;
20541                    case "constraint":
20542                      var p = u.pointA;
20543                      u.bodyA && (p = u.pointB),
20544                        t.beginPath(),
20545                        t.arc(p.x, p.y, 10, 0, 2 * Math.PI),
20546                        t.closePath(),
20547                        t.stroke();
20548                  }
20549                  t.setLineDash([]), t.translate(-0.5, -0.5);
20550                }
20551                null !== e.selectStart &&
20552                  (t.translate(0.5, 0.5),
20553                  (t.lineWidth = 1),
20554                  (t.strokeStyle = "rgba(255,165,0,0.6)"),
20555                  (t.fillStyle = "rgba(255,165,0,0.1)"),
20556                  (n = e.selectBounds),
20557                  t.beginPath(),
20558                  t.rect(
20559                    Math.floor(n.min.x),
20560                    Math.floor(n.min.y),
20561                    Math.floor(n.max.x - n.min.x),
20562                    Math.floor(n.max.y - n.min.y),
20563                  ),
20564                  t.closePath(),
20565                  t.stroke(),
20566                  t.fill(),
20567                  t.translate(-0.5, -0.5)),
20568                  r.hasBounds && t.setTransform(1, 0, 0, 1, 0, 0);
20569              });
20570            var n = function (e, t) {
20571                var n = document.createElement("canvas");
20572                return (
20573                  (n.width = e),
20574                  (n.height = t),
20575                  (n.oncontextmenu = function () {
20576                    return !1;
20577                  }),
20578                  (n.onselectstart = function () {
20579                    return !1;
20580                  }),
20581                  n
20582                );
20583              },
20584              u = function (e) {
20585                var t = e.getContext("2d");
20586                return (
20587                  (window.devicePixelRatio || 1) /
20588                  (t.webkitBackingStorePixelRatio ||
20589                    t.mozBackingStorePixelRatio ||
20590                    t.msBackingStorePixelRatio ||
20591                    t.oBackingStorePixelRatio ||
20592                    t.backingStorePixelRatio ||
20593                    1)
20594                );
20595              },
20596              p = function (e, t) {
20597                var n = e.textures[t];
20598                return n || ((n = e.textures[t] = new Image()), (n.src = t), n);
20599              },
20600              f = function (e, t) {
20601                var n = t;
20602                /(jpg|gif|png)$/.test(t) && (n = "url(" + t + ")"),
20603                  (e.canvas.style.background = n),
20604                  (e.canvas.style.backgroundSize = "contain"),
20605                  (e.currentBackground = t);
20606              };
20607          })();
20608        },
20609        {
20610          "../body/Composite": 2,
20611          "../collision/Grid": 6,
20612          "../core/Common": 14,
20613          "../core/Events": 16,
20614          "../core/Mouse": 19,
20615          "../geometry/Bounds": 26,
20616          "../geometry/Vector": 28,
20617        },
20618      ],
20619      32: [
20620        function (e, t, n) {
20621          var o = {};
20622          t.exports = o;
20623          var i = e("../geometry/Bounds"),
20624            r = e("../body/Composite"),
20625            s = e("../core/Common"),
20626            a = e("../core/Events"),
20627            l = e("../geometry/Vector");
20628          !(function () {
20629            var e, t;
20630            "undefined" != typeof window &&
20631              ((e =
20632                window.requestAnimationFrame ||
20633                window.webkitRequestAnimationFrame ||
20634                window.mozRequestAnimationFrame ||
20635                window.msRequestAnimationFrame ||
20636                function (e) {
20637                  window.setTimeout(function () {
20638                    e(s.now());
20639                  }, 1e3 / 60);
20640                }),
20641              (t =
20642                window.cancelAnimationFrame ||
20643                window.mozCancelAnimationFrame ||
20644                window.webkitCancelAnimationFrame ||
20645                window.msCancelAnimationFrame)),
20646              (o.create = function (e) {
20647                s.warn(
20648                  "RenderPixi.create: Matter.RenderPixi is deprecated (see docs)",
20649                );
20650                var t = {
20651                    controller: o,
20652                    engine: null,
20653                    element: null,
20654                    frameRequestId: null,
20655                    canvas: null,
20656                    renderer: null,
20657                    container: null,
20658                    spriteContainer: null,
20659                    pixiOptions: null,
20660                    options: {
20661                      width: 800,
20662                      height: 600,
20663                      background: "#fafafa",
20664                      wireframeBackground: "#222",
20665                      hasBounds: !1,
20666                      enabled: !0,
20667                      wireframes: !0,
20668                      showSleeping: !0,
20669                      showDebug: !1,
20670                      showBroadphase: !1,
20671                      showBounds: !1,
20672                      showVelocity: !1,
20673                      showCollisions: !1,
20674                      showAxes: !1,
20675                      showPositions: !1,
20676                      showAngleIndicator: !1,
20677                      showIds: !1,
20678                      showShadows: !1,
20679                    },
20680                  },
20681                  n = s.extend(t, e),
20682                  i =
20683                    !n.options.wireframes &&
20684                    "transparent" === n.options.background;
20685                return (
20686                  (n.pixiOptions = n.pixiOptions || {
20687                    view: n.canvas,
20688                    transparent: i,
20689                    antialias: !0,
20690                    backgroundColor: e.background,
20691                  }),
20692                  (n.mouse = e.mouse),
20693                  (n.engine = e.engine),
20694                  (n.renderer =
20695                    n.renderer ||
20696                    new PIXI.WebGLRenderer(
20697                      n.options.width,
20698                      n.options.height,
20699                      n.pixiOptions,
20700                    )),
20701                  (n.container = n.container || new PIXI.Container()),
20702                  (n.spriteContainer =
20703                    n.spriteContainer || new PIXI.Container()),
20704                  (n.canvas = n.canvas || n.renderer.view),
20705                  (n.bounds = n.bounds || {
20706                    min: { x: 0, y: 0 },
20707                    max: { x: n.options.width, y: n.options.height },
20708                  }),
20709                  a.on(n.engine, "beforeUpdate", function () {
20710                    o.clear(n);
20711                  }),
20712                  (n.textures = {}),
20713                  (n.sprites = {}),
20714                  (n.primitives = {}),
20715                  n.container.addChild(n.spriteContainer),
20716                  s.isElement(n.element)
20717                    ? n.element.appendChild(n.canvas)
20718                    : s.warn(
20719                        'No "render.element" passed, "render.canvas" was not inserted into document.',
20720                      ),
20721                  (n.canvas.oncontextmenu = function () {
20722                    return !1;
20723                  }),
20724                  (n.canvas.onselectstart = function () {
20725                    return !1;
20726                  }),
20727                  n
20728                );
20729              }),
20730              (o.run = function (t) {
20731                !(function n(i) {
20732                  (t.frameRequestId = e(n)), o.world(t);
20733                })();
20734              }),
20735              (o.stop = function (e) {
20736                t(e.frameRequestId);
20737              }),
20738              (o.clear = function (e) {
20739                for (
20740                  var t = e.container, n = e.spriteContainer;
20741                  t.children[0];
20742
20743                )
20744                  t.removeChild(t.children[0]);
20745                for (; n.children[0]; ) n.removeChild(n.children[0]);
20746                var o = e.sprites["bg-0"];
20747                (e.textures = {}),
20748                  (e.sprites = {}),
20749                  (e.primitives = {}),
20750                  (e.sprites["bg-0"] = o),
20751                  o && t.addChildAt(o, 0),
20752                  e.container.addChild(e.spriteContainer),
20753                  (e.currentBackground = null),
20754                  t.scale.set(1, 1),
20755                  t.position.set(0, 0);
20756              }),
20757              (o.setBackground = function (e, t) {
20758                if (e.currentBackground !== t) {
20759                  var n = t.indexOf && -1 !== t.indexOf("#"),
20760                    o = e.sprites["bg-0"];
20761                  if (n) {
20762                    var i = s.colorToNumber(t);
20763                    (e.renderer.backgroundColor = i),
20764                      o && e.container.removeChild(o);
20765                  } else if (!o) {
20766                    var r = d(e, t);
20767                    (o = e.sprites["bg-0"] = new PIXI.Sprite(r)),
20768                      (o.position.x = 0),
20769                      (o.position.y = 0),
20770                      e.container.addChildAt(o, 0);
20771                  }
20772                  e.currentBackground = t;
20773                }
20774              }),
20775              (o.world = function (e) {
20776                var t,
20777                  n = e.engine,
20778                  s = n.world,
20779                  a = e.renderer,
20780                  c = e.container,
20781                  d = e.options,
20782                  u = r.allBodies(s),
20783                  p = r.allConstraints(s),
20784                  f = [];
20785                d.wireframes
20786                  ? o.setBackground(e, d.wireframeBackground)
20787                  : o.setBackground(e, d.background);
20788                var m = e.bounds.max.x - e.bounds.min.x,
20789                  v = e.bounds.max.y - e.bounds.min.y,
20790                  y = m / e.options.width,
20791                  g = v / e.options.height;
20792                if (d.hasBounds) {
20793                  for (t = 0; t < u.length; t++) {
20794                    var x = u[t];
20795                    x.render.sprite.visible = i.overlaps(x.bounds, e.bounds);
20796                  }
20797                  for (t = 0; t < p.length; t++) {
20798                    var h = p[t],
20799                      b = h.bodyA,
20800                      w = h.bodyB,
20801                      S = h.pointA,
20802                      C = h.pointB;
20803                    b && (S = l.add(b.position, h.pointA)),
20804                      w && (C = l.add(w.position, h.pointB)),
20805                      S &&
20806                        C &&
20807                        (i.contains(e.bounds, S) || i.contains(e.bounds, C)) &&
20808                        f.push(h);
20809                  }
20810                  c.scale.set(1 / y, 1 / g),
20811                    c.position.set(
20812                      -e.bounds.min.x * (1 / y),
20813                      -e.bounds.min.y * (1 / g),
20814                    );
20815                } else f = p;
20816                for (t = 0; t < u.length; t++) o.body(e, u[t]);
20817                for (t = 0; t < f.length; t++) o.constraint(e, f[t]);
20818                a.render(c);
20819              }),
20820              (o.constraint = function (e, t) {
20821                var n = (e.engine, t.bodyA),
20822                  o = t.bodyB,
20823                  i = t.pointA,
20824                  r = t.pointB,
20825                  a = e.container,
20826                  l = t.render,
20827                  c = "c-" + t.id,
20828                  d = e.primitives[c];
20829                if (
20830                  (d || (d = e.primitives[c] = new PIXI.Graphics()),
20831                  !l.visible || !t.pointA || !t.pointB)
20832                )
20833                  return void d.clear();
20834                -1 === s.indexOf(a.children, d) && a.addChild(d),
20835                  d.clear(),
20836                  d.beginFill(0, 0),
20837                  d.lineStyle(l.lineWidth, s.colorToNumber(l.strokeStyle), 1),
20838                  n
20839                    ? d.moveTo(n.position.x + i.x, n.position.y + i.y)
20840                    : d.moveTo(i.x, i.y),
20841                  o
20842                    ? d.lineTo(o.position.x + r.x, o.position.y + r.y)
20843                    : d.lineTo(r.x, r.y),
20844                  d.endFill();
20845              }),
20846              (o.body = function (e, t) {
20847                var o = (e.engine, t.render);
20848                if (o.visible)
20849                  if (o.sprite && o.sprite.texture) {
20850                    var i = "b-" + t.id,
20851                      r = e.sprites[i],
20852                      a = e.spriteContainer;
20853                    r || (r = e.sprites[i] = n(e, t)),
20854                      -1 === s.indexOf(a.children, r) && a.addChild(r),
20855                      (r.position.x = t.position.x),
20856                      (r.position.y = t.position.y),
20857                      (r.rotation = t.angle),
20858                      (r.scale.x = o.sprite.xScale || 1),
20859                      (r.scale.y = o.sprite.yScale || 1);
20860                  } else {
20861                    var l = "b-" + t.id,
20862                      d = e.primitives[l],
20863                      u = e.container;
20864                    d ||
20865                      ((d = e.primitives[l] = c(e, t)),
20866                      (d.initialAngle = t.angle)),
20867                      -1 === s.indexOf(u.children, d) && u.addChild(d),
20868                      (d.position.x = t.position.x),
20869                      (d.position.y = t.position.y),
20870                      (d.rotation = t.angle - d.initialAngle);
20871                  }
20872              });
20873            var n = function (e, t) {
20874                var n = t.render,
20875                  o = n.sprite.texture,
20876                  i = d(e, o),
20877                  r = new PIXI.Sprite(i);
20878                return (
20879                  (r.anchor.x = t.render.sprite.xOffset),
20880                  (r.anchor.y = t.render.sprite.yOffset),
20881                  r
20882                );
20883              },
20884              c = function (e, t) {
20885                var n,
20886                  o = t.render,
20887                  i = e.options,
20888                  r = new PIXI.Graphics(),
20889                  a = s.colorToNumber(o.fillStyle),
20890                  l = s.colorToNumber(o.strokeStyle),
20891                  c = s.colorToNumber(o.strokeStyle),
20892                  d = s.colorToNumber("#bbb"),
20893                  u = s.colorToNumber("#CD5C5C");
20894                r.clear();
20895                for (
20896                  var p = t.parts.length > 1 ? 1 : 0;
20897                  p < t.parts.length;
20898                  p++
20899                ) {
20900                  (n = t.parts[p]),
20901                    i.wireframes
20902                      ? (r.beginFill(0, 0), r.lineStyle(1, d, 1))
20903                      : (r.beginFill(a, 1), r.lineStyle(o.lineWidth, l, 1)),
20904                    r.moveTo(
20905                      n.vertices[0].x - t.position.x,
20906                      n.vertices[0].y - t.position.y,
20907                    );
20908                  for (var f = 1; f < n.vertices.length; f++)
20909                    r.lineTo(
20910                      n.vertices[f].x - t.position.x,
20911                      n.vertices[f].y - t.position.y,
20912                    );
20913                  r.lineTo(
20914                    n.vertices[0].x - t.position.x,
20915                    n.vertices[0].y - t.position.y,
20916                  ),
20917                    r.endFill(),
20918                    (i.showAngleIndicator || i.showAxes) &&
20919                      (r.beginFill(0, 0),
20920                      i.wireframes ? r.lineStyle(1, u, 1) : r.lineStyle(1, c),
20921                      r.moveTo(
20922                        n.position.x - t.position.x,
20923                        n.position.y - t.position.y,
20924                      ),
20925                      r.lineTo(
20926                        (n.vertices[0].x +
20927                          n.vertices[n.vertices.length - 1].x) /
20928                          2 -
20929                          t.position.x,
20930                        (n.vertices[0].y +
20931                          n.vertices[n.vertices.length - 1].y) /
20932                          2 -
20933                          t.position.y,
20934                      ),
20935                      r.endFill());
20936                }
20937                return r;
20938              },
20939              d = function (e, t) {
20940                var n = e.textures[t];
20941                return n || (n = e.textures[t] = PIXI.Texture.fromImage(t)), n;
20942              };
20943          })();
20944        },
20945        {
20946          "../body/Composite": 2,
20947          "../core/Common": 14,
20948          "../core/Events": 16,
20949          "../geometry/Bounds": 26,
20950          "../geometry/Vector": 28,
20951        },
20952      ],
20953    },
20954    {},
20955    [30],
20956  )(30);
20957});
20958
20959/*! Lazy Load 1.9.1 - MIT license - Copyright 2010-2013 Mika Tuupola */
20960!(function (a, b, c, d) {
20961  var e = a(b);
20962  (a.fn.lazyload = function (f) {
20963    function g() {
20964      var b = 0;
20965      i.each(function () {
20966        var c = a(this);
20967        if (!j.skip_invisible || c.is(":visible"))
20968          if (a.abovethetop(this, j) || a.leftofbegin(this, j));
20969          else if (a.belowthefold(this, j) || a.rightoffold(this, j)) {
20970            if (++b >
20970 j.failure_limit) return !1;
20971          } else c.trigger("appear"), (b = 0);
20972      });
20973    }
20974    var h,
20975      i = this,
20976      j = {
20977        threshold: 0,
20978        failure_limit: 0,
20979        event: "scroll",
20980        effect: "show",
20981        container: b,
20982        data_attribute: "original",
20983        skip_invisible: !0,
20984        appear: null,
20985        load: null,
20986        placeholder:
20987          "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAMKmlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjarVd3UFP5Fv5uSSFAaDECUoJIFwWkI0gvgoB0WAshCRAIIaagYi/LKrp2sWBZ0VURV10LKGtFXRurYO8PdFFZWRdXsSvvDwK6znt/vJn3m7m535x85zvfOffOnTmAgZtQoZCRhkCRXK1MigoVZGRmCVitoEGABhscoUilCElMjAOA3vsXhwBeXQcBAFdchQqFDP/bMRJLVCKASASQI1aJigBiP0CbihRKNcBoBGA7Ua1QA4xOADxlRmYWwKQB8PJ6sCkAXk4PHgyAp0xJCgOYwQBbTyhU5gHcOACCElGeGuDKALjJxVI5wF0HIEiULxQD3LsABhcVFYsBAzYAx5wvdPL+oZnTpykU5vXhnl4AAOxwqUohE07G//sUyTS9NQYC0MtXRicB4AHE9sLi2CQAegBxWJ4TnwDAGCDOSsWAFt/O10SnavkdIlVYFgA+QEIsDI8FYAGQfE1haogWewiVQA+fjJeqY1K0OEdZnKTVJ0vksvg4rc68fElML94gUUUk93JypZExAAwBcn9pfkp6j0/yVIk0LR4AFyCbVIXJsdrc+6X5YfG9HKUmKRXAIIB8mauMTOrhUKZFqt6+qCEiYUQyAFOAClbnp0T35FIZElVGXK8HsSQ8oscDJZbIU7XeKLVCHZqkzS1TyBK1fGqDRBaV1DNnao+qJLk397JamaKdOfWgQDgyUVvrlUKdmNLjjSYRhzCEQwANBMhBMQogvdhR1wGB9p9ICKFEHiRw1UZ6M9IhhBJyCJGMUvwJOSRQ9eWFQgglJCiBHB/7oj2/rsiFEEqUQAIVCvEIShTR5nQQHUDH0UF0MB1Ee9C+tF9vnsCgtyozghnOjGZGMp36fIhQDBmKoYT0P8RiIYMEGighgby3h896jEeMZsYDxjVGC+MW0vA7lJD2ssZLZyu/ci7AKLRAo52KBDlfdkfb0x60Fx1KB9JBtB8ENJ82hyvtSfvSIfQIOoD2ov3+4VDT5+3zLL+uJ4H8H/1o41xnrpfWRU7fkwnrY32tEvbFjMQoRuzXTGoetY86Q52gzlGHqToIqGPUQaqROkLVffEm/A4l8vqqJUECOQohg7SX41bj1u724avaQm19JSRQqSWT1AAQVqyYrJTm5asFIQqFTCKIkYuGDBZ4uLn7ABmZWYKeT8cLPggABP/859icaiDwUHd39y+fYyObgJ+zAc6BzzHHsYDhY+DsYZFGWdITowGAAQ4MwIMZrGALR7jCA94IQDAiMBIJSEEmxkGEfBRBiYmYilkowwIswUqsxUZsxnb8hL2ow2GcwK+4gCZcwx20oA1P0YlXeE8QBIvQJ0wIM8KasCNcCA/ClwgiIog4IonIJLKJPEJOaIipxBxiAbGMWEtsIqqJn4lDxAniHNFM3CJaiXbib+IdSZF6JI+0JO3JoaQvGULGkinkWDKPnECWknPJReRqsorcSdaSJ8gL5DWyhXxKdlGgdCk+ZUO5Ur5UGJVAZVG5lJKaTpVTFVQVtYuqp85QV6gWqoN6SzNpE1pAu9IBdDSdSovoCfR0eiG9lt5O19Kn6Ct0K91Jf2LoMywYLgx/Rgwjg5HHmMgoY1QwtjIOME4zrjHaGK+YTCaf6cD0YUYzM5kFzCnMhcz1zN3M48xm5kNmF4vFMmO5sAJZCSwhS80qY61h7WQdY11mtbHesHXZ1mwPdiQ7iy1nz2ZXsHewj7Ivsx+z3+sY6tjp+Osk6Ih1Juss1tmiU69zSadN5z3HiOPACeSkcAo4szirObs4pzl3OS90dXUH6vrpjtaV6s7UXa27R/esbqvuWz1jPWe9ML0xehq9RXrb9I7r3dJ7oa+vb68frJ+lr9ZfpF+tf1L/vv4brgl3CDeGK+bO4FZya7mXuc8MdAzsDEIMxhmUGlQY7DO4ZNBhqGNobxhmKDScblhpeMjwhmGXkYmRu1GCUZHRQqMdRueMnhizjO2NI4zFxnONNxufNH5oQpnYmoSZiEzmmGwxOW3SxmPyHHgxvALeAt5PvIu8zn7G/Tz7pfWb1K+y35F+LXyKb8+P4cv4i/l7+df57/pb9g/pL+k/v/+u/pf7vzYdYBpsKjEtN91tes30nZnALMKs0GypWZ3ZPXPa3Nl8tPlE8w3mp807BvAGBAwQDSgfsHfAbQvSwtkiyWKKxWaLRosuSyvLKEuF5RrLk5YdVnyrYKsCqxVWR63arU2sg6yl1iusj1n/IegnCBHIBKsFpwSdNhY20TYam002F23eD3QYmDpw9sDdA+/Zcmx9bXNtV9g22HYOsh40atDUQTWDbtvp2Pna5dutsjtj99rewT7d/jv7OvsnDqYOMQ6lDjUOdx31HUc4TnCscrzqxHTydSp0Wu/U5Ew6eznnO1c6X3IhXbxdpC7rXZoHMwb7DZYPrhp8w1XPNcS1xLXGtXUIf0jckNlD6oY8GzpoaNbQpUPPDP3k5uUmc9vidsfd2H2k+2z3eve/PZw9RB6VHleH6Q+LHDZj2MFhzz1dPCWeGzxvepl4jfL6zqvB66O3j7fSe5d3u88gn2yfdT43fHm+ib4Lfc/6MfxC/Wb4HfZ76+/tr/bf6/9XgGtAYcCOgCfDHYZLhm8Z/jBwYKAwcFNgS5AgKDvoh6CWETYjhCOqRjwItg0WB28NfhziFFIQsjPkWahbqDL0QOjrMP+waWHHw6nwqPDy8IsRxhGpEWsj7kcOjMyLrInsjPKKmhJ1PJoRHRu9NPpGjGWMKKY6pnOkz8hpI0/F6sUmx66NfRDnHKeMqx9Fjho5avmou/F28fL4ugQkxCQsT7iX6JA4IfGX0czRiaMrRz9Kck+amnQm2SR5fPKO5FcpoSmLU+6kOqZqUhvSDNLGpFWnvU4PT1+W3pIxNGNaxoVM80xp5sEsVlZa1tasrm8ivln5TdsYrzFlY66PdRg7aey5cebjZOOOjDcYLxy/L5uRnZ69I/uDMEFYJezKiclZl9MpChOtEj0VB4tXiNslgZJlkse5gbnLcp/kBeYtz2vPH5Ffkd8hDZOulT4viC7YWPC6MKFwW2G3LF22u4hdlF10SG4sL5SfKrYqnlTcrHBRlClaJvhPWDmhUxmr3KoiVGNVB9U8tULdqHHUfKtpLQkqqSx5MzFt4r5JRpPkkxonO0+eP/lxaWTpj1PoKaIpDVNtps6a2jotZNqm6cT0nOkNM2xnzJ3RNjNq5vZZnFmFs36b7TZ72eyXc9Ln1M+1nDtz7sNvo76tKeOWKctufBfw3cZ59DzpvIvzh81fM/9Tubj8/AK3BRULPiwULTz/vfv3q7/vXpS76OJi78UbljCXyJdcXzpi6fZlRstKlz1cPmp57QrBivIVL1eOX3muwrNi4yrOKs2qltVxqw+uGbRmyZoPa/PXXqsMrdy9zmLd/HWv14vXX94QvGHXRsuNCza++0H6w81NUZtqq+yrKjYzN5dsfrQlbcuZH31/rN5qvnXB1o/b5NtatidtP1XtU129w2LH4hqyRlPTvnPMzqafwn86uMt116bd/N0L9mCPZs8fP2f/fH1v7N6Gfb77du2327/ugMmB8lqidnJtZ11+XcvBzIPNh0YeaqgPqD/wy5Bfth22OVx5pN+RxUc5R+ce7T5WeqzruOJ4x4m8Ew8bxjfcOZlx8uqp0acuno49ffbXyF9Pngk5c+xs4NnD5/zPHTrve77ugveF2kavxgO/ef124KL3xdpLPpcONvk11TcPbz56ecTlE1fCr/x6NebqhWvx15qvp16/eWPMjZab4ptPbsluPb9dcvv9nZl3GXfL7xneq7hvcb/qX07/2t3i3XKkNby18UHygzsPRQ+f/q76/UPb3Ef6jyoeWz+ufuLx5HB7ZHvTH9/80fZU8fR9R9mfRn+ue+b4bP9fwX81dmZ0tj1XPu/+e+ELsxfbXnq+bOhK7Lr/qujV+9flb8zebH/r+/bMu/R3j99P/MD6sPqj08f6T7Gf7nYXdXcrhEohAIACQObmAn9vA/QzAZMmgMPt2b20OyPxeXv8b7hnPwMAeAO7ACQBCDsO7DkO2M8EDIKBRAApwSCHDeu7tEeVO8yjR0tPCTDedHe/sARY9cBHZXf3+/Xd3R+3ANQt4PiEnp0PAJiGwA+eAHCZL9v09e71b2XqbgXTX2RbAAA6LmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgI
20987HhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxNy0wNi0xNVQxNzowMDoyMCswMjowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTctMDYtMTVUMTc6MDA6MjArMDI6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE3LTA2LTE1VDE3OjAwOjIwKzAyOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo4Y2E0MWQ5My01MDNiLTQ4OTAtODhhZS1lOWIzYTIzYmJmNmY8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjMjYzNjNiYy05MjY5LTExN2EtOWZlYy1mZWQ1ZDMzZGEyNzI8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo0ZTFlMTE5ZC02MmE1LTQ3MzAtYWRlYi02MzUzYzI2MGU2ZWI8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NGUxZTExOWQtNjJhNS00NzMwLWFkZWItNjM1M2MyNjBlNmViPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE3LTA2LTE1VDE3OjAwOjIwKzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OGNhNDFkOTMtNTAzYi00ODkwLTg4YWUtZTliM2EyM2JiZjZmPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE3LTA2LTE1VDE3OjAwOjIwKzAyOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGU+RGlzcGxheTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjI4MzQ2NS8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+MjgzNDY1LzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4zPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjY1NTM1PC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgI
20987CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PgZldHoAAAAgY0hSTQAAbXUAAHOgAAEH/gAAfqEAAGSTAAEJ8QAAMYkAABOcLwWf9AAAABJJREFUeNpi+P//PwAAAP//AwAF/gL+XhGkvgAAAABJRU5ErkJggg==",
20988      };
20989    return (
20990      f &&
20991        (d !== f.failurelimit &&
20992          ((f.failure_limit = f.failurelimit), delete f.failurelimit),
20993        d !== f.effectspeed &&
20994          ((f.effect_speed = f.effectspeed), delete f.effectspeed),
20995        a.extend(j, f)),
20996      (h = j.container === d || j.container === b ? e : a(j.container)),
20997      0 === j.event.indexOf("scroll") &&
20998        h.bind(j.event, function () {
20999          return g();
21000        }),
21001      this.each(function () {
21002        var b = this,
21003          c = a(b);
21004        (b.loaded = !1),
21005          (c.attr("src") === d || c.attr("src") === !1) &&
21006            c.is("img") &&
21007            c.attr("src", j.placeholder),
21008          c.one("appear", function () {
21009            if (!this.loaded) {
21010              if (j.appear) {
21011                var d = i.length;
21012                j.appear.call(b, d, j);
21013              }
21014              a("<img />")
21015                .bind("load", function () {
21016                  var d = c.attr("data-" + j.data_attribute);
21017                  c.hide(),
21018                    c.is("img")
21019                      ? c.attr("src", d)
21020                      : c.css("background-image", "url('" + d + "')"),
21021                    c[j.effect](j.effect_speed),
21022                    (b.loaded = !0);
21023                  var e = a.grep(i, function (a) {
21024                    return !a.loaded;
21025                  });
21026                  if (((i = a(e)), j.load)) {
21027                    var f = i.length;
21028                    j.load.call(b, f, j);
21029                  }
21030                })
21031                .attr("src", c.attr("data-" + j.data_attribute));
21032            }
21033          }),
21034          0 !== j.event.indexOf("scroll") &&
21035            c.bind(j.event, function () {
21036              b.loaded || c.trigger("appear");
21037            });
21038      }),
21039      e.bind("resize", function () {
21040        g();
21041      }),
21042      /(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion) &&
21043        e.bind("pageshow", function (b) {
21044          b.originalEvent &&
21045            b.originalEvent.persisted &&
21046            i.each(function () {
21047              a(this).trigger("appear");
21048            });
21049        }),
21050      a(c).ready(function () {
21051        g();
21052      }),
21053      this
21054    );
21055  }),
21056    (a.belowthefold = function (c, f) {
21057      var g;
21058      return (
21059        (g =
21060          f.container === d || f.container === b
21061            ? (b.innerHeight ? b.innerHeight : e.height()) + e.scrollTop()
21062            : a(f.container).offset().top + a(f.container).height()),
21063        g <= a(c).offset().top - f.threshold
21064      );
21065    }),
21066    (a.rightoffold = function (c, f) {
21067      var g;
21068      return (
21069        (g =
21070          f.container === d || f.container === b
21071            ? e.width() + e.scrollLeft()
21072            : a(f.container).offset().left + a(f.container).width()),
21073        g <= a(c).offset().left - f.threshold
21074      );
21075    }),
21076    (a.abovethetop = function (c, f) {
21077      var g;
21078      return (
21079        (g =
21080          f.container === d || f.container === b
21081            ? e.scrollTop()
21082            : a(f.container).offset().top),
21083        g >= a(c).offset().top + f.threshold + a(c).height()
21084      );
21085    }),
21086    (a.leftofbegin = function (c, f) {
21087      var g;
21088      return (
21089        (g =
21090          f.container === d || f.container === b
21091            ? e.scrollLeft()
21092            : a(f.container).offset().left),
21093        g >= a(c).offset().left + f.threshold + a(c).width()
21094      );
21095    }),
21096    (a.inviewport = function (b, c) {
21097      return !(
21098        a.rightoffold(b, c) ||
21099        a.leftofbegin(b, c) ||
21100        a.belowthefold(b, c) ||
21101        a.abovethetop(b, c)
21102      );
21103    }),
21104    a.extend(a.expr[":"], {
21105      "below-the-fold": function (b) {
21106        return a.belowthefold(b, { threshold: 0 });
21107      },
21108      "above-the-top": function (b) {
21109        return !a.belowthefold(b, { threshold: 0 });
21110      },
21111      "right-of-screen": function (b) {
21112        return a.rightoffold(b, { threshold: 0 });
21113      },
21114      "left-of-screen": function (b) {
21115        return !a.rightoffold(b, { threshold: 0 });
21116      },
21117      "in-viewport": function (b) {
21118        return a.inviewport(b, { threshold: 0 });
21119      },
21120      "above-the-fold": function (b) {
21121        return !a.belowthefold(b, { threshold: 0 });
21122      },
21123      "right-of-fold": function (b) {
21124        return a.rightoffold(b, { threshold: 0 });
21125      },
21126      "left-of-fold": function (b) {
21127        return !a.rightoffold(b, { threshold: 0 });
21128      },
21129    });
21130})(jQuery, window, document);
21131
21132/*!
21133Waypoints - 4.0.1
21134Copyright © 2011-2016 Caleb Troughton
21135Licensed under the MIT license.
21136https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
21137*/
21138!(function () {
21139  "use strict";
21140  function t(o) {
21141    if (!o) throw new Error("No options passed to Waypoint constructor");
21142    if (!o.element)
21143      throw new Error("No element option passed to Waypoint constructor");
21144    if (!o.handler)
21145      throw new Error("No handler option passed to Waypoint constructor");
21146    (this.key = "waypoint-" + e),
21147      (this.options = t.Adapter.extend({}, t.defaults, o)),
21148      (this.element = this.options.element),
21149      (this.adapter = new t.Adapter(this.element)),
21150      (this.callback = o.handler),
21151      (this.axis = this.options.horizontal ? "horizontal" : "vertical"),
21152      (this.enabled = this.options.enabled),
21153      (this.triggerPoint = null),
21154      (this.group = t.Group.findOrCreate({
21155        name: this.options.group,
21156        axis: this.axis,
21157      })),
21158      (this.context = t.Context.findOrCreateByElement(this.options.context)),
21159      t.offsetAliases[this.options.offset] &&
21160        (this.options.offset = t.offsetAliases[this.options.offset]),
21161      this.group.add(this),
21162      this.context.add(this),
21163      (i[this.key] = this),
21164      (e += 1);
21165  }
21166  var e = 0,
21167    i = {};
21168  (t.prototype.queueTrigger = function (t) {
21169    this.group.queueTrigger(this, t);
21170  }),
21171    (t.prototype.trigger = function (t) {
21172      this.enabled && this.callback && this.callback.apply(this, t);
21173    }),
21174    (t.prototype.destroy = function () {
21175      this.context.remove(this), this.group.remove(this), delete i[this.key];
21176    }),
21177    (t.prototype.disable = function () {
21178      return (this.enabled = !1), this;
21179    }),
21180    (t.prototype.enable = function () {
21181      return this.context.refresh(), (this.enabled = !0), this;
21182    }),
21183    (t.prototype.next = function () {
21184      return this.group.next(this);
21185    }),
21186    (t.prototype.previous = function () {
21187      return this.group.previous(this);
21188    }),
21189    (t.invokeAll = function (t) {
21190      var e = [];
21191      for (var o in i) e.push(i[o]);
21192      for (var n = 0, r = e.length; r > n; n++) e[n][t]();
21193    }),
21194    (t.destroyAll = function () {
21195      t.invokeAll("destroy");
21196    }),
21197    (t.disableAll = function () {
21198      t.invokeAll("disable");
21199    }),
21200    (t.enableAll = function () {
21201      t.Context.refreshAll();
21202      for (var e in i) i[e].enabled = !0;
21203      return this;
21204    }),
21205    (t.refreshAll = function () {
21206      t.Context.refreshAll();
21207    }),
21208    (t.viewportHeight = function () {
21209      return window.innerHeight || document.documentElement.clientHeight;
21210    }),
21211    (t.viewportWidth = function () {
21212      return document.documentElement.clientWidth;
21213    }),
21214    (t.adapters = []),
21215    (t.defaults = {
21216      context: window,
21217      continuous: !0,
21218      enabled: !0,
21219      group: "default",
21220      horizontal: !1,
21221      offset: 0,
21222    }),
21223    (t.offsetAliases = {
21224      "bottom-in-view": function () {
21225        return this.context.innerHeight() - this.adapter.outerHeight();
21226      },
21227      "right-in-view": function () {
21228        return this.context.innerWidth() - this.adapter.outerWidth();
21229      },
21230    }),
21231    (window.Waypoint = t);
21232})(),
21233  (function () {
21234    "use strict";
21235    function t(t) {
21236      window.setTimeout(t, 1e3 / 60);
21237    }
21238    function e(t) {
21239      (this.element = t),
21240        (this.Adapter = n.Adapter),
21241        (this.adapter = new this.Adapter(t)),
21242        (this.key = "waypoint-context-" + i),
21243        (this.didScroll = !1),
21244        (this.didResize = !1),
21245        (this.oldScroll = {
21246          x: this.adapter.scrollLeft(),
21247          y: this.adapter.scrollTop(),
21248        }),
21249        (this.waypoints = { vertical: {}, horizontal: {} }),
21250        (t.waypointContextKey = this.key),
21251        (o[t.waypointContextKey] = this),
21252        (i += 1),
21253        n.windowContext ||
21254          ((n.windowContext = !0), (n.windowContext = new e(window))),
21255        this.createThrottledScrollHandler(),
21256        this.createThrottledResizeHandler();
21257    }
21258    var i = 0,
21259      o = {},
21260      n = window.Waypoint,
21261      r = window.onload;
21262    (e.prototype.add = function (t) {
21263      var e = t.options.horizontal ? "horizontal" : "vertical";
21264      (this.waypoints[e][t.key] = t), this.refresh();
21265    }),
21266      (e.prototype.checkEmpty = function () {
21267        var t = this.Adapter.isEmptyObject(this.waypoints.horizontal),
21268          e = this.Adapter.isEmptyObject(this.waypoints.vertical),
21269          i = this.element == this.element.window;
21270        t && e && !i && (this.adapter.off(".waypoints"), delete o[this.key]);
21271      }),
21272      (e.prototype.createThrottledResizeHandler = function () {
21273        function t() {
21274          e.handleResize(), (e.didResize = !1);
21275        }
21276        var e = this;
21277        this.adapter.on("resize.waypoints", function () {
21278          e.didResize || ((e.didResize = !0), n.requestAnimationFrame(t));
21279        });
21280      }),
21281      (e.prototype.createThrottledScrollHandler = function () {
21282        function t() {
21283          e.handleScroll(), (e.didScroll = !1);
21284        }
21285        var e = this;
21286        this.adapter.on("scroll.waypoints", function () {
21287          (!e.didScroll || n.isTouch) &&
21288            ((e.didScroll = !0), n.requestAnimationFrame(t));
21289        });
21290      }),
21291      (e.prototype.handleResize = function () {
21292        n.Context.refreshAll();
21293      }),
21294      (e.prototype.handleScroll = function () {
21295        var t = {},
21296          e = {
21297            horizontal: {
21298              newScroll: this.adapter.scrollLeft(),
21299              oldScroll: this.oldScroll.x,
21300              forward: "right",
21301              backward: "left",
21302            },
21303            vertical: {
21304              newScroll: this.adapter.scrollTop(),
21305              oldScroll: this.oldScroll.y,
21306              forward: "down",
21307              backward: "up",
21308            },
21309          };
21310        for (var i in e) {
21311          var o = e[i],
21312            n = o.newScroll > o.oldScroll,
21313            r = n ? o.forward : o.backward;
21314          for (var s in this.waypoints[i]) {
21315            var a = this.waypoints[i][s];
21316            if (null !== a.triggerPoint) {
21317              var l = o.oldScroll < a.triggerPoint,
21318                h = o.newScroll >= a.triggerPoint,
21319                p = l && h,
21320                u = !l && !h;
21321              (p || u) && (a.queueTrigger(r), (t[a.group.id] = a.group));
21322            }
21323          }
21324        }
21325        for (var c in t) t[c].flushTriggers();
21326        this.oldScroll = { x: e.horizontal.newScroll, y: e.vertical.newScroll };
21327      }),
21328      (e.prototype.innerHeight = function () {
21329        return this.element == this.element.window
21330          ? n.viewportHeight()
21331          : this.adapter.innerHeight();
21332      }),
21333      (e.prototype.remove = function (t) {
21334        delete this.waypoints[t.axis][t.key], this.checkEmpty();
21335      }),
21336      (e.prototype.innerWidth = function () {
21337        return this.element == this.element.window
21338          ? n.viewportWidth()
21339          : this.adapter.innerWidth();
21340      }),
21341      (e.prototype.destroy = function () {
21342        var t = [];
21343        for (var e in this.waypoints)
21344          for (var i in this.waypoints[e]) t.push(this.waypoints[e][i]);
21345        for (var o = 0, n = t.length; n > o; o++) t[o].destroy();
21346      }),
21347      (e.prototype.refresh = function () {
21348        var t,
21349          e = this.element == this.element.window,
21350          i = e ? void 0 : this.adapter.offset(),
21351          o = {};
21352        this.handleScroll(),
21353          (t = {
21354            horizontal: {
21355              contextOffset: e ? 0 : i.left,
21356              contextScroll: e ? 0 : this.oldScroll.x,
21357              contextDimension: this.innerWidth(),
21358              oldScroll: this.oldScroll.x,
21359              forward: "right",
21360              backward: "left",
21361              offsetProp: "left",
21362            },
21363            vertical: {
21364              contextOffset: e ? 0 : i.top,
21365              contextScroll: e ? 0 : this.oldScroll.y,
21366              contextDimension: this.innerHeight(),
21367              oldScroll: this.oldScroll.y,
21368              forward: "down",
21369              backward: "up",
21370              offsetProp: "top",
21371            },
21372          });
21373        for (var r in t) {
21374          var s = t[r];
21375          for (var a in this.waypoints[r]) {
21376            var l,
21377              h,
21378              p,
21379              u,
21380              c,
21381              d = this.waypoints[r][a],
21382              f = d.options.offset,
21383              w = d.triggerPoint,
21384              y = 0,
21385              g = null == w;
21386            d.element !== d.element.window &&
21387              (y = d.adapter.offset()[s.offsetProp]),
21388              "function" == typeof f
21389                ? (f = f.apply(d))
21390                : "string" == typeof f &&
21391                  ((f = parseFloat(f)),
21392                  d.options.offset.indexOf("%") > -1 &&
21393                    (f = Math.ceil((s.contextDimension * f) / 100))),
21394              (l = s.contextScroll - s.contextOffset),
21395              (d.triggerPoint = Math.floor(y + l - f)),
21396              (h = w < s.oldScroll),
21397              (p = d.triggerPoint >= s.oldScroll),
21398              (u = h && p),
21399              (c = !h && !p),
21400              !g && u
21401                ? (d.queueTrigger(s.backward), (o[d.group.id] = d.group))
21402                : !g && c
21403                  ? (d.queueTrigger(s.forward), (o[d.group.id] = d.group))
21404                  : g &&
21405                    s.oldScroll >= d.triggerPoint &&
21406                    (d.queueTrigger(s.forward), (o[d.group.id] = d.group));
21407          }
21408        }
21409        return (
21410          n.requestAnimationFrame(function () {
21411            for (var t in o) o[t].flushTriggers();
21412          }),
21413          this
21414        );
21415      }),
21416      (e.findOrCreateByElement = function (t) {
21417        return e.findByElement(t) || new e(t);
21418      }),
21419      (e.refreshAll = function () {
21420        for (var t in o) o[t].refresh();
21421      }),
21422      (e.findByElement = function (t) {
21423        return o[t.waypointContextKey];
21424      }),
21425      (window.onload = function () {
21426        r && r(), e.refreshAll();
21427      }),
21428      (n.requestAnimationFrame = function (e) {
21429        var i =
21430          window.requestAnimationFrame ||
21431          window.mozRequestAnimationFrame ||
21432          window.webkitRequestAnimationFrame ||
21433          t;
21434        i.call(window, e);
21435      }),
21436      (n.Context = e);
21437  })(),
21438  (function () {
21439    "use strict";
21440    function t(t, e) {
21441      return t.triggerPoint - e.triggerPoint;
21442    }
21443    function e(t, e) {
21444      return e.triggerPoint - t.triggerPoint;
21445    }
21446    function i(t) {
21447      (this.name = t.name),
21448        (this.axis = t.axis),
21449        (this.id = this.name + "-" + this.axis),
21450        (this.waypoints = []),
21451        this.clearTriggerQueues(),
21452        (o[this.axis][this.name] = this);
21453    }
21454    var o = { vertical: {}, horizontal: {} },
21455      n = window.Waypoint;
21456    (i.prototype.add = function (t) {
21457      this.waypoints.push(t);
21458    }),
21459      (i.prototype.clearTriggerQueues = function () {
21460        this.triggerQueues = { up: [], down: [], left: [], right: [] };
21461      }),
21462      (i.prototype.flushTriggers = function () {
21463        for (var i in this.triggerQueues) {
21464          var o = this.triggerQueues[i],
21465            n = "up" === i || "left" === i;
21466          o.sort(n ? e : t);
21467          for (var r = 0, s = o.length; s > r; r += 1) {
21468            var a = o[r];
21469            (a.options.continuous || r === o.length - 1) && a.trigger([i]);
21470          }
21471        }
21472        this.clearTriggerQueues();
21473      }),
21474      (i.prototype.next = function (e) {
21475        this.waypoints.sort(t);
21476        var i = n.Adapter.inArray(e, this.waypoints),
21477          o = i === this.waypoints.length - 1;
21478        return o ? null : this.waypoints[i + 1];
21479      }),
21480      (i.prototype.previous = function (e) {
21481        this.waypoints.sort(t);
21482        var i = n.Adapter.inArray(e, this.waypoints);
21483        return i ? this.waypoints[i - 1] : null;
21484      }),
21485      (i.prototype.queueTrigger = function (t, e) {
21486        this.triggerQueues[e].push(t);
21487      }),
21488      (i.prototype.remove = function (t) {
21489        var e = n.Adapter.inArray(t, this.waypoints);
21490        e > -1 && this.waypoints.splice(e, 1);
21491      }),
21492      (i.prototype.first = function () {
21493        return this.waypoints[0];
21494      }),
21495      (i.prototype.last = function () {
21496        return this.waypoints[this.waypoints.length - 1];
21497      }),
21498      (i.findOrCreate = function (t) {
21499        return o[t.axis][t.name] || new i(t);
21500      }),
21501      (n.Group = i);
21502  })(),
21503  (function () {
21504    "use strict";
21505    function t(t) {
21506      this.$element = e(t);
21507    }
21508    var e = window.jQuery,
21509      i = window.Waypoint;
21510    e.each(
21511      [
21512        "innerHeight",
21513        "innerWidth",
21514        "off",
21515        "offset",
21516        "on",
21517        "outerHeight",
21518        "outerWidth",
21519        "scrollLeft",
21520        "scrollTop",
21521      ],
21522      function (e, i) {
21523        t.prototype[i] = function () {
21524          var t = Array.prototype.slice.call(arguments);
21525          return this.$element[i].apply(this.$element, t);
21526        };
21527      },
21528    ),
21529      e.each(["extend", "inArray", "isEmptyObject"], function (i, o) {
21530        t[o] = e[o];
21531      }),
21532      i.adapters.push({ name: "jquery", Adapter: t }),
21533      (i.Adapter = t);
21534  })(),
21535  (function () {
21536    "use strict";
21537    function t(t) {
21538      return function () {
21539        var i = [],
21540          o = arguments[0];
21541        return (
21542          t.isFunction(arguments[0]) &&
21543            ((o = t.extend({}, arguments[1])), (o.handler = arguments[0])),
21544          this.each(function () {
21545            var n = t.extend({}, o, { element: this });
21546            "string" == typeof n.context &&
21547              (n.context = t(this).closest(n.context)[0]),
21548              i.push(new e(n));
21549          }),
21550          i
21551        );
21552      };
21553    }
21554    var e = window.Waypoint;
21555    window.jQuery && (window.jQuery.fn.waypoint = t(window.jQuery)),
21556      window.Zepto && (window.Zepto.fn.waypoint = t(window.Zepto));
21557  })();
21558
21559/*!
21560Waypoints Inview Shortcut - 4.0.1
21561Copyright © 2011-2016 Caleb Troughton
21562Licensed under the MIT license.
21563https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
21564*/
21565!(function () {
21566  "use strict";
21567  function t() {}
21568  function e(t) {
21569    (this.options = i.Adapter.extend({}, e.defaults, t)),
21570      (this.axis = this.options.horizontal ? "horizontal" : "vertical"),
21571      (this.waypoints = []),
21572      (this.element = this.options.element),
21573      this.createWaypoints();
21574  }
21575  var i = window.Waypoint;
21576  (e.prototype.createWaypoints = function () {
21577    for (
21578      var t = {
21579          vertical: [
21580            { down: "enter", up: "exited", offset: "100%" },
21581            { down: "entered", up: "exit", offset: "bottom-in-view" },
21582            { down: "exit", up: "entered", offset: 0 },
21583            {
21584              down: "exited",
21585              up: "enter",
21586              offset: function () {
21587                return -this.adapter.outerHeight();
21588              },
21589            },
21590          ],
21591          horizontal: [
21592            { right: "enter", left: "exited", offset: "100%" },
21593            { right: "entered", left: "exit", offset: "right-in-view" },
21594            { right: "exit", left: "entered", offset: 0 },
21595            {
21596              right: "exited",
21597              left: "enter",
21598              offset: function () {
21599                return -this.adapter.outerWidth();
21600              },
21601            },
21602          ],
21603        },
21604        e = 0,
21605        i = t[this.axis].length;
21606      i > e;
21607      e++
21608    ) {
21609      var n = t[this.axis][e];
21610      this.createWaypoint(n);
21611    }
21612  }),
21613    (e.prototype.createWaypoint = function (t) {
21614      var e = this;
21615      this.waypoints.push(
21616        new i({
21617          context: this.options.context,
21618          element: this.options.element,
21619          enabled: this.options.enabled,
21620          handler: (function (t) {
21621            return function (i) {
21622              e.options[t[i]].call(e, i);
21623            };
21624          })(t),
21625          offset: t.offset,
21626          horizontal: this.options.horizontal,
21627        }),
21628      );
21629    }),
21630    (e.prototype.destroy = function () {
21631      for (var t = 0, e = this.waypoints.length; e > t; t++)
21632        this.waypoints[t].destroy();
21633      this.waypoints = [];
21634    }),
21635    (e.prototype.disable = function () {
21636      for (var t = 0, e = this.waypoints.length; e > t; t++)
21637        this.waypoints[t].disable();
21638    }),
21639    (e.prototype.enable = function () {
21640      for (var t = 0, e = this.waypoints.length; e > t; t++)
21641        this.waypoints[t].enable();
21642    }),
21643    (e.defaults = {
21644      context: window,
21645      enabled: !0,
21646      enter: t,
21647      entered: t,
21648      exit: t,
21649      exited: t,
21650    }),
21651    (i.Inview = e);
21652})();
21653
21654// @codekit-prepend quiet "vendor/jquery-ui.min.js"
21655// @codekit-prepend quiet "vendor/flickity.pkgd.min.js"
21656// @codekit-prepend quiet "vendor/modernizr.js"
21657// @codekit-prepend quiet "vendor/matter.min.js"
21658// @codekit-prepend quiet "vendor/jquery.lazyload.min.js"
21659// @codekit-prepend quiet "vendor/jquery.waypoints.min.js"
21660// @codekit-prepend quiet "vendor/inview.min.js"
21661
21662(function (init) {
21663  init(window.jQuery, window, document);
21664})(function ($, window, document) {
21665  $(function () {
21666    // DOM is ready
21667
21668    /**
21669     *
21670     *   CACHING DOM
21671     *
21672     */
21673
21674    var $body = $("body"),
21675      assetsLocation = $(".assets-folder-location").text(),
21676      mobileWidth = 667;
21677
21678    /**
21679     *
21680     *   MY SCRIPTS
21681     *
21682     */
21683
21684    // Adds _blank to external links
21685    $("a").each(function () {
21686      if (this.host !== window.location.host) {
21687        $(this).attr("target", "_blank");
21688      }
21689    });
21690
21691    $("img.lazy").lazyload({
21692      threshold: 400,
21693      load: function (elements_left, settings) {
21694        $(this).addClass("is-loaded");
21695      },
21696    });
21697
21698    function addAnimatedLogo1() {
21699      var canvasWidth = 1500, // 1600
21700        canvasHeight = 1000;
21701
21702      // module aliases
21703      var Engine = Matter.Engine,
21704        Render = Matter.Render,
21705        World = Matter.World,
21706        Bodies = Matter.Bodies;
21707
21708      // create an engine
21709      var engine = Engine.create();
21710
21711      // create a renderer
21712      var render = Render.create({
21713        element: document.getElementById("big-logo"),
21714        engine: engine,
21715        options: {
21716          wireframes: false,
21717          background: "transparent",
21718          width: canvasWidth,
21719          height: canvasHeight,
21720        },
21721      });
21722
21723      engine.world.gravity.y = 2;
21724
21725      var squareSize = 200, // 80
21726        squareGutter = squareSize / 4, // 20
21727        circleRadius = squareSize * 0.59375,
21728        boundOptions = {
21729          isStatic: true,
21730          render: {
21731            fillStyle: "transparent",
21732            strokeStyle: "transparent",
21733            lineWidth: 0,
21734          },
21735        };
21736
21737      var spriteScale = 0.53;
21738
21739      var circleRenderStyleArray = [];
21740      for (var i = 0; i < 8; i++) {
21741        circleRenderStyleArray.push({
21742          render: {
21743            fillStyle: "black",
21744            strokeStyle: "transparent",
21745            lineWidth: 0,
21746            sprite: {
21747              texture: assetsLocation + "logo/" + i + ".png",
21748              xScale: spriteScale,
21749              yScale: spriteScale,
21750            },
21751          },
21752        });
21753      }
21754
21755      var squareRenderStyleArray = [];
21756      for (var i = 7; i < 15; i++) {
21757        squareRenderStyleArray.push({
21758          render: {
21759            fillStyle: "black",
21760            strokeStyle: "transparent",
21761            lineWidth: 0,
21762            sprite: {
21763              texture: assetsLocation + "logo/" + i + ".png",
21764              xScale: spriteScale,
21765              yScale: spriteScale,
21766            },
21767          },
21768        });
21769      }
21770
21771      var line1X = canvasWidth / 2 - circleRadius * 2,
21772        line2X = line1X - circleRadius,
21773        line3X = line2X - squareGutter / 2.5,
21774        line4X = line3X + squareSize / 2 + squareGutter / 2;
21775
21776      var line1Y = circleRadius * 1, // circleRadius     3
21777        line2Y = line1Y + circleRadius * 1.7;
21778      line3Y = line1Y + circleRadius * 2 + squareSize * 0.94 + 0;
21779      line4Y = line1Y + circleRadius * 4 + squareSize * 0.73;
21780
21781      // Bodies.rectangle(x, y, width, height, [options])
21782      World.add(engine.world, [
21783        Bodies.circle(
21784          line1X + circleRadius * 0,
21785          line1Y,
21786          circleRadius,
21787          circleRenderStyleArray[1],
21788        ), // M
21789        Bodies.circle(
21790          line1X + circleRadius * 2,
21791          line1Y,
21792          circleRadius,
21793          circleRenderStyleArray[2],
21794        ), // U
21795        Bodies.circle(
21796          line1X + circleRadius * 4,
21797          line1Y,
21798          circleRadius,
21799          circleRenderStyleArray[3],
21800        ), // S
21801
21802        Bodies.circle(
21803          line2X + circleRadius * 0,
21804          line2Y,
21805          circleRadius,
21806          circleRenderStyleArray[4],
21807        ), // I
21808        Bodies.circle(
21809          line2X + circleRadius * 2,
21810          line2Y,
21811          circleRadius,
21812          circleRenderStyleArray[5],
21813        ), // Q
21814        Bodies.circle(
21815          line2X + circleRadius * 4,
21816          line2Y,
21817          circleRadius,
21818          circleRenderStyleArray[6],
21819        ), // U
21820        Bodies.circle(
21821          line2X + circleRadius * 6,
21822          line2Y,
21823          circleRadius,
21824          circleRenderStyleArray[7],
21825        ), // E
21826
21827        Bodies.rectangle(
21828          line3X + squareSize * 0 + squareGutter * 0,
21829          line3Y,
21830          squareSize,
21831          squareSize,
21832          squareRenderStyleArray[1],
21833        ), // J
21834        Bodies.rectangle(
21835          line3X + squareSize * 1 + squareGutter * 1,
21836          line3Y,
21837          squareSize,
21838          squareSize,
21839          squareRenderStyleArray[2],
21840        ), // O
21841        Bodies.rectangle(
21842          line3X + squareSize * 2 + squareGutter * 2,
21843          line3Y,
21844          squareSize,
21845          squareSize,
21846          squareRenderStyleArray[3],
21847        ), // U
21848        Bodies.rectangle(
21849          line3X + squareSize * 3 + squareGutter * 3,
21850          line3Y,
21851          squareSize,
21852          squareSize,
21853          squareRenderStyleArray[4],
21854        ), // R
21855
21856        Bodies.rectangle(
21857          line4X + squareSize * 0 + squareGutter * 0,
21858          line4Y,
21859          squareSize,
21860          squareSize,
21861          squareRenderStyleArray[5],
21862        ), // N
21863        Bodies.rectangle(
21864          line4X + squareSize * 1 + squareGutter * 1,
21865          line4Y,
21866          squareSize,
21867          squareSize,
21868          squareRenderStyleArray[6],
21869        ), // A
21870        Bodies.rectangle(
21871          line4X + squareSize * 2 + squareGutter * 2,
21872          line4Y,
21873          squareSize,
21874          squareSize,
21875          squareRenderStyleArray[7],
21876        ), // L
21877
21878        Bodies.rectangle(15, canvasHeight / 2, 1, canvasHeight, boundOptions), // left Bound
21879        Bodies.rectangle(
21880          canvasWidth - 15,
21881          canvasHeight / 2,
21882          1,
21883          canvasHeight,
21884          boundOptions,
21885        ), // right Bound
21886        Bodies.rectangle(
21887          canvasWidth / 2,
21888          canvasHeight + 6,
21889          canvasWidth,
21890          20,
21891          boundOptions,
21892        ), // bottom Bound
21893      ]);
21894
21895      // run the engine
21896      Engine.run(engine);
21897
21898      // run the renderer
21899      Render.run(render);
21900    }
21901
21902    function addAnimatedLogo2() {
21903      var canvasWidth = 1500, // 1600
21904        canvasHeight = 1000;
21905
21906      // module aliases
21907      var Engine = Matter.Engine,
21908        Render = Matter.Render,
21909        World = Matter.World,
21910        Bodies = Matter.Bodies;
21911
21912      // create an engine
21913      var engine = Engine.create();
21914
21915      // create a renderer
21916      var render = Render.create({
21917        element: document.getElementById("big-logo"),
21918        engine: engine,
21919        options: {
21920          wireframes: false,
21921          background: "transparent",
21922          width: canvasWidth,
21923          height: canvasHeight,
21924        },
21925      });
21926
21927      // engine.world.gravity.y = 0;
21928
21929      var squareSize = 200, // 80
21930        squareGutter = squareSize / 4, // 20
21931        circleRadius = squareSize * 0.59375,
21932        boundOptions = {
21933          isStatic: true,
21934          render: {
21935            fillStyle: "transparent",
21936            strokeStyle: "transparent",
21937            lineWidth: 0,
21938          },
21939        };
21940
21941      var spriteScale = 0.53;
21942
21943      var circleRenderStyleArray = [];
21944      for (var i = 0; i < 8; i++) {
21945        circleRenderStyleArray.push({
21946          render: {
21947            fillStyle: "black",
21948            strokeStyle: "transparent",
21949            lineWidth: 0,
21950            sprite: {
21951              texture: assetsLocation + "logo/" + i + ".png",
21952              xScale: spriteScale,
21953              yScale: spriteScale,
21954            },
21955          },
21956        });
21957      }
21958
21959      var square_J = {
21960          x: 119 + squareSize / 2,
21961          y: canvasHeight - squareSize / 2 - 200,
21962          render: {
21963            render: {
21964              fillStyle: "black",
21965              strokeStyle: "transparent",
21966              lineWidth: 0,
21967              sprite: {
21968                texture: assetsLocation + "logo/8.png",
21969                xScale: spriteScale,
21970                yScale: spriteScale,
21971              },
21972            },
21973            angle: -90 * (Math.PI / 180),
21974          },
21975        },
21976        square_O = {
21977          x: square_J["x"] + squareSize / 2 - 2,
21978          y: square_J["y"] - squareSize * 1.23,
21979          render: {
21980            render: {
21981              fillStyle: "black",
21982              strokeStyle: "transparent",
21983              lineWidth: 0,
21984              sprite: {
21985                texture: assetsLocation + "logo/9.png",
21986                xScale: spriteScale,
21987                yScale: spriteScale,
21988              },
21989            },
21990            angle: -46.12 * (Math.PI / 180),
21991          },
21992        },
21993        square_U = {
21994          x: square_O["x"] + squareSize * 0.97,
21995          y: square_O["y"] - squareSize * 0.67,
21996          render: {
21997            render: {
21998              fillStyle: "black",
21999              strokeStyle: "transparent",
22000              lineWidth: 0,
22001              sprite: {
22002                texture: assetsLocation + "logo/10.png",
22003                xScale: spriteScale,
22004                yScale: spriteScale,
22005              },
22006            },
22007            angle: -23 * (Math.PI / 180),
22008          },
22009        },
22010        square_R = {
22011          x: square_U["x"] + squareSize * 1.15,
22012          y: square_U["y"] - squareSize * 0.235,
22013          render: {
22014            render: {
22015              fillStyle: "black",
22016              strokeStyle: "transparent",
22017              lineWidth: 0,
22018              sprite: {
22019                texture: assetsLocation + "logo/11.png",
22020                xScale: spriteScale,
22021                yScale: spriteScale,
22022              },
22023            },
22024            angle: 0 * (Math.PI / 180),
22025          },
22026        },
22027        square_N = {
22028          x: square_R["x"] + squareSize * 1.15,
22029          y: square_R["y"] + squareSize * 0.235,
22030          render: {
22031            render: {
22032              fillStyle: "black",
22033              strokeStyle: "transparent",
22034              lineWidth: 0,
22035              sprite: {
22036                texture: assetsLocation + "logo/12.png",
22037                xScale: spriteScale,
22038                yScale: spriteScale,
22039              },
22040            },
22041            angle: 23 * (Math.PI / 180),
22042          },
22043        },
22044        square_A = {
22045          x: square_N["x"] + squareSize * 0.97,
22046          y: square_N["y"] + squareSize * 0.67,
22047          render: {
22048            render: {
22049              fillStyle: "black",
22050              strokeStyle: "transparent",
22051              lineWidth: 0,
22052              sprite: {
22053                texture: assetsLocation + "logo/13.png",
22054                xScale: spriteScale,
22055                yScale: spriteScale,
22056              },
22057            },
22058            angle: 46.12 * (Math.PI / 180),
22059          },
22060        },
22061        square_L = {
22062          x: square_A["x"] + squareSize / 2 - 2,
22063          y: square_J["y"],
22064          render: {
22065            render: {
22066              fillStyle: "black",
22067              strokeStyle: "transparent",
22068              lineWidth: 0,
22069              sprite: {
22070                texture: assetsLocation + "logo/14.png",
22071                xScale: spriteScale,
22072                yScale: spriteScale,
22073              },
22074            },
22075            angle: 90 * (Math.PI / 180),
22076          },
22077        };
22078      var circle_I = {
22079          x: canvasWidth / 2 - circleRadius * 0.08,
22080          y: canvasHeight - squareSize * 4.57 - 200,
22081        },
22082        circle_S = {
22083          x: circle_I["x"] - circleRadius * 1.33,
22084          y: circle_I["y"] + circleRadius * 1.53,
22085        },
22086        circle_U_1 = {
22087          x: circle_S["x"] - circleRadius * 1.96,
22088          y: circle_S["y"] - circleRadius * 0.5,
22089        },
22090        circle_M = {
22091          x: circle_U_1["x"] - circleRadius * 0.97,
22092          y: circle_U_1["y"] + circleRadius * 1.78,
22093        },
22094        circle_Q = {
22095          x: circle_I["x"] + circleRadius * 1.33,
22096          y: circle_I["y"] + circleRadius * 1.53,
22097        },
22098        circle_U_2 = {
22099          x: circle_Q["x"] + circleRadius * 1.96,
22100          y: circle_Q["y"] - circleRadius * 0.5,
22101        },
22102        circle_E = {
22103          x: circle_U_2["x"] + circleRadius * 0.97,
22104          y: circle_U_2["y"] + circleRadius * 1.78,
22105        };
22106      // Bodies.rectangle(x, y, width, height, [options])
22107      World.add(engine.world, [
22108        Bodies.circle(
22109          circle_M["x"],
22110          circle_M["y"],
22111          circleRadius,
22112          circleRenderStyleArray[1],
22113        ), // M
22114        Bodies.circle(
22115          circle_U_1["x"],
22116          circle_U_1["y"],
22117          circleRadius,
22118          circleRenderStyleArray[2],
22119        ), // U
22120        Bodies.circle(
22121          circle_S["x"],
22122          circle_S["y"],
22123          circleRadius,
22124          circleRenderStyleArray[3],
22125        ), // S
22126        Bodies.circle(
22127          circle_I["x"],
22128          circle_I["y"],
22129          circleRadius,
22130          circleRenderStyleArray[4],
22131        ), // I
22132        Bodies.circle(
22133          circle_Q["x"],
22134          circle_Q["y"],
22135          circleRadius,
22136          circleRenderStyleArray[5],
22137        ), // Q
22138        Bodies.circle(
22139          circle_U_2["x"],
22140          circle_U_2["y"],
22141          circleRadius,
22142          circleRenderStyleArray[6],
22143        ), // U
22144        Bodies.circle(
22145          circle_E["x"],
22146          circle_E["y"],
22147          circleRadius,
22148          circleRenderStyleArray[7],
22149        ), // E
22150
22151        Bodies.rectangle(
22152          square_J["x"],
22153          square_J["y"],
22154          squareSize,
22155          squareSize,
22156          square_J["render"],
22157        ), // J
22158        Bodies.rectangle(
22159          square_O["x"],
22160          square_O["y"],
22161          squareSize,
22162          squareSize,
22163          square_O["render"],
22164        ), // O
22165        Bodies.rectangle(
22166          square_U["x"],
22167          square_U["y"],
22168          squareSize,
22169          squareSize,
22170          square_U["render"],
22171        ), // U
22172        Bodies.rectangle(
22173          square_R["x"],
22174          square_R["y"],
22175          squareSize,
22176          squareSize,
22177          square_R["render"],
22178        ), // R
22179        Bodies.rectangle(
22180          square_N["x"],
22181          square_N["y"],
22182          squareSize,
22183          squareSize,
22184          square_N["render"],
22185        ), // N
22186        Bodies.rectangle(
22187          square_A["x"],
22188          square_A["y"],
22189          squareSize,
22190          squareSize,
22191          square_A["render"],
22192        ), // A
22193        Bodies.rectangle(
22194          square_L["x"],
22195          square_L["y"],
22196          squareSize,
22197          squareSize,
22198          square_L["render"],
22199        ), // L
22200
22201        Bodies.rectangle(15, canvasHeight / 2, 1, canvasHeight, boundOptions), // left Bound
22202        Bodies.rectangle(
22203          canvasWidth - 15,
22204          canvasHeight / 2,
22205          1,
22206          canvasHeight,
22207          boundOptions,
22208        ), // right Bound
22209        Bodies.rectangle(
22210          canvasWidth / 2,
22211          canvasHeight + 6,
22212          canvasWidth,
22213          20,
22214          boundOptions,
22215        ), // bottom Bound
22216      ]);
22217
22218      // run the engine
22219      Engine.run(engine);
22220
22221      // run the renderer
22222      Render.run(render);
22223    }
22224
22225    if ($("#big-logo").length) {
22226      var randomLogoNumber = Math.floor(Math.random() * 2) + 1;
22227
22228      if (randomLogoNumber == 1) {
22229        addAnimatedLogo1();
22230      } else if (randomLogoNumber == 2) {
22231        addAnimatedLogo2();
22232      }
22233    }
22234
22235    /* Menu */
22236    $(".menu-button").click(function () {
22237      $body.toggleClass("body-menu-is-open");
22238    });
22239    $(".menu-overlay-button").click(function () {
22240      $body.removeClass("body-menu-is-open");
22241    });
22242    $(document).keydown(function (e) {
22243      if (e.key == "Escape") {
22244        if ($body.hasClass("body-menu-is-open")) {
22245          $body.removeClass("body-menu-is-open");
22246        }
22247      }
22248    });
22249
22250    /* Home */
22251    // $('.home-grid__item__image').hover(
22252    // 	function() {
22253    // 		$(this).parent().addClass('is-hover');
22254    // 	},
22255    // 	function() {
22256    // 		$(this).parent().removeClass('is-hover');
22257    // 	}
22258    // );
22259
22260    function setIframeRatio($iframe) {
22261      var iframeWidth = $iframe.attr("width"),
22262        iframeHeight = $iframe.attr("height"),
22263        iframeRatio = (iframeHeight / iframeWidth) * 100,
22264        $videoWrapper = $iframe.parent();
22265
22266      if (iframeWidth !== undefined && iframeHeight !== undefined) {
22267        $videoWrapper
22268          .addClass("has-calculated-ratio")
22269          .css("padding-bottom", iframeRatio + "%");
22270      }
22271    }
22272
22273    /* Article */
22274    if ($(".article").length) {
22275      var $articleHeaderRight = $(".article__header__right"),
22276        $articlePlayers = $(".article__covers__item__player");
22277
22278      function emptyPlayer() {
22279        $articleHeaderRight.removeClass("has-player-open");
22280        $articlePlayers.html("");
22281      }
22282
22283      if (!$body.hasClass("body-paywall-is-on")) {
22284        if ($(".article__records").hasClass("has-multiple-records")) {
22285          $(".article__records__item").click(function () {
22286            var $this = $(this),
22287              $currentActiveRecordCover = $(".article__covers__item.is-active");
22288            (clickedRecordSlug = $this.attr("data-record")),
22289              ($clickedRecordCover = $(
22290                ".article__covers__item--" + clickedRecordSlug,
22291              ));
22292
22293            // desactive others
22294            $(".article__records__item").removeClass("is-active");
22295            $(".article__listen-buttons-record")
22296              .removeClass("is-active")
22297              .removeClass("is-open");
22298            $(".article__listen-buttons__btn").removeClass("is-active");
22299            $currentActiveRecordCover.appendTo(".article__covers"); // move current cover to back
22300            $(".article__covers__item").removeClass("is-active");
22301            emptyPlayer();
22302
22303            // activate clicked record
22304            $this.addClass("is-active");
22305            $(".article__listen-buttons-record--" + clickedRecordSlug).addClass(
22306              "is-active",
22307            );
22308
22309            $clickedRecordCover.prependTo(".article__covers"); // move new cover to front
22310            $clickedRecordCover.addClass("is-active");
22311
22312            // lazyload cover image
22313            var $clickedRecordCoverImg = $clickedRecordCover.find("img"),
22314              clickedRecordDataOriginal =
22315                $clickedRecordCoverImg.attr("data-original");
22316            if (!$clickedRecordCoverImg.hasClass("is-loaded")) {
22317              $clickedRecordCoverImg.attr("src", clickedRecordDataOriginal);
22318            }
22319          });
22320        }
22321      }
22322
22323      $(".article__listen-buttons__btn--listen").click(function () {
22324        var $this = $(this);
22325
22326        if (!$this.hasClass("is-active")) {
22327          $this.addClass("is-active").parent().addClass("is-open");
22328        } else {
22329          $this.removeClass("is-active").parent().removeClass("is-open");
22330
22331          $(".article__listen-buttons__btn--platform").removeClass("is-active");
22332
22333          emptyPlayer();
22334        }
22335      });
22336
22337      $(".article__listen-buttons__btn--platform").click(function () {
22338        var $this = $(this),
22339          relatedRecordSlug = $this.parent().attr("data-record"),
22340          $relatedPlayer = $(
22341            ".article__covers__item--" + relatedRecordSlug,
22342          ).find(".article__covers__item__player");
22343        embedCode = $this.attr("data-embed-code");
22344
22345        if (!$this.hasClass("is-external-link")) {
22346          if ($this.hasClass("is-active")) {
22347            // close
22348
22349            $this.removeClass("is-active");
22350            $(".article__listen-buttons__btn--platform").removeClass(
22351              "is-active",
22352            );
22353
22354            emptyPlayer();
22355          } else {
22356            // open
22357
22358            if ($(window).width() < mobileWidth) {
22359              // is mobile
22360
22361              var urlScheme = $this.attr("data-url-scheme");
22362
22363              if (
22364                typeof urlScheme !== typeof undefined &&
22365                urlScheme !== false
22366              ) {
22367                // has URL scheme
22368
22369                window.location.replace(urlScheme);
22370              } else {
22371                $(".article__listen-buttons__btn--platform").removeClass(
22372                  "is-active",
22373                );
22374                $this.addClass("is-active");
22375
22376                if (!$articleHeaderRight.hasClass("has-player-open")) {
22377                  $articleHeaderRight.addClass("has-player-open");
22378                  $relatedPlayer.html(embedCode);
22379                } else {
22380                  $relatedPlayer.html(embedCode);
22381                }
22382              }
22383            } else {
22384              // is not mobile
22385
22386              $(".article__listen-buttons__btn--platform").removeClass(
22387                "is-active",
22388              );
22389              $this.addClass("is-active");
22390
22391              if (!$articleHeaderRight.hasClass("has-player-open")) {
22392                $articleHeaderRight.addClass("has-player-open");
22393                $relatedPlayer.html(embedCode);
22394              } else {
22395                $relatedPlayer.html(embedCode);
22396              }
22397            }
22398          }
22399        }
22400      });
22401
22402      $(".article__listen-buttons__btn--read-version").click(function () {
22403        var $this = $(this),
22404          $playerWrapper = $(".article__read-version"),
22405          $player = $playerWrapper.find("audio"),
22406          mp3URL = $player.attr("data-src");
22407
22408        if ($playerWrapper.hasClass("is-open")) {
22409          $(".article__listen-buttons__btn--read-version").removeClass(
22410            "is-active",
22411          );
22412          $playerWrapper.removeClass("is-open");
22413          $player.trigger("pause");
22414        } else {
22415          var playerSRC = $player.attr("src");
22416
22417          if (typeof playerSRC !== typeof undefined && playerSRC !== false) {
22418          } else {
22419            $player.attr("src", mp3URL);
22420          }
22421
22422          $this.addClass("is-active");
22423          $playerWrapper.addClass("is-open");
22424          $player.trigger("play");
22425        }
22426      });
22427
22428      $("iframe").each(function () {
22429        setIframeRatio($(this));
22430      });
22431
22432      $(".article-note__button").click(function () {
22433        var $this = $(this),
22434          $note = $this.parent(),
22435          $noteContent = $note.find(".article-note__content"),
22436          dataNoteContent = $note.attr("data-note-content"),
22437          $caption = $note.find(".article-note__caption"),
22438          dataNoteCaption = $note.attr("data-note-caption");
22439
22440        if ($note.hasClass("is-closed")) {
22441          $noteContent.html(dataNoteContent);
22442
22443          setIframeRatio($noteContent.find("iframe"));
22444
22445          if (dataNoteCaption != "") {
22446            $caption.html(dataNoteCaption);
22447          }
22448
22449          $note
22450            .removeClass("is-closed")
22451            .addClass("is-open")
22452            .addClass("is-init");
22453        } else {
22454          $note.removeClass("is-open").addClass("is-closed");
22455          $noteContent.html("");
22456          $caption.html("");
22457        }
22458      });
22459
22460      $(".article-note.is-closed").each(function (index) {
22461        var number = index + 1;
22462        $(this).find(".article-note__button__num").text(number);
22463      });
22464
22465      if ($(".must-log-in").length) {
22466        var seConnecterURL = $(
22467          ".header-account-menu__item.is-se-connecter a",
22468        ).attr("href");
22469
22470        $(".must-log-in a").attr("href", seConnecterURL);
22471      }
22472
22473      // pastille
22474      var $pastilleFlottante = $(".article__pastille-flotante");
22475
22476      $(".article__content").waypoint({
22477        handler: function (direction) {
22478          if (direction == "down") {
22479            $pastilleFlottante.addClass("is-visible");
22480          } else {
22481            $pastilleFlottante.removeClass("is-visible");
22482          }
22483        },
22484      });
22485
22486      var inview = new Waypoint.Inview({
22487        element: $(".article__footer__subscription")[0],
22488        enter: function (direction) {
22489          if (direction == "down") {
22490            $pastilleFlottante.removeClass("is-visible");
22491          }
22492        },
22493        exited: function (direction) {
22494          if (direction == "up") {
22495            $pastilleFlottante.addClass("is-visible");
22496          }
22497        },
22498      });
22499    }
22500
22501    /* Archives */
22502    if ($(".archives-wrapper").length) {
22503      $(".archives__list__item__title a").hover(
22504        function () {
22505          $(this).parent().parent().addClass("is-hovered");
22506        },
22507        function () {
22508          $(this).parent().parent().removeClass("is-hovered");
22509        },
22510      );
22511    }
22512
22513    /* Recherche */
22514    if ($(".page-template-recherche").length) {
22515      $(".taxonomy__header__add-tag-button").click(function () {
22516        $body.toggleClass("body-add-tag-is-open");
22517      });
22518
22519      if ($("#searchform").length) {
22520        $('#searchform input[type="text"]').focus();
22521      }
22522    }
22523
22524    /* À propos */
22525    if ($(".a-propos-wrapper").length) {
22526      $(".a-propos__faq__item__question").click(function () {
22527        $(this).parent().toggleClass("is-open");
22528      });
22529    }
22530
22531    /* Compte */
22532
22533    /*
22534		Newsletter
22535	*/
22536    if ($(".mailjet_widget_front_container".length)) {
22537      $('.mailjet_widget_front_container input[type="email"]').attr(
22538        "placeholder",
22539        "Email",
22540      );
22541    }
22542
22543    /*
22544		RCP
22545	*/
22546
22547    /*
22548		RCP: View Limit
22549	*/
22550
22551    var $paywallDetector = $(".paywall-is-active-detector");
22552
22553    if ($paywallDetector.length) {
22554      $body.addClass("body-paywall-is-on");
22555    } else {
22556      $body.addClass("body-paywall-is-off");
22557    }
22558
22559    /* Abonnement modulable */
22560    if ($(".abonnements-select").length) {
22561      var $abonnementTotal = $(".abonnements-total span"),
22562        $abonnementList = $(".abonnements-list"),
22563        $abonnementLink = $(".abonnements-link a"),
22564        abonnementURL = $abonnementLink.attr("data-base-url");
22565
22566      $(".abonnements-select__checkbox").each(function () {
22567        var $this = $(this);
22568
22569        $this.change(function () {
22570          var selectedTitles = [];
22571          $(".abonnements-select__checkbox:checked").each(function () {
22572            selectedTitles.push($(this).attr("name"));
22573          });
22574
22575          var matchingAbonnement = null;
22576          if (window._abonnement_data) {
22577            for (var i = 0; i < window._abonnement_data.length; i++) {
22578              var abonnement = window._abonnement_data[i];
22579
22580              if (abonnement.titles.length === selectedTitles.length) {
22581                var titlesMatch = true;
22582                for (var j = 0; j < selectedTitles.length; j++) {
22583                  if (abonnement.titles.indexOf(selectedTitles[j]) === -1) {
22584                    titlesMatch = false;
22585                    break;
22586                  }
22587                }
22588                if (titlesMatch) {
22589                  matchingAbonnement = abonnement;
22590                  break;
22591                }
22592              }
22593            }
22594          }
22595
22596          if (matchingAbonnement) {
22597            $abonnementTotal.text(matchingAbonnement.price);
22598            $abonnementLink.attr("href", abonnementURL + matchingAbonnement.id);
22599          }
22600
22601          $abonnementList.text(
22602            selectedTitles.join("///") +
22603              (selectedTitles.length > 0 ? "///" : ""),
22604          );
22605        });
22606      });
22607
22608      // Selects Musique Journal on page load
22609      // $('.abonnements-select__item.is-musique-journal input').prop( "checked", true );
22610    }
22611  });
22612});

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.