(() => {
  var __create = Object.create;
  var __defProp = Object.defineProperty;
  var __defProps = Object.defineProperties;
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
  var __getOwnPropNames = Object.getOwnPropertyNames;
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
  var __getProtoOf = Object.getPrototypeOf;
  var __hasOwnProp = Object.prototype.hasOwnProperty;
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
  var __defNormalProp = (obj, key, value2) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value2 }) : obj[key] = value2;
  var __spreadValues = (a, b) => {
    for (var prop in b || (b = {}))
      if (__hasOwnProp.call(b, prop))
        __defNormalProp(a, prop, b[prop]);
    if (__getOwnPropSymbols)
      for (var prop of __getOwnPropSymbols(b)) {
        if (__propIsEnum.call(b, prop))
          __defNormalProp(a, prop, b[prop]);
      }
    return a;
  };
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
    get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
  }) : x)(function(x) {
    if (typeof require !== "undefined")
      return require.apply(this, arguments);
    throw new Error('Dynamic require of "' + x + '" is not supported');
  });
  var __commonJS = (cb, mod) => function __require2() {
    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  };
  var __export = (target, all) => {
    for (var name2 in all)
      __defProp(target, name2, { get: all[name2], enumerable: true });
  };
  var __copyProps = (to, from, except, desc) => {
    if (from && typeof from === "object" || typeof from === "function") {
      for (let key of __getOwnPropNames(from))
        if (!__hasOwnProp.call(to, key) && key !== except)
          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
    }
    return to;
  };
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
    mod
  ));

  // node_modules/jquery/dist/jquery.js
  var require_jquery = __commonJS({
    "node_modules/jquery/dist/jquery.js"(exports, module) {
      (function(global2, factory) {
        "use strict";
        if (typeof module === "object" && typeof module.exports === "object") {
          module.exports = global2.document ? factory(global2, true) : function(w) {
            if (!w.document) {
              throw new Error("jQuery requires a window with a document");
            }
            return factory(w);
          };
        } else {
          factory(global2);
        }
      })(typeof window !== "undefined" ? window : exports, function(window2, noGlobal) {
        "use strict";
        var arr = [];
        var getProto = Object.getPrototypeOf;
        var slice = arr.slice;
        var flat = arr.flat ? function(array) {
          return arr.flat.call(array);
        } : function(array) {
          return arr.concat.apply([], array);
        };
        var push = arr.push;
        var indexOf = arr.indexOf;
        var class2type = {};
        var toString2 = class2type.toString;
        var hasOwn = class2type.hasOwnProperty;
        var fnToString = hasOwn.toString;
        var ObjectFunctionString = fnToString.call(Object);
        var support = {};
        var isFunction = function isFunction2(obj) {
          return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function";
        };
        var isWindow = function isWindow2(obj) {
          return obj != null && obj === obj.window;
        };
        var document2 = window2.document;
        var preservedScriptAttributes = {
          type: true,
          src: true,
          nonce: true,
          noModule: true
        };
        function DOMEval(code, node, doc) {
          doc = doc || document2;
          var i2, val, script = doc.createElement("script");
          script.text = code;
          if (node) {
            for (i2 in preservedScriptAttributes) {
              val = node[i2] || node.getAttribute && node.getAttribute(i2);
              if (val) {
                script.setAttribute(i2, val);
              }
            }
          }
          doc.head.appendChild(script).parentNode.removeChild(script);
        }
        function toType(obj) {
          if (obj == null) {
            return obj + "";
          }
          return typeof obj === "object" || typeof obj === "function" ? class2type[toString2.call(obj)] || "object" : typeof obj;
        }
        var version = "3.7.0", rhtmlSuffix = /HTML$/i, jQuery3 = function(selector, context) {
          return new jQuery3.fn.init(selector, context);
        };
        jQuery3.fn = jQuery3.prototype = {
          jquery: version,
          constructor: jQuery3,
          length: 0,
          toArray: function() {
            return slice.call(this);
          },
          get: function(num) {
            if (num == null) {
              return slice.call(this);
            }
            return num < 0 ? this[num + this.length] : this[num];
          },
          pushStack: function(elems) {
            var ret = jQuery3.merge(this.constructor(), elems);
            ret.prevObject = this;
            return ret;
          },
          each: function(callback) {
            return jQuery3.each(this, callback);
          },
          map: function(callback) {
            return this.pushStack(jQuery3.map(this, function(elem, i2) {
              return callback.call(elem, i2, elem);
            }));
          },
          slice: function() {
            return this.pushStack(slice.apply(this, arguments));
          },
          first: function() {
            return this.eq(0);
          },
          last: function() {
            return this.eq(-1);
          },
          even: function() {
            return this.pushStack(jQuery3.grep(this, function(_elem, i2) {
              return (i2 + 1) % 2;
            }));
          },
          odd: function() {
            return this.pushStack(jQuery3.grep(this, function(_elem, i2) {
              return i2 % 2;
            }));
          },
          eq: function(i2) {
            var len = this.length, j = +i2 + (i2 < 0 ? len : 0);
            return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
          },
          end: function() {
            return this.prevObject || this.constructor();
          },
          push,
          sort: arr.sort,
          splice: arr.splice
        };
        jQuery3.extend = jQuery3.fn.extend = function() {
          var options, name2, src, copy, copyIsArray, clone, target = arguments[0] || {}, i2 = 1, length2 = arguments.length, deep = false;
          if (typeof target === "boolean") {
            deep = target;
            target = arguments[i2] || {};
            i2++;
          }
          if (typeof target !== "object" && !isFunction(target)) {
            target = {};
          }
          if (i2 === length2) {
            target = this;
            i2--;
          }
          for (; i2 < length2; i2++) {
            if ((options = arguments[i2]) != null) {
              for (name2 in options) {
                copy = options[name2];
                if (name2 === "__proto__" || target === copy) {
                  continue;
                }
                if (deep && copy && (jQuery3.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
                  src = target[name2];
                  if (copyIsArray && !Array.isArray(src)) {
                    clone = [];
                  } else if (!copyIsArray && !jQuery3.isPlainObject(src)) {
                    clone = {};
                  } else {
                    clone = src;
                  }
                  copyIsArray = false;
                  target[name2] = jQuery3.extend(deep, clone, copy);
                } else if (copy !== void 0) {
                  target[name2] = copy;
                }
              }
            }
          }
          return target;
        };
        jQuery3.extend({
          expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
          isReady: true,
          error: function(msg) {
            throw new Error(msg);
          },
          noop: function() {
          },
          isPlainObject: function(obj) {
            var proto, Ctor;
            if (!obj || toString2.call(obj) !== "[object Object]") {
              return false;
            }
            proto = getProto(obj);
            if (!proto) {
              return true;
            }
            Ctor = hasOwn.call(proto, "constructor") && proto.constructor;
            return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString;
          },
          isEmptyObject: function(obj) {
            var name2;
            for (name2 in obj) {
              return false;
            }
            return true;
          },
          globalEval: function(code, options, doc) {
            DOMEval(code, { nonce: options && options.nonce }, doc);
          },
          each: function(obj, callback) {
            var length2, i2 = 0;
            if (isArrayLike(obj)) {
              length2 = obj.length;
              for (; i2 < length2; i2++) {
                if (callback.call(obj[i2], i2, obj[i2]) === false) {
                  break;
                }
              }
            } else {
              for (i2 in obj) {
                if (callback.call(obj[i2], i2, obj[i2]) === false) {
                  break;
                }
              }
            }
            return obj;
          },
          text: function(elem) {
            var node, ret = "", i2 = 0, nodeType = elem.nodeType;
            if (!nodeType) {
              while (node = elem[i2++]) {
                ret += jQuery3.text(node);
              }
            } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
              return elem.textContent;
            } else if (nodeType === 3 || nodeType === 4) {
              return elem.nodeValue;
            }
            return ret;
          },
          makeArray: function(arr2, results) {
            var ret = results || [];
            if (arr2 != null) {
              if (isArrayLike(Object(arr2))) {
                jQuery3.merge(
                  ret,
                  typeof arr2 === "string" ? [arr2] : arr2
                );
              } else {
                push.call(ret, arr2);
              }
            }
            return ret;
          },
          inArray: function(elem, arr2, i2) {
            return arr2 == null ? -1 : indexOf.call(arr2, elem, i2);
          },
          isXMLDoc: function(elem) {
            var namespace = elem && elem.namespaceURI, docElem = elem && (elem.ownerDocument || elem).documentElement;
            return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || "HTML");
          },
          merge: function(first, second) {
            var len = +second.length, j = 0, i2 = first.length;
            for (; j < len; j++) {
              first[i2++] = second[j];
            }
            first.length = i2;
            return first;
          },
          grep: function(elems, callback, invert) {
            var callbackInverse, matches = [], i2 = 0, length2 = elems.length, callbackExpect = !invert;
            for (; i2 < length2; i2++) {
              callbackInverse = !callback(elems[i2], i2);
              if (callbackInverse !== callbackExpect) {
                matches.push(elems[i2]);
              }
            }
            return matches;
          },
          map: function(elems, callback, arg) {
            var length2, value2, i2 = 0, ret = [];
            if (isArrayLike(elems)) {
              length2 = elems.length;
              for (; i2 < length2; i2++) {
                value2 = callback(elems[i2], i2, arg);
                if (value2 != null) {
                  ret.push(value2);
                }
              }
            } else {
              for (i2 in elems) {
                value2 = callback(elems[i2], i2, arg);
                if (value2 != null) {
                  ret.push(value2);
                }
              }
            }
            return flat(ret);
          },
          guid: 1,
          support
        });
        if (typeof Symbol === "function") {
          jQuery3.fn[Symbol.iterator] = arr[Symbol.iterator];
        }
        jQuery3.each(
          "Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),
          function(_i, name2) {
            class2type["[object " + name2 + "]"] = name2.toLowerCase();
          }
        );
        function isArrayLike(obj) {
          var length2 = !!obj && "length" in obj && obj.length, type2 = toType(obj);
          if (isFunction(obj) || isWindow(obj)) {
            return false;
          }
          return type2 === "array" || length2 === 0 || typeof length2 === "number" && length2 > 0 && length2 - 1 in obj;
        }
        function nodeName(elem, name2) {
          return elem.nodeName && elem.nodeName.toLowerCase() === name2.toLowerCase();
        }
        var pop = arr.pop;
        var sort = arr.sort;
        var splice = arr.splice;
        var whitespace = "[\\x20\\t\\r\\n\\f]";
        var rtrimCSS = new RegExp(
          "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
          "g"
        );
        jQuery3.contains = function(a, b) {
          var bup = b && b.parentNode;
          return a === bup || !!(bup && bup.nodeType === 1 && (a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
        };
        var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
        function fcssescape(ch, asCodePoint) {
          if (asCodePoint) {
            if (ch === "\0") {
              return "\uFFFD";
            }
            return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
          }
          return "\\" + ch;
        }
        jQuery3.escapeSelector = function(sel) {
          return (sel + "").replace(rcssescape, fcssescape);
        };
        var preferredDoc = document2, pushNative = push;
        (function() {
          var i2, Expr, outermostContext, sortInput, hasDuplicate, push2 = pushNative, document3, documentElement2, documentIsHTML, rbuggyQSA, matches, expando = jQuery3.expando, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function(a, b) {
            if (a === b) {
              hasDuplicate = true;
            }
            return 0;
          }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + `*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(` + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + `)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|` + attributes + ")*)|.*)\\)|)", rwhitespace = new RegExp(whitespace + "+", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rleadingCombinator = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), rdescend = new RegExp(whitespace + "|>"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = {
            ID: new RegExp("^#(" + identifier + ")"),
            CLASS: new RegExp("^\\.(" + identifier + ")"),
            TAG: new RegExp("^(" + identifier + "|[*])"),
            ATTR: new RegExp("^" + attributes),
            PSEUDO: new RegExp("^" + pseudos),
            CHILD: new RegExp(
              "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)",
              "i"
            ),
            bool: new RegExp("^(?:" + booleans + ")$", "i"),
            needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
          }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rquickExpr2 = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"), funescape = function(escape2, nonHex) {
            var high = "0x" + escape2.slice(1) - 65536;
            if (nonHex) {
              return nonHex;
            }
            return high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);
          }, unloadHandler2 = function() {
            setDocument();
          }, inDisabledFieldset = addCombinator(
            function(elem) {
              return elem.disabled === true && nodeName(elem, "fieldset");
            },
            { dir: "parentNode", next: "legend" }
          );
          function safeActiveElement() {
            try {
              return document3.activeElement;
            } catch (err) {
            }
          }
          try {
            push2.apply(
              arr = slice.call(preferredDoc.childNodes),
              preferredDoc.childNodes
            );
            arr[preferredDoc.childNodes.length].nodeType;
          } catch (e) {
            push2 = {
              apply: function(target, els) {
                pushNative.apply(target, slice.call(els));
              },
              call: function(target) {
                pushNative.apply(target, slice.call(arguments, 1));
              }
            };
          }
          function find(selector, context, results, seed2) {
            var m, i3, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, nodeType = context ? context.nodeType : 9;
            results = results || [];
            if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
              return results;
            }
            if (!seed2) {
              setDocument(context);
              context = context || document3;
              if (documentIsHTML) {
                if (nodeType !== 11 && (match = rquickExpr2.exec(selector))) {
                  if (m = match[1]) {
                    if (nodeType === 9) {
                      if (elem = context.getElementById(m)) {
                        if (elem.id === m) {
                          push2.call(results, elem);
                          return results;
                        }
                      } else {
                        return results;
                      }
                    } else {
                      if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {
                        push2.call(results, elem);
                        return results;
                      }
                    }
                  } else if (match[2]) {
                    push2.apply(results, context.getElementsByTagName(selector));
                    return results;
                  } else if ((m = match[3]) && context.getElementsByClassName) {
                    push2.apply(results, context.getElementsByClassName(m));
                    return results;
                  }
                }
                if (!nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
                  newSelector = selector;
                  newContext = context;
                  if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {
                    newContext = rsibling.test(selector) && testContext(context.parentNode) || context;
                    if (newContext != context || !support.scope) {
                      if (nid = context.getAttribute("id")) {
                        nid = jQuery3.escapeSelector(nid);
                      } else {
                        context.setAttribute("id", nid = expando);
                      }
                    }
                    groups = tokenize(selector);
                    i3 = groups.length;
                    while (i3--) {
                      groups[i3] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i3]);
                    }
                    newSelector = groups.join(",");
                  }
                  try {
                    push2.apply(
                      results,
                      newContext.querySelectorAll(newSelector)
                    );
                    return results;
                  } catch (qsaError) {
                    nonnativeSelectorCache(selector, true);
                  } finally {
                    if (nid === expando) {
                      context.removeAttribute("id");
                    }
                  }
                }
              }
            }
            return select(selector.replace(rtrimCSS, "$1"), context, results, seed2);
          }
          function createCache() {
            var keys = [];
            function cache2(key, value2) {
              if (keys.push(key + " ") > Expr.cacheLength) {
                delete cache2[keys.shift()];
              }
              return cache2[key + " "] = value2;
            }
            return cache2;
          }
          function markFunction(fn) {
            fn[expando] = true;
            return fn;
          }
          function assert(fn) {
            var el = document3.createElement("fieldset");
            try {
              return !!fn(el);
            } catch (e) {
              return false;
            } finally {
              if (el.parentNode) {
                el.parentNode.removeChild(el);
              }
              el = null;
            }
          }
          function createInputPseudo(type2) {
            return function(elem) {
              return nodeName(elem, "input") && elem.type === type2;
            };
          }
          function createButtonPseudo(type2) {
            return function(elem) {
              return (nodeName(elem, "input") || nodeName(elem, "button")) && elem.type === type2;
            };
          }
          function createDisabledPseudo(disabled) {
            return function(elem) {
              if ("form" in elem) {
                if (elem.parentNode && elem.disabled === false) {
                  if ("label" in elem) {
                    if ("label" in elem.parentNode) {
                      return elem.parentNode.disabled === disabled;
                    } else {
                      return elem.disabled === disabled;
                    }
                  }
                  return elem.isDisabled === disabled || elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;
                }
                return elem.disabled === disabled;
              } else if ("label" in elem) {
                return elem.disabled === disabled;
              }
              return false;
            };
          }
          function createPositionalPseudo(fn) {
            return markFunction(function(argument) {
              argument = +argument;
              return markFunction(function(seed2, matches2) {
                var j, matchIndexes = fn([], seed2.length, argument), i3 = matchIndexes.length;
                while (i3--) {
                  if (seed2[j = matchIndexes[i3]]) {
                    seed2[j] = !(matches2[j] = seed2[j]);
                  }
                }
              });
            });
          }
          function testContext(context) {
            return context && typeof context.getElementsByTagName !== "undefined" && context;
          }
          function setDocument(node) {
            var subWindow, doc = node ? node.ownerDocument || node : preferredDoc;
            if (doc == document3 || doc.nodeType !== 9 || !doc.documentElement) {
              return document3;
            }
            document3 = doc;
            documentElement2 = document3.documentElement;
            documentIsHTML = !jQuery3.isXMLDoc(document3);
            matches = documentElement2.matches || documentElement2.webkitMatchesSelector || documentElement2.msMatchesSelector;
            if (preferredDoc != document3 && (subWindow = document3.defaultView) && subWindow.top !== subWindow) {
              subWindow.addEventListener("unload", unloadHandler2);
            }
            support.getById = assert(function(el) {
              documentElement2.appendChild(el).id = jQuery3.expando;
              return !document3.getElementsByName || !document3.getElementsByName(jQuery3.expando).length;
            });
            support.disconnectedMatch = assert(function(el) {
              return matches.call(el, "*");
            });
            support.scope = assert(function() {
              return document3.querySelectorAll(":scope");
            });
            support.cssHas = assert(function() {
              try {
                document3.querySelector(":has(*,:jqfake)");
                return false;
              } catch (e) {
                return true;
              }
            });
            if (support.getById) {
              Expr.filter.ID = function(id) {
                var attrId = id.replace(runescape, funescape);
                return function(elem) {
                  return elem.getAttribute("id") === attrId;
                };
              };
              Expr.find.ID = function(id, context) {
                if (typeof context.getElementById !== "undefined" && documentIsHTML) {
                  var elem = context.getElementById(id);
                  return elem ? [elem] : [];
                }
              };
            } else {
              Expr.filter.ID = function(id) {
                var attrId = id.replace(runescape, funescape);
                return function(elem) {
                  var node2 = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                  return node2 && node2.value === attrId;
                };
              };
              Expr.find.ID = function(id, context) {
                if (typeof context.getElementById !== "undefined" && documentIsHTML) {
                  var node2, i3, elems, elem = context.getElementById(id);
                  if (elem) {
                    node2 = elem.getAttributeNode("id");
                    if (node2 && node2.value === id) {
                      return [elem];
                    }
                    elems = context.getElementsByName(id);
                    i3 = 0;
                    while (elem = elems[i3++]) {
                      node2 = elem.getAttributeNode("id");
                      if (node2 && node2.value === id) {
                        return [elem];
                      }
                    }
                  }
                  return [];
                }
              };
            }
            Expr.find.TAG = function(tag, context) {
              if (typeof context.getElementsByTagName !== "undefined") {
                return context.getElementsByTagName(tag);
              } else {
                return context.querySelectorAll(tag);
              }
            };
            Expr.find.CLASS = function(className, context) {
              if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
                return context.getElementsByClassName(className);
              }
            };
            rbuggyQSA = [];
            assert(function(el) {
              var input;
              documentElement2.appendChild(el).innerHTML = "<a id='" + expando + "' href='' disabled='disabled'></a><select id='" + expando + "-\r\\' disabled='disabled'><option selected=''></option></select>";
              if (!el.querySelectorAll("[selected]").length) {
                rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
              }
              if (!el.querySelectorAll("[id~=" + expando + "-]").length) {
                rbuggyQSA.push("~=");
              }
              if (!el.querySelectorAll("a#" + expando + "+*").length) {
                rbuggyQSA.push(".#.+[+~]");
              }
              if (!el.querySelectorAll(":checked").length) {
                rbuggyQSA.push(":checked");
              }
              input = document3.createElement("input");
              input.setAttribute("type", "hidden");
              el.appendChild(input).setAttribute("name", "D");
              documentElement2.appendChild(el).disabled = true;
              if (el.querySelectorAll(":disabled").length !== 2) {
                rbuggyQSA.push(":enabled", ":disabled");
              }
              input = document3.createElement("input");
              input.setAttribute("name", "");
              el.appendChild(input);
              if (!el.querySelectorAll("[name='']").length) {
                rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + `*(?:''|"")`);
              }
            });
            if (!support.cssHas) {
              rbuggyQSA.push(":has");
            }
            rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
            sortOrder = function(a, b) {
              if (a === b) {
                hasDuplicate = true;
                return 0;
              }
              var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
              if (compare) {
                return compare;
              }
              compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;
              if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {
                if (a === document3 || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {
                  return -1;
                }
                if (b === document3 || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {
                  return 1;
                }
                return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;
              }
              return compare & 4 ? -1 : 1;
            };
            return document3;
          }
          find.matches = function(expr, elements) {
            return find(expr, null, null, elements);
          };
          find.matchesSelector = function(elem, expr) {
            setDocument(elem);
            if (documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
              try {
                var ret = matches.call(elem, expr);
                if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) {
                  return ret;
                }
              } catch (e) {
                nonnativeSelectorCache(expr, true);
              }
            }
            return find(expr, document3, null, [elem]).length > 0;
          };
          find.contains = function(context, elem) {
            if ((context.ownerDocument || context) != document3) {
              setDocument(context);
            }
            return jQuery3.contains(context, elem);
          };
          find.attr = function(elem, name2) {
            if ((elem.ownerDocument || elem) != document3) {
              setDocument(elem);
            }
            var fn = Expr.attrHandle[name2.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name2.toLowerCase()) ? fn(elem, name2, !documentIsHTML) : void 0;
            if (val !== void 0) {
              return val;
            }
            return elem.getAttribute(name2);
          };
          find.error = function(msg) {
            throw new Error("Syntax error, unrecognized expression: " + msg);
          };
          jQuery3.uniqueSort = function(results) {
            var elem, duplicates = [], j = 0, i3 = 0;
            hasDuplicate = !support.sortStable;
            sortInput = !support.sortStable && slice.call(results, 0);
            sort.call(results, sortOrder);
            if (hasDuplicate) {
              while (elem = results[i3++]) {
                if (elem === results[i3]) {
                  j = duplicates.push(i3);
                }
              }
              while (j--) {
                splice.call(results, duplicates[j], 1);
              }
            }
            sortInput = null;
            return results;
          };
          jQuery3.fn.uniqueSort = function() {
            return this.pushStack(jQuery3.uniqueSort(slice.apply(this)));
          };
          Expr = jQuery3.expr = {
            cacheLength: 50,
            createPseudo: markFunction,
            match: matchExpr,
            attrHandle: {},
            find: {},
            relative: {
              ">": { dir: "parentNode", first: true },
              " ": { dir: "parentNode" },
              "+": { dir: "previousSibling", first: true },
              "~": { dir: "previousSibling" }
            },
            preFilter: {
              ATTR: function(match) {
                match[1] = match[1].replace(runescape, funescape);
                match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);
                if (match[2] === "~=") {
                  match[3] = " " + match[3] + " ";
                }
                return match.slice(0, 4);
              },
              CHILD: function(match) {
                match[1] = match[1].toLowerCase();
                if (match[1].slice(0, 3) === "nth") {
                  if (!match[3]) {
                    find.error(match[0]);
                  }
                  match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
                  match[5] = +(match[7] + match[8] || match[3] === "odd");
                } else if (match[3]) {
                  find.error(match[0]);
                }
                return match;
              },
              PSEUDO: function(match) {
                var excess, unquoted = !match[6] && match[2];
                if (matchExpr.CHILD.test(match[0])) {
                  return null;
                }
                if (match[3]) {
                  match[2] = match[4] || match[5] || "";
                } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {
                  match[0] = match[0].slice(0, excess);
                  match[2] = unquoted.slice(0, excess);
                }
                return match.slice(0, 3);
              }
            },
            filter: {
              TAG: function(nodeNameSelector) {
                var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
                return nodeNameSelector === "*" ? function() {
                  return true;
                } : function(elem) {
                  return nodeName(elem, expectedNodeName);
                };
              },
              CLASS: function(className) {
                var pattern = classCache[className + " "];
                return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function(elem) {
                  return pattern.test(
                    typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || ""
                  );
                });
              },
              ATTR: function(name2, operator, check) {
                return function(elem) {
                  var result = find.attr(elem, name2);
                  if (result == null) {
                    return operator === "!=";
                  }
                  if (!operator) {
                    return true;
                  }
                  result += "";
                  if (operator === "=") {
                    return result === check;
                  }
                  if (operator === "!=") {
                    return result !== check;
                  }
                  if (operator === "^=") {
                    return check && result.indexOf(check) === 0;
                  }
                  if (operator === "*=") {
                    return check && result.indexOf(check) > -1;
                  }
                  if (operator === "$=") {
                    return check && result.slice(-check.length) === check;
                  }
                  if (operator === "~=") {
                    return (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1;
                  }
                  if (operator === "|=") {
                    return result === check || result.slice(0, check.length + 1) === check + "-";
                  }
                  return false;
                };
              },
              CHILD: function(type2, what, _argument, first, last) {
                var simple = type2.slice(0, 3) !== "nth", forward = type2.slice(-4) !== "last", ofType = what === "of-type";
                return first === 1 && last === 0 ? function(elem) {
                  return !!elem.parentNode;
                } : function(elem, _context, xml) {
                  var cache2, outerCache, node, nodeIndex, start, dir2 = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name2 = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false;
                  if (parent) {
                    if (simple) {
                      while (dir2) {
                        node = elem;
                        while (node = node[dir2]) {
                          if (ofType ? nodeName(node, name2) : node.nodeType === 1) {
                            return false;
                          }
                        }
                        start = dir2 = type2 === "only" && !start && "nextSibling";
                      }
                      return true;
                    }
                    start = [forward ? parent.firstChild : parent.lastChild];
                    if (forward && useCache) {
                      outerCache = parent[expando] || (parent[expando] = {});
                      cache2 = outerCache[type2] || [];
                      nodeIndex = cache2[0] === dirruns && cache2[1];
                      diff = nodeIndex && cache2[2];
                      node = nodeIndex && parent.childNodes[nodeIndex];
                      while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start.pop()) {
                        if (node.nodeType === 1 && ++diff && node === elem) {
                          outerCache[type2] = [dirruns, nodeIndex, diff];
                          break;
                        }
                      }
                    } else {
                      if (useCache) {
                        outerCache = elem[expando] || (elem[expando] = {});
                        cache2 = outerCache[type2] || [];
                        nodeIndex = cache2[0] === dirruns && cache2[1];
                        diff = nodeIndex;
                      }
                      if (diff === false) {
                        while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start.pop()) {
                          if ((ofType ? nodeName(node, name2) : node.nodeType === 1) && ++diff) {
                            if (useCache) {
                              outerCache = node[expando] || (node[expando] = {});
                              outerCache[type2] = [dirruns, diff];
                            }
                            if (node === elem) {
                              break;
                            }
                          }
                        }
                      }
                    }
                    diff -= last;
                    return diff === first || diff % first === 0 && diff / first >= 0;
                  }
                };
              },
              PSEUDO: function(pseudo, argument) {
                var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error("unsupported pseudo: " + pseudo);
                if (fn[expando]) {
                  return fn(argument);
                }
                if (fn.length > 1) {
                  args = [pseudo, pseudo, "", argument];
                  return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed2, matches2) {
                    var idx, matched = fn(seed2, argument), i3 = matched.length;
                    while (i3--) {
                      idx = indexOf.call(seed2, matched[i3]);
                      seed2[idx] = !(matches2[idx] = matched[i3]);
                    }
                  }) : function(elem) {
                    return fn(elem, 0, args);
                  };
                }
                return fn;
              }
            },
            pseudos: {
              not: markFunction(function(selector) {
                var input = [], results = [], matcher = compile(selector.replace(rtrimCSS, "$1"));
                return matcher[expando] ? markFunction(function(seed2, matches2, _context, xml) {
                  var elem, unmatched = matcher(seed2, null, xml, []), i3 = seed2.length;
                  while (i3--) {
                    if (elem = unmatched[i3]) {
                      seed2[i3] = !(matches2[i3] = elem);
                    }
                  }
                }) : function(elem, _context, xml) {
                  input[0] = elem;
                  matcher(input, null, xml, results);
                  input[0] = null;
                  return !results.pop();
                };
              }),
              has: markFunction(function(selector) {
                return function(elem) {
                  return find(selector, elem).length > 0;
                };
              }),
              contains: markFunction(function(text) {
                text = text.replace(runescape, funescape);
                return function(elem) {
                  return (elem.textContent || jQuery3.text(elem)).indexOf(text) > -1;
                };
              }),
              lang: markFunction(function(lang) {
                if (!ridentifier.test(lang || "")) {
                  find.error("unsupported lang: " + lang);
                }
                lang = lang.replace(runescape, funescape).toLowerCase();
                return function(elem) {
                  var elemLang;
                  do {
                    if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
                      elemLang = elemLang.toLowerCase();
                      return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
                    }
                  } while ((elem = elem.parentNode) && elem.nodeType === 1);
                  return false;
                };
              }),
              target: function(elem) {
                var hash = window2.location && window2.location.hash;
                return hash && hash.slice(1) === elem.id;
              },
              root: function(elem) {
                return elem === documentElement2;
              },
              focus: function(elem) {
                return elem === safeActiveElement() && document3.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);
              },
              enabled: createDisabledPseudo(false),
              disabled: createDisabledPseudo(true),
              checked: function(elem) {
                return nodeName(elem, "input") && !!elem.checked || nodeName(elem, "option") && !!elem.selected;
              },
              selected: function(elem) {
                if (elem.parentNode) {
                  elem.parentNode.selectedIndex;
                }
                return elem.selected === true;
              },
              empty: function(elem) {
                for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
                  if (elem.nodeType < 6) {
                    return false;
                  }
                }
                return true;
              },
              parent: function(elem) {
                return !Expr.pseudos.empty(elem);
              },
              header: function(elem) {
                return rheader.test(elem.nodeName);
              },
              input: function(elem) {
                return rinputs.test(elem.nodeName);
              },
              button: function(elem) {
                return nodeName(elem, "input") && elem.type === "button" || nodeName(elem, "button");
              },
              text: function(elem) {
                var attr;
                return nodeName(elem, "input") && elem.type === "text" && ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
              },
              first: createPositionalPseudo(function() {
                return [0];
              }),
              last: createPositionalPseudo(function(_matchIndexes, length2) {
                return [length2 - 1];
              }),
              eq: createPositionalPseudo(function(_matchIndexes, length2, argument) {
                return [argument < 0 ? argument + length2 : argument];
              }),
              even: createPositionalPseudo(function(matchIndexes, length2) {
                var i3 = 0;
                for (; i3 < length2; i3 += 2) {
                  matchIndexes.push(i3);
                }
                return matchIndexes;
              }),
              odd: createPositionalPseudo(function(matchIndexes, length2) {
                var i3 = 1;
                for (; i3 < length2; i3 += 2) {
                  matchIndexes.push(i3);
                }
                return matchIndexes;
              }),
              lt: createPositionalPseudo(function(matchIndexes, length2, argument) {
                var i3;
                if (argument < 0) {
                  i3 = argument + length2;
                } else if (argument > length2) {
                  i3 = length2;
                } else {
                  i3 = argument;
                }
                for (; --i3 >= 0; ) {
                  matchIndexes.push(i3);
                }
                return matchIndexes;
              }),
              gt: createPositionalPseudo(function(matchIndexes, length2, argument) {
                var i3 = argument < 0 ? argument + length2 : argument;
                for (; ++i3 < length2; ) {
                  matchIndexes.push(i3);
                }
                return matchIndexes;
              })
            }
          };
          Expr.pseudos.nth = Expr.pseudos.eq;
          for (i2 in { radio: true, checkbox: true, file: true, password: true, image: true }) {
            Expr.pseudos[i2] = createInputPseudo(i2);
          }
          for (i2 in { submit: true, reset: true }) {
            Expr.pseudos[i2] = createButtonPseudo(i2);
          }
          function setFilters() {
          }
          setFilters.prototype = Expr.filters = Expr.pseudos;
          Expr.setFilters = new setFilters();
          function tokenize(selector, parseOnly) {
            var matched, match, tokens, type2, soFar, groups, preFilters, cached = tokenCache[selector + " "];
            if (cached) {
              return parseOnly ? 0 : cached.slice(0);
            }
            soFar = selector;
            groups = [];
            preFilters = Expr.preFilter;
            while (soFar) {
              if (!matched || (match = rcomma.exec(soFar))) {
                if (match) {
                  soFar = soFar.slice(match[0].length) || soFar;
                }
                groups.push(tokens = []);
              }
              matched = false;
              if (match = rleadingCombinator.exec(soFar)) {
                matched = match.shift();
                tokens.push({
                  value: matched,
                  type: match[0].replace(rtrimCSS, " ")
                });
                soFar = soFar.slice(matched.length);
              }
              for (type2 in Expr.filter) {
                if ((match = matchExpr[type2].exec(soFar)) && (!preFilters[type2] || (match = preFilters[type2](match)))) {
                  matched = match.shift();
                  tokens.push({
                    value: matched,
                    type: type2,
                    matches: match
                  });
                  soFar = soFar.slice(matched.length);
                }
              }
              if (!matched) {
                break;
              }
            }
            if (parseOnly) {
              return soFar.length;
            }
            return soFar ? find.error(selector) : tokenCache(selector, groups).slice(0);
          }
          function toSelector(tokens) {
            var i3 = 0, len = tokens.length, selector = "";
            for (; i3 < len; i3++) {
              selector += tokens[i3].value;
            }
            return selector;
          }
          function addCombinator(matcher, combinator, base) {
            var dir2 = combinator.dir, skip = combinator.next, key = skip || dir2, checkNonElements = base && key === "parentNode", doneName = done++;
            return combinator.first ? function(elem, context, xml) {
              while (elem = elem[dir2]) {
                if (elem.nodeType === 1 || checkNonElements) {
                  return matcher(elem, context, xml);
                }
              }
              return false;
            } : function(elem, context, xml) {
              var oldCache, outerCache, newCache = [dirruns, doneName];
              if (xml) {
                while (elem = elem[dir2]) {
                  if (elem.nodeType === 1 || checkNonElements) {
                    if (matcher(elem, context, xml)) {
                      return true;
                    }
                  }
                }
              } else {
                while (elem = elem[dir2]) {
                  if (elem.nodeType === 1 || checkNonElements) {
                    outerCache = elem[expando] || (elem[expando] = {});
                    if (skip && nodeName(elem, skip)) {
                      elem = elem[dir2] || elem;
                    } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
                      return newCache[2] = oldCache[2];
                    } else {
                      outerCache[key] = newCache;
                      if (newCache[2] = matcher(elem, context, xml)) {
                        return true;
                      }
                    }
                  }
                }
              }
              return false;
            };
          }
          function elementMatcher(matchers) {
            return matchers.length > 1 ? function(elem, context, xml) {
              var i3 = matchers.length;
              while (i3--) {
                if (!matchers[i3](elem, context, xml)) {
                  return false;
                }
              }
              return true;
            } : matchers[0];
          }
          function multipleContexts(selector, contexts, results) {
            var i3 = 0, len = contexts.length;
            for (; i3 < len; i3++) {
              find(selector, contexts[i3], results);
            }
            return results;
          }
          function condense(unmatched, map2, filter, context, xml) {
            var elem, newUnmatched = [], i3 = 0, len = unmatched.length, mapped = map2 != null;
            for (; i3 < len; i3++) {
              if (elem = unmatched[i3]) {
                if (!filter || filter(elem, context, xml)) {
                  newUnmatched.push(elem);
                  if (mapped) {
                    map2.push(i3);
                  }
                }
              }
            }
            return newUnmatched;
          }
          function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
            if (postFilter && !postFilter[expando]) {
              postFilter = setMatcher(postFilter);
            }
            if (postFinder && !postFinder[expando]) {
              postFinder = setMatcher(postFinder, postSelector);
            }
            return markFunction(function(seed2, results, context, xml) {
              var temp, i3, elem, matcherOut, preMap = [], postMap = [], preexisting = results.length, elems = seed2 || multipleContexts(
                selector || "*",
                context.nodeType ? [context] : context,
                []
              ), matcherIn = preFilter && (seed2 || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;
              if (matcher) {
                matcherOut = postFinder || (seed2 ? preFilter : preexisting || postFilter) ? [] : results;
                matcher(matcherIn, matcherOut, context, xml);
              } else {
                matcherOut = matcherIn;
              }
              if (postFilter) {
                temp = condense(matcherOut, postMap);
                postFilter(temp, [], context, xml);
                i3 = temp.length;
                while (i3--) {
                  if (elem = temp[i3]) {
                    matcherOut[postMap[i3]] = !(matcherIn[postMap[i3]] = elem);
                  }
                }
              }
              if (seed2) {
                if (postFinder || preFilter) {
                  if (postFinder) {
                    temp = [];
                    i3 = matcherOut.length;
                    while (i3--) {
                      if (elem = matcherOut[i3]) {
                        temp.push(matcherIn[i3] = elem);
                      }
                    }
                    postFinder(null, matcherOut = [], temp, xml);
                  }
                  i3 = matcherOut.length;
                  while (i3--) {
                    if ((elem = matcherOut[i3]) && (temp = postFinder ? indexOf.call(seed2, elem) : preMap[i3]) > -1) {
                      seed2[temp] = !(results[temp] = elem);
                    }
                  }
                }
              } else {
                matcherOut = condense(
                  matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut
                );
                if (postFinder) {
                  postFinder(null, results, matcherOut, xml);
                } else {
                  push2.apply(results, matcherOut);
                }
              }
            });
          }
          function matcherFromTokens(tokens) {
            var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i3 = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) {
              return elem === checkContext;
            }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) {
              return indexOf.call(checkContext, elem) > -1;
            }, implicitRelative, true), matchers = [function(elem, context, xml) {
              var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
              checkContext = null;
              return ret;
            }];
            for (; i3 < len; i3++) {
              if (matcher = Expr.relative[tokens[i3].type]) {
                matchers = [addCombinator(elementMatcher(matchers), matcher)];
              } else {
                matcher = Expr.filter[tokens[i3].type].apply(null, tokens[i3].matches);
                if (matcher[expando]) {
                  j = ++i3;
                  for (; j < len; j++) {
                    if (Expr.relative[tokens[j].type]) {
                      break;
                    }
                  }
                  return setMatcher(
                    i3 > 1 && elementMatcher(matchers),
                    i3 > 1 && toSelector(
                      tokens.slice(0, i3 - 1).concat({ value: tokens[i3 - 2].type === " " ? "*" : "" })
                    ).replace(rtrimCSS, "$1"),
                    matcher,
                    i3 < j && matcherFromTokens(tokens.slice(i3, j)),
                    j < len && matcherFromTokens(tokens = tokens.slice(j)),
                    j < len && toSelector(tokens)
                  );
                }
                matchers.push(matcher);
              }
            }
            return elementMatcher(matchers);
          }
          function matcherFromGroupMatchers(elementMatchers, setMatchers) {
            var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed2, context, xml, results, outermost) {
              var elem, j, matcher, matchedCount = 0, i3 = "0", unmatched = seed2 && [], setMatched = [], contextBackup = outermostContext, elems = seed2 || byElement && Expr.find.TAG("*", outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;
              if (outermost) {
                outermostContext = context == document3 || context || outermost;
              }
              for (; i3 !== len && (elem = elems[i3]) != null; i3++) {
                if (byElement && elem) {
                  j = 0;
                  if (!context && elem.ownerDocument != document3) {
                    setDocument(elem);
                    xml = !documentIsHTML;
                  }
                  while (matcher = elementMatchers[j++]) {
                    if (matcher(elem, context || document3, xml)) {
                      push2.call(results, elem);
                      break;
                    }
                  }
                  if (outermost) {
                    dirruns = dirrunsUnique;
                  }
                }
                if (bySet) {
                  if (elem = !matcher && elem) {
                    matchedCount--;
                  }
                  if (seed2) {
                    unmatched.push(elem);
                  }
                }
              }
              matchedCount += i3;
              if (bySet && i3 !== matchedCount) {
                j = 0;
                while (matcher = setMatchers[j++]) {
                  matcher(unmatched, setMatched, context, xml);
                }
                if (seed2) {
                  if (matchedCount > 0) {
                    while (i3--) {
                      if (!(unmatched[i3] || setMatched[i3])) {
                        setMatched[i3] = pop.call(results);
                      }
                    }
                  }
                  setMatched = condense(setMatched);
                }
                push2.apply(results, setMatched);
                if (outermost && !seed2 && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
                  jQuery3.uniqueSort(results);
                }
              }
              if (outermost) {
                dirruns = dirrunsUnique;
                outermostContext = contextBackup;
              }
              return unmatched;
            };
            return bySet ? markFunction(superMatcher) : superMatcher;
          }
          function compile(selector, match) {
            var i3, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "];
            if (!cached) {
              if (!match) {
                match = tokenize(selector);
              }
              i3 = match.length;
              while (i3--) {
                cached = matcherFromTokens(match[i3]);
                if (cached[expando]) {
                  setMatchers.push(cached);
                } else {
                  elementMatchers.push(cached);
                }
              }
              cached = compilerCache(
                selector,
                matcherFromGroupMatchers(elementMatchers, setMatchers)
              );
              cached.selector = selector;
            }
            return cached;
          }
          function select(selector, context, results, seed2) {
            var i3, tokens, token, type2, find2, compiled = typeof selector === "function" && selector, match = !seed2 && tokenize(selector = compiled.selector || selector);
            results = results || [];
            if (match.length === 1) {
              tokens = match[0] = match[0].slice(0);
              if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
                context = (Expr.find.ID(
                  token.matches[0].replace(runescape, funescape),
                  context
                ) || [])[0];
                if (!context) {
                  return results;
                } else if (compiled) {
                  context = context.parentNode;
                }
                selector = selector.slice(tokens.shift().value.length);
              }
              i3 = matchExpr.needsContext.test(selector) ? 0 : tokens.length;
              while (i3--) {
                token = tokens[i3];
                if (Expr.relative[type2 = token.type]) {
                  break;
                }
                if (find2 = Expr.find[type2]) {
                  if (seed2 = find2(
                    token.matches[0].replace(runescape, funescape),
                    rsibling.test(tokens[0].type) && testContext(context.parentNode) || context
                  )) {
                    tokens.splice(i3, 1);
                    selector = seed2.length && toSelector(tokens);
                    if (!selector) {
                      push2.apply(results, seed2);
                      return results;
                    }
                    break;
                  }
                }
              }
            }
            (compiled || compile(selector, match))(
              seed2,
              context,
              !documentIsHTML,
              results,
              !context || rsibling.test(selector) && testContext(context.parentNode) || context
            );
            return results;
          }
          support.sortStable = expando.split("").sort(sortOrder).join("") === expando;
          setDocument();
          support.sortDetached = assert(function(el) {
            return el.compareDocumentPosition(document3.createElement("fieldset")) & 1;
          });
          jQuery3.find = find;
          jQuery3.expr[":"] = jQuery3.expr.pseudos;
          jQuery3.unique = jQuery3.uniqueSort;
          find.compile = compile;
          find.select = select;
          find.setDocument = setDocument;
          find.escape = jQuery3.escapeSelector;
          find.getText = jQuery3.text;
          find.isXML = jQuery3.isXMLDoc;
          find.selectors = jQuery3.expr;
          find.support = jQuery3.support;
          find.uniqueSort = jQuery3.uniqueSort;
        })();
        var dir = function(elem, dir2, until) {
          var matched = [], truncate = until !== void 0;
          while ((elem = elem[dir2]) && elem.nodeType !== 9) {
            if (elem.nodeType === 1) {
              if (truncate && jQuery3(elem).is(until)) {
                break;
              }
              matched.push(elem);
            }
          }
          return matched;
        };
        var siblings = function(n, elem) {
          var matched = [];
          for (; n; n = n.nextSibling) {
            if (n.nodeType === 1 && n !== elem) {
              matched.push(n);
            }
          }
          return matched;
        };
        var rneedsContext = jQuery3.expr.match.needsContext;
        var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
        function winnow(elements, qualifier, not) {
          if (isFunction(qualifier)) {
            return jQuery3.grep(elements, function(elem, i2) {
              return !!qualifier.call(elem, i2, elem) !== not;
            });
          }
          if (qualifier.nodeType) {
            return jQuery3.grep(elements, function(elem) {
              return elem === qualifier !== not;
            });
          }
          if (typeof qualifier !== "string") {
            return jQuery3.grep(elements, function(elem) {
              return indexOf.call(qualifier, elem) > -1 !== not;
            });
          }
          return jQuery3.filter(qualifier, elements, not);
        }
        jQuery3.filter = function(expr, elems, not) {
          var elem = elems[0];
          if (not) {
            expr = ":not(" + expr + ")";
          }
          if (elems.length === 1 && elem.nodeType === 1) {
            return jQuery3.find.matchesSelector(elem, expr) ? [elem] : [];
          }
          return jQuery3.find.matches(expr, jQuery3.grep(elems, function(elem2) {
            return elem2.nodeType === 1;
          }));
        };
        jQuery3.fn.extend({
          find: function(selector) {
            var i2, ret, len = this.length, self2 = this;
            if (typeof selector !== "string") {
              return this.pushStack(jQuery3(selector).filter(function() {
                for (i2 = 0; i2 < len; i2++) {
                  if (jQuery3.contains(self2[i2], this)) {
                    return true;
                  }
                }
              }));
            }
            ret = this.pushStack([]);
            for (i2 = 0; i2 < len; i2++) {
              jQuery3.find(selector, self2[i2], ret);
            }
            return len > 1 ? jQuery3.uniqueSort(ret) : ret;
          },
          filter: function(selector) {
            return this.pushStack(winnow(this, selector || [], false));
          },
          not: function(selector) {
            return this.pushStack(winnow(this, selector || [], true));
          },
          is: function(selector) {
            return !!winnow(
              this,
              typeof selector === "string" && rneedsContext.test(selector) ? jQuery3(selector) : selector || [],
              false
            ).length;
          }
        });
        var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery3.fn.init = function(selector, context, root) {
          var match, elem;
          if (!selector) {
            return this;
          }
          root = root || rootjQuery;
          if (typeof selector === "string") {
            if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) {
              match = [null, selector, null];
            } else {
              match = rquickExpr.exec(selector);
            }
            if (match && (match[1] || !context)) {
              if (match[1]) {
                context = context instanceof jQuery3 ? context[0] : context;
                jQuery3.merge(this, jQuery3.parseHTML(
                  match[1],
                  context && context.nodeType ? context.ownerDocument || context : document2,
                  true
                ));
                if (rsingleTag.test(match[1]) && jQuery3.isPlainObject(context)) {
                  for (match in context) {
                    if (isFunction(this[match])) {
                      this[match](context[match]);
                    } else {
                      this.attr(match, context[match]);
                    }
                  }
                }
                return this;
              } else {
                elem = document2.getElementById(match[2]);
                if (elem) {
                  this[0] = elem;
                  this.length = 1;
                }
                return this;
              }
            } else if (!context || context.jquery) {
              return (context || root).find(selector);
            } else {
              return this.constructor(context).find(selector);
            }
          } else if (selector.nodeType) {
            this[0] = selector;
            this.length = 1;
            return this;
          } else if (isFunction(selector)) {
            return root.ready !== void 0 ? root.ready(selector) : selector(jQuery3);
          }
          return jQuery3.makeArray(selector, this);
        };
        init.prototype = jQuery3.fn;
        rootjQuery = jQuery3(document2);
        var rparentsprev = /^(?:parents|prev(?:Until|All))/, guaranteedUnique = {
          children: true,
          contents: true,
          next: true,
          prev: true
        };
        jQuery3.fn.extend({
          has: function(target) {
            var targets = jQuery3(target, this), l = targets.length;
            return this.filter(function() {
              var i2 = 0;
              for (; i2 < l; i2++) {
                if (jQuery3.contains(this, targets[i2])) {
                  return true;
                }
              }
            });
          },
          closest: function(selectors, context) {
            var cur, i2 = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery3(selectors);
            if (!rneedsContext.test(selectors)) {
              for (; i2 < l; i2++) {
                for (cur = this[i2]; cur && cur !== context; cur = cur.parentNode) {
                  if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : cur.nodeType === 1 && jQuery3.find.matchesSelector(cur, selectors))) {
                    matched.push(cur);
                    break;
                  }
                }
              }
            }
            return this.pushStack(matched.length > 1 ? jQuery3.uniqueSort(matched) : matched);
          },
          index: function(elem) {
            if (!elem) {
              return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
            }
            if (typeof elem === "string") {
              return indexOf.call(jQuery3(elem), this[0]);
            }
            return indexOf.call(
              this,
              elem.jquery ? elem[0] : elem
            );
          },
          add: function(selector, context) {
            return this.pushStack(
              jQuery3.uniqueSort(
                jQuery3.merge(this.get(), jQuery3(selector, context))
              )
            );
          },
          addBack: function(selector) {
            return this.add(
              selector == null ? this.prevObject : this.prevObject.filter(selector)
            );
          }
        });
        function sibling(cur, dir2) {
          while ((cur = cur[dir2]) && cur.nodeType !== 1) {
          }
          return cur;
        }
        jQuery3.each({
          parent: function(elem) {
            var parent = elem.parentNode;
            return parent && parent.nodeType !== 11 ? parent : null;
          },
          parents: function(elem) {
            return dir(elem, "parentNode");
          },
          parentsUntil: function(elem, _i, until) {
            return dir(elem, "parentNode", until);
          },
          next: function(elem) {
            return sibling(elem, "nextSibling");
          },
          prev: function(elem) {
            return sibling(elem, "previousSibling");
          },
          nextAll: function(elem) {
            return dir(elem, "nextSibling");
          },
          prevAll: function(elem) {
            return dir(elem, "previousSibling");
          },
          nextUntil: function(elem, _i, until) {
            return dir(elem, "nextSibling", until);
          },
          prevUntil: function(elem, _i, until) {
            return dir(elem, "previousSibling", until);
          },
          siblings: function(elem) {
            return siblings((elem.parentNode || {}).firstChild, elem);
          },
          children: function(elem) {
            return siblings(elem.firstChild);
          },
          contents: function(elem) {
            if (elem.contentDocument != null && getProto(elem.contentDocument)) {
              return elem.contentDocument;
            }
            if (nodeName(elem, "template")) {
              elem = elem.content || elem;
            }
            return jQuery3.merge([], elem.childNodes);
          }
        }, function(name2, fn) {
          jQuery3.fn[name2] = function(until, selector) {
            var matched = jQuery3.map(this, fn, until);
            if (name2.slice(-5) !== "Until") {
              selector = until;
            }
            if (selector && typeof selector === "string") {
              matched = jQuery3.filter(selector, matched);
            }
            if (this.length > 1) {
              if (!guaranteedUnique[name2]) {
                jQuery3.uniqueSort(matched);
              }
              if (rparentsprev.test(name2)) {
                matched.reverse();
              }
            }
            return this.pushStack(matched);
          };
        });
        var rnothtmlwhite = /[^\x20\t\r\n\f]+/g;
        function createOptions(options) {
          var object = {};
          jQuery3.each(options.match(rnothtmlwhite) || [], function(_, flag) {
            object[flag] = true;
          });
          return object;
        }
        jQuery3.Callbacks = function(options) {
          options = typeof options === "string" ? createOptions(options) : jQuery3.extend({}, options);
          var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function() {
            locked = locked || options.once;
            fired = firing = true;
            for (; queue.length; firingIndex = -1) {
              memory = queue.shift();
              while (++firingIndex < list.length) {
                if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
                  firingIndex = list.length;
                  memory = false;
                }
              }
            }
            if (!options.memory) {
              memory = false;
            }
            firing = false;
            if (locked) {
              if (memory) {
                list = [];
              } else {
                list = "";
              }
            }
          }, self2 = {
            add: function() {
              if (list) {
                if (memory && !firing) {
                  firingIndex = list.length - 1;
                  queue.push(memory);
                }
                (function add(args) {
                  jQuery3.each(args, function(_, arg) {
                    if (isFunction(arg)) {
                      if (!options.unique || !self2.has(arg)) {
                        list.push(arg);
                      }
                    } else if (arg && arg.length && toType(arg) !== "string") {
                      add(arg);
                    }
                  });
                })(arguments);
                if (memory && !firing) {
                  fire();
                }
              }
              return this;
            },
            remove: function() {
              jQuery3.each(arguments, function(_, arg) {
                var index;
                while ((index = jQuery3.inArray(arg, list, index)) > -1) {
                  list.splice(index, 1);
                  if (index <= firingIndex) {
                    firingIndex--;
                  }
                }
              });
              return this;
            },
            has: function(fn) {
              return fn ? jQuery3.inArray(fn, list) > -1 : list.length > 0;
            },
            empty: function() {
              if (list) {
                list = [];
              }
              return this;
            },
            disable: function() {
              locked = queue = [];
              list = memory = "";
              return this;
            },
            disabled: function() {
              return !list;
            },
            lock: function() {
              locked = queue = [];
              if (!memory && !firing) {
                list = memory = "";
              }
              return this;
            },
            locked: function() {
              return !!locked;
            },
            fireWith: function(context, args) {
              if (!locked) {
                args = args || [];
                args = [context, args.slice ? args.slice() : args];
                queue.push(args);
                if (!firing) {
                  fire();
                }
              }
              return this;
            },
            fire: function() {
              self2.fireWith(this, arguments);
              return this;
            },
            fired: function() {
              return !!fired;
            }
          };
          return self2;
        };
        function Identity(v) {
          return v;
        }
        function Thrower(ex) {
          throw ex;
        }
        function adoptValue(value2, resolve, reject, noValue) {
          var method;
          try {
            if (value2 && isFunction(method = value2.promise)) {
              method.call(value2).done(resolve).fail(reject);
            } else if (value2 && isFunction(method = value2.then)) {
              method.call(value2, resolve, reject);
            } else {
              resolve.apply(void 0, [value2].slice(noValue));
            }
          } catch (value3) {
            reject.apply(void 0, [value3]);
          }
        }
        jQuery3.extend({
          Deferred: function(func) {
            var tuples = [
              [
                "notify",
                "progress",
                jQuery3.Callbacks("memory"),
                jQuery3.Callbacks("memory"),
                2
              ],
              [
                "resolve",
                "done",
                jQuery3.Callbacks("once memory"),
                jQuery3.Callbacks("once memory"),
                0,
                "resolved"
              ],
              [
                "reject",
                "fail",
                jQuery3.Callbacks("once memory"),
                jQuery3.Callbacks("once memory"),
                1,
                "rejected"
              ]
            ], state = "pending", promise = {
              state: function() {
                return state;
              },
              always: function() {
                deferred.done(arguments).fail(arguments);
                return this;
              },
              "catch": function(fn) {
                return promise.then(null, fn);
              },
              pipe: function() {
                var fns = arguments;
                return jQuery3.Deferred(function(newDefer) {
                  jQuery3.each(tuples, function(_i, tuple) {
                    var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]];
                    deferred[tuple[1]](function() {
                      var returned = fn && fn.apply(this, arguments);
                      if (returned && isFunction(returned.promise)) {
                        returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
                      } else {
                        newDefer[tuple[0] + "With"](
                          this,
                          fn ? [returned] : arguments
                        );
                      }
                    });
                  });
                  fns = null;
                }).promise();
              },
              then: function(onFulfilled, onRejected, onProgress) {
                var maxDepth = 0;
                function resolve(depth, deferred2, handler, special) {
                  return function() {
                    var that = this, args = arguments, mightThrow = function() {
                      var returned, then;
                      if (depth < maxDepth) {
                        return;
                      }
                      returned = handler.apply(that, args);
                      if (returned === deferred2.promise()) {
                        throw new TypeError("Thenable self-resolution");
                      }
                      then = returned && (typeof returned === "object" || typeof returned === "function") && returned.then;
                      if (isFunction(then)) {
                        if (special) {
                          then.call(
                            returned,
                            resolve(maxDepth, deferred2, Identity, special),
                            resolve(maxDepth, deferred2, Thrower, special)
                          );
                        } else {
                          maxDepth++;
                          then.call(
                            returned,
                            resolve(maxDepth, deferred2, Identity, special),
                            resolve(maxDepth, deferred2, Thrower, special),
                            resolve(
                              maxDepth,
                              deferred2,
                              Identity,
                              deferred2.notifyWith
                            )
                          );
                        }
                      } else {
                        if (handler !== Identity) {
                          that = void 0;
                          args = [returned];
                        }
                        (special || deferred2.resolveWith)(that, args);
                      }
                    }, process = special ? mightThrow : function() {
                      try {
                        mightThrow();
                      } catch (e) {
                        if (jQuery3.Deferred.exceptionHook) {
                          jQuery3.Deferred.exceptionHook(
                            e,
                            process.error
                          );
                        }
                        if (depth + 1 >= maxDepth) {
                          if (handler !== Thrower) {
                            that = void 0;
                            args = [e];
                          }
                          deferred2.rejectWith(that, args);
                        }
                      }
                    };
                    if (depth) {
                      process();
                    } else {
                      if (jQuery3.Deferred.getErrorHook) {
                        process.error = jQuery3.Deferred.getErrorHook();
                      } else if (jQuery3.Deferred.getStackHook) {
                        process.error = jQuery3.Deferred.getStackHook();
                      }
                      window2.setTimeout(process);
                    }
                  };
                }
                return jQuery3.Deferred(function(newDefer) {
                  tuples[0][3].add(
                    resolve(
                      0,
                      newDefer,
                      isFunction(onProgress) ? onProgress : Identity,
                      newDefer.notifyWith
                    )
                  );
                  tuples[1][3].add(
                    resolve(
                      0,
                      newDefer,
                      isFunction(onFulfilled) ? onFulfilled : Identity
                    )
                  );
                  tuples[2][3].add(
                    resolve(
                      0,
                      newDefer,
                      isFunction(onRejected) ? onRejected : Thrower
                    )
                  );
                }).promise();
              },
              promise: function(obj) {
                return obj != null ? jQuery3.extend(obj, promise) : promise;
              }
            }, deferred = {};
            jQuery3.each(tuples, function(i2, tuple) {
              var list = tuple[2], stateString = tuple[5];
              promise[tuple[1]] = list.add;
              if (stateString) {
                list.add(
                  function() {
                    state = stateString;
                  },
                  tuples[3 - i2][2].disable,
                  tuples[3 - i2][3].disable,
                  tuples[0][2].lock,
                  tuples[0][3].lock
                );
              }
              list.add(tuple[3].fire);
              deferred[tuple[0]] = function() {
                deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments);
                return this;
              };
              deferred[tuple[0] + "With"] = list.fireWith;
            });
            promise.promise(deferred);
            if (func) {
              func.call(deferred, deferred);
            }
            return deferred;
          },
          when: function(singleValue) {
            var remaining = arguments.length, i2 = remaining, resolveContexts = Array(i2), resolveValues = slice.call(arguments), primary = jQuery3.Deferred(), updateFunc = function(i3) {
              return function(value2) {
                resolveContexts[i3] = this;
                resolveValues[i3] = arguments.length > 1 ? slice.call(arguments) : value2;
                if (!--remaining) {
                  primary.resolveWith(resolveContexts, resolveValues);
                }
              };
            };
            if (remaining <= 1) {
              adoptValue(
                singleValue,
                primary.done(updateFunc(i2)).resolve,
                primary.reject,
                !remaining
              );
              if (primary.state() === "pending" || isFunction(resolveValues[i2] && resolveValues[i2].then)) {
                return primary.then();
              }
            }
            while (i2--) {
              adoptValue(resolveValues[i2], updateFunc(i2), primary.reject);
            }
            return primary.promise();
          }
        });
        var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
        jQuery3.Deferred.exceptionHook = function(error, asyncError) {
          if (window2.console && window2.console.warn && error && rerrorNames.test(error.name)) {
            window2.console.warn(
              "jQuery.Deferred exception: " + error.message,
              error.stack,
              asyncError
            );
          }
        };
        jQuery3.readyException = function(error) {
          window2.setTimeout(function() {
            throw error;
          });
        };
        var readyList = jQuery3.Deferred();
        jQuery3.fn.ready = function(fn) {
          readyList.then(fn).catch(function(error) {
            jQuery3.readyException(error);
          });
          return this;
        };
        jQuery3.extend({
          isReady: false,
          readyWait: 1,
          ready: function(wait) {
            if (wait === true ? --jQuery3.readyWait : jQuery3.isReady) {
              return;
            }
            jQuery3.isReady = true;
            if (wait !== true && --jQuery3.readyWait > 0) {
              return;
            }
            readyList.resolveWith(document2, [jQuery3]);
          }
        });
        jQuery3.ready.then = readyList.then;
        function completed() {
          document2.removeEventListener("DOMContentLoaded", completed);
          window2.removeEventListener("load", completed);
          jQuery3.ready();
        }
        if (document2.readyState === "complete" || document2.readyState !== "loading" && !document2.documentElement.doScroll) {
          window2.setTimeout(jQuery3.ready);
        } else {
          document2.addEventListener("DOMContentLoaded", completed);
          window2.addEventListener("load", completed);
        }
        var access = function(elems, fn, key, value2, chainable, emptyGet, raw) {
          var i2 = 0, len = elems.length, bulk = key == null;
          if (toType(key) === "object") {
            chainable = true;
            for (i2 in key) {
              access(elems, fn, i2, key[i2], true, emptyGet, raw);
            }
          } else if (value2 !== void 0) {
            chainable = true;
            if (!isFunction(value2)) {
              raw = true;
            }
            if (bulk) {
              if (raw) {
                fn.call(elems, value2);
                fn = null;
              } else {
                bulk = fn;
                fn = function(elem, _key, value3) {
                  return bulk.call(jQuery3(elem), value3);
                };
              }
            }
            if (fn) {
              for (; i2 < len; i2++) {
                fn(
                  elems[i2],
                  key,
                  raw ? value2 : value2.call(elems[i2], i2, fn(elems[i2], key))
                );
              }
            }
          }
          if (chainable) {
            return elems;
          }
          if (bulk) {
            return fn.call(elems);
          }
          return len ? fn(elems[0], key) : emptyGet;
        };
        var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g;
        function fcamelCase(_all, letter) {
          return letter.toUpperCase();
        }
        function camelCase(string) {
          return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
        }
        var acceptData = function(owner) {
          return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
        };
        function Data() {
          this.expando = jQuery3.expando + Data.uid++;
        }
        Data.uid = 1;
        Data.prototype = {
          cache: function(owner) {
            var value2 = owner[this.expando];
            if (!value2) {
              value2 = {};
              if (acceptData(owner)) {
                if (owner.nodeType) {
                  owner[this.expando] = value2;
                } else {
                  Object.defineProperty(owner, this.expando, {
                    value: value2,
                    configurable: true
                  });
                }
              }
            }
            return value2;
          },
          set: function(owner, data, value2) {
            var prop, cache2 = this.cache(owner);
            if (typeof data === "string") {
              cache2[camelCase(data)] = value2;
            } else {
              for (prop in data) {
                cache2[camelCase(prop)] = data[prop];
              }
            }
            return cache2;
          },
          get: function(owner, key) {
            return key === void 0 ? this.cache(owner) : owner[this.expando] && owner[this.expando][camelCase(key)];
          },
          access: function(owner, key, value2) {
            if (key === void 0 || key && typeof key === "string" && value2 === void 0) {
              return this.get(owner, key);
            }
            this.set(owner, key, value2);
            return value2 !== void 0 ? value2 : key;
          },
          remove: function(owner, key) {
            var i2, cache2 = owner[this.expando];
            if (cache2 === void 0) {
              return;
            }
            if (key !== void 0) {
              if (Array.isArray(key)) {
                key = key.map(camelCase);
              } else {
                key = camelCase(key);
                key = key in cache2 ? [key] : key.match(rnothtmlwhite) || [];
              }
              i2 = key.length;
              while (i2--) {
                delete cache2[key[i2]];
              }
            }
            if (key === void 0 || jQuery3.isEmptyObject(cache2)) {
              if (owner.nodeType) {
                owner[this.expando] = void 0;
              } else {
                delete owner[this.expando];
              }
            }
          },
          hasData: function(owner) {
            var cache2 = owner[this.expando];
            return cache2 !== void 0 && !jQuery3.isEmptyObject(cache2);
          }
        };
        var dataPriv = new Data();
        var dataUser = new Data();
        var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g;
        function getData(data) {
          if (data === "true") {
            return true;
          }
          if (data === "false") {
            return false;
          }
          if (data === "null") {
            return null;
          }
          if (data === +data + "") {
            return +data;
          }
          if (rbrace.test(data)) {
            return JSON.parse(data);
          }
          return data;
        }
        function dataAttr(elem, key, data) {
          var name2;
          if (data === void 0 && elem.nodeType === 1) {
            name2 = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
            data = elem.getAttribute(name2);
            if (typeof data === "string") {
              try {
                data = getData(data);
              } catch (e) {
              }
              dataUser.set(elem, key, data);
            } else {
              data = void 0;
            }
          }
          return data;
        }
        jQuery3.extend({
          hasData: function(elem) {
            return dataUser.hasData(elem) || dataPriv.hasData(elem);
          },
          data: function(elem, name2, data) {
            return dataUser.access(elem, name2, data);
          },
          removeData: function(elem, name2) {
            dataUser.remove(elem, name2);
          },
          _data: function(elem, name2, data) {
            return dataPriv.access(elem, name2, data);
          },
          _removeData: function(elem, name2) {
            dataPriv.remove(elem, name2);
          }
        });
        jQuery3.fn.extend({
          data: function(key, value2) {
            var i2, name2, data, elem = this[0], attrs = elem && elem.attributes;
            if (key === void 0) {
              if (this.length) {
                data = dataUser.get(elem);
                if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
                  i2 = attrs.length;
                  while (i2--) {
                    if (attrs[i2]) {
                      name2 = attrs[i2].name;
                      if (name2.indexOf("data-") === 0) {
                        name2 = camelCase(name2.slice(5));
                        dataAttr(elem, name2, data[name2]);
                      }
                    }
                  }
                  dataPriv.set(elem, "hasDataAttrs", true);
                }
              }
              return data;
            }
            if (typeof key === "object") {
              return this.each(function() {
                dataUser.set(this, key);
              });
            }
            return access(this, function(value3) {
              var data2;
              if (elem && value3 === void 0) {
                data2 = dataUser.get(elem, key);
                if (data2 !== void 0) {
                  return data2;
                }
                data2 = dataAttr(elem, key);
                if (data2 !== void 0) {
                  return data2;
                }
                return;
              }
              this.each(function() {
                dataUser.set(this, key, value3);
              });
            }, null, value2, arguments.length > 1, null, true);
          },
          removeData: function(key) {
            return this.each(function() {
              dataUser.remove(this, key);
            });
          }
        });
        jQuery3.extend({
          queue: function(elem, type2, data) {
            var queue;
            if (elem) {
              type2 = (type2 || "fx") + "queue";
              queue = dataPriv.get(elem, type2);
              if (data) {
                if (!queue || Array.isArray(data)) {
                  queue = dataPriv.access(elem, type2, jQuery3.makeArray(data));
                } else {
                  queue.push(data);
                }
              }
              return queue || [];
            }
          },
          dequeue: function(elem, type2) {
            type2 = type2 || "fx";
            var queue = jQuery3.queue(elem, type2), startLength = queue.length, fn = queue.shift(), hooks = jQuery3._queueHooks(elem, type2), next = function() {
              jQuery3.dequeue(elem, type2);
            };
            if (fn === "inprogress") {
              fn = queue.shift();
              startLength--;
            }
            if (fn) {
              if (type2 === "fx") {
                queue.unshift("inprogress");
              }
              delete hooks.stop;
              fn.call(elem, next, hooks);
            }
            if (!startLength && hooks) {
              hooks.empty.fire();
            }
          },
          _queueHooks: function(elem, type2) {
            var key = type2 + "queueHooks";
            return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
              empty: jQuery3.Callbacks("once memory").add(function() {
                dataPriv.remove(elem, [type2 + "queue", key]);
              })
            });
          }
        });
        jQuery3.fn.extend({
          queue: function(type2, data) {
            var setter = 2;
            if (typeof type2 !== "string") {
              data = type2;
              type2 = "fx";
              setter--;
            }
            if (arguments.length < setter) {
              return jQuery3.queue(this[0], type2);
            }
            return data === void 0 ? this : this.each(function() {
              var queue = jQuery3.queue(this, type2, data);
              jQuery3._queueHooks(this, type2);
              if (type2 === "fx" && queue[0] !== "inprogress") {
                jQuery3.dequeue(this, type2);
              }
            });
          },
          dequeue: function(type2) {
            return this.each(function() {
              jQuery3.dequeue(this, type2);
            });
          },
          clearQueue: function(type2) {
            return this.queue(type2 || "fx", []);
          },
          promise: function(type2, obj) {
            var tmp, count = 1, defer = jQuery3.Deferred(), elements = this, i2 = this.length, resolve = function() {
              if (!--count) {
                defer.resolveWith(elements, [elements]);
              }
            };
            if (typeof type2 !== "string") {
              obj = type2;
              type2 = void 0;
            }
            type2 = type2 || "fx";
            while (i2--) {
              tmp = dataPriv.get(elements[i2], type2 + "queueHooks");
              if (tmp && tmp.empty) {
                count++;
                tmp.empty.add(resolve);
              }
            }
            resolve();
            return defer.promise(obj);
          }
        });
        var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
        var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
        var cssExpand = ["Top", "Right", "Bottom", "Left"];
        var documentElement = document2.documentElement;
        var isAttached = function(elem) {
          return jQuery3.contains(elem.ownerDocument, elem);
        }, composed = { composed: true };
        if (documentElement.getRootNode) {
          isAttached = function(elem) {
            return jQuery3.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;
          };
        }
        var isHiddenWithinTree = function(elem, el) {
          elem = el || elem;
          return elem.style.display === "none" || elem.style.display === "" && isAttached(elem) && jQuery3.css(elem, "display") === "none";
        };
        function adjustCSS(elem, prop, valueParts, tween) {
          var adjusted, scale, maxIterations = 20, currentValue = tween ? function() {
            return tween.cur();
          } : function() {
            return jQuery3.css(elem, prop, "");
          }, initial = currentValue(), unit = valueParts && valueParts[3] || (jQuery3.cssNumber[prop] ? "" : "px"), initialInUnit = elem.nodeType && (jQuery3.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery3.css(elem, prop));
          if (initialInUnit && initialInUnit[3] !== unit) {
            initial = initial / 2;
            unit = unit || initialInUnit[3];
            initialInUnit = +initial || 1;
            while (maxIterations--) {
              jQuery3.style(elem, prop, initialInUnit + unit);
              if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {
                maxIterations = 0;
              }
              initialInUnit = initialInUnit / scale;
            }
            initialInUnit = initialInUnit * 2;
            jQuery3.style(elem, prop, initialInUnit + unit);
            valueParts = valueParts || [];
          }
          if (valueParts) {
            initialInUnit = +initialInUnit || +initial || 0;
            adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
            if (tween) {
              tween.unit = unit;
              tween.start = initialInUnit;
              tween.end = adjusted;
            }
          }
          return adjusted;
        }
        var defaultDisplayMap = {};
        function getDefaultDisplay(elem) {
          var temp, doc = elem.ownerDocument, nodeName2 = elem.nodeName, display = defaultDisplayMap[nodeName2];
          if (display) {
            return display;
          }
          temp = doc.body.appendChild(doc.createElement(nodeName2));
          display = jQuery3.css(temp, "display");
          temp.parentNode.removeChild(temp);
          if (display === "none") {
            display = "block";
          }
          defaultDisplayMap[nodeName2] = display;
          return display;
        }
        function showHide(elements, show) {
          var display, elem, values = [], index = 0, length2 = elements.length;
          for (; index < length2; index++) {
            elem = elements[index];
            if (!elem.style) {
              continue;
            }
            display = elem.style.display;
            if (show) {
              if (display === "none") {
                values[index] = dataPriv.get(elem, "display") || null;
                if (!values[index]) {
                  elem.style.display = "";
                }
              }
              if (elem.style.display === "" && isHiddenWithinTree(elem)) {
                values[index] = getDefaultDisplay(elem);
              }
            } else {
              if (display !== "none") {
                values[index] = "none";
                dataPriv.set(elem, "display", display);
              }
            }
          }
          for (index = 0; index < length2; index++) {
            if (values[index] != null) {
              elements[index].style.display = values[index];
            }
          }
          return elements;
        }
        jQuery3.fn.extend({
          show: function() {
            return showHide(this, true);
          },
          hide: function() {
            return showHide(this);
          },
          toggle: function(state) {
            if (typeof state === "boolean") {
              return state ? this.show() : this.hide();
            }
            return this.each(function() {
              if (isHiddenWithinTree(this)) {
                jQuery3(this).show();
              } else {
                jQuery3(this).hide();
              }
            });
          }
        });
        var rcheckableType = /^(?:checkbox|radio)$/i;
        var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i;
        var rscriptType = /^$|^module$|\/(?:java|ecma)script/i;
        (function() {
          var fragment = document2.createDocumentFragment(), div = fragment.appendChild(document2.createElement("div")), input = document2.createElement("input");
          input.setAttribute("type", "radio");
          input.setAttribute("checked", "checked");
          input.setAttribute("name", "t");
          div.appendChild(input);
          support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
          div.innerHTML = "<textarea>x</textarea>";
          support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
          div.innerHTML = "<option></option>";
          support.option = !!div.lastChild;
        })();
        var wrapMap = {
          thead: [1, "<table>", "</table>"],
          col: [2, "<table><colgroup>", "</colgroup></table>"],
          tr: [2, "<table><tbody>", "</tbody></table>"],
          td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
          _default: [0, "", ""]
        };
        wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
        wrapMap.th = wrapMap.td;
        if (!support.option) {
          wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"];
        }
        function getAll(context, tag) {
          var ret;
          if (typeof context.getElementsByTagName !== "undefined") {
            ret = context.getElementsByTagName(tag || "*");
          } else if (typeof context.querySelectorAll !== "undefined") {
            ret = context.querySelectorAll(tag || "*");
          } else {
            ret = [];
          }
          if (tag === void 0 || tag && nodeName(context, tag)) {
            return jQuery3.merge([context], ret);
          }
          return ret;
        }
        function setGlobalEval(elems, refElements) {
          var i2 = 0, l = elems.length;
          for (; i2 < l; i2++) {
            dataPriv.set(
              elems[i2],
              "globalEval",
              !refElements || dataPriv.get(refElements[i2], "globalEval")
            );
          }
        }
        var rhtml = /<|&#?\w+;/;
        function buildFragment(elems, context, scripts, selection, ignored) {
          var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i2 = 0, l = elems.length;
          for (; i2 < l; i2++) {
            elem = elems[i2];
            if (elem || elem === 0) {
              if (toType(elem) === "object") {
                jQuery3.merge(nodes, elem.nodeType ? [elem] : elem);
              } else if (!rhtml.test(elem)) {
                nodes.push(context.createTextNode(elem));
              } else {
                tmp = tmp || fragment.appendChild(context.createElement("div"));
                tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
                wrap = wrapMap[tag] || wrapMap._default;
                tmp.innerHTML = wrap[1] + jQuery3.htmlPrefilter(elem) + wrap[2];
                j = wrap[0];
                while (j--) {
                  tmp = tmp.lastChild;
                }
                jQuery3.merge(nodes, tmp.childNodes);
                tmp = fragment.firstChild;
                tmp.textContent = "";
              }
            }
          }
          fragment.textContent = "";
          i2 = 0;
          while (elem = nodes[i2++]) {
            if (selection && jQuery3.inArray(elem, selection) > -1) {
              if (ignored) {
                ignored.push(elem);
              }
              continue;
            }
            attached = isAttached(elem);
            tmp = getAll(fragment.appendChild(elem), "script");
            if (attached) {
              setGlobalEval(tmp);
            }
            if (scripts) {
              j = 0;
              while (elem = tmp[j++]) {
                if (rscriptType.test(elem.type || "")) {
                  scripts.push(elem);
                }
              }
            }
          }
          return fragment;
        }
        var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
        function returnTrue() {
          return true;
        }
        function returnFalse() {
          return false;
        }
        function on2(elem, types, selector, data, fn, one) {
          var origFn, type2;
          if (typeof types === "object") {
            if (typeof selector !== "string") {
              data = data || selector;
              selector = void 0;
            }
            for (type2 in types) {
              on2(elem, type2, selector, data, types[type2], one);
            }
            return elem;
          }
          if (data == null && fn == null) {
            fn = selector;
            data = selector = void 0;
          } else if (fn == null) {
            if (typeof selector === "string") {
              fn = data;
              data = void 0;
            } else {
              fn = data;
              data = selector;
              selector = void 0;
            }
          }
          if (fn === false) {
            fn = returnFalse;
          } else if (!fn) {
            return elem;
          }
          if (one === 1) {
            origFn = fn;
            fn = function(event) {
              jQuery3().off(event);
              return origFn.apply(this, arguments);
            };
            fn.guid = origFn.guid || (origFn.guid = jQuery3.guid++);
          }
          return elem.each(function() {
            jQuery3.event.add(this, types, fn, data, selector);
          });
        }
        jQuery3.event = {
          global: {},
          add: function(elem, types, handler, data, selector) {
            var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type2, namespaces, origType, elemData = dataPriv.get(elem);
            if (!acceptData(elem)) {
              return;
            }
            if (handler.handler) {
              handleObjIn = handler;
              handler = handleObjIn.handler;
              selector = handleObjIn.selector;
            }
            if (selector) {
              jQuery3.find.matchesSelector(documentElement, selector);
            }
            if (!handler.guid) {
              handler.guid = jQuery3.guid++;
            }
            if (!(events = elemData.events)) {
              events = elemData.events = /* @__PURE__ */ Object.create(null);
            }
            if (!(eventHandle = elemData.handle)) {
              eventHandle = elemData.handle = function(e) {
                return typeof jQuery3 !== "undefined" && jQuery3.event.triggered !== e.type ? jQuery3.event.dispatch.apply(elem, arguments) : void 0;
              };
            }
            types = (types || "").match(rnothtmlwhite) || [""];
            t = types.length;
            while (t--) {
              tmp = rtypenamespace.exec(types[t]) || [];
              type2 = origType = tmp[1];
              namespaces = (tmp[2] || "").split(".").sort();
              if (!type2) {
                continue;
              }
              special = jQuery3.event.special[type2] || {};
              type2 = (selector ? special.delegateType : special.bindType) || type2;
              special = jQuery3.event.special[type2] || {};
              handleObj = jQuery3.extend({
                type: type2,
                origType,
                data,
                handler,
                guid: handler.guid,
                selector,
                needsContext: selector && jQuery3.expr.match.needsContext.test(selector),
                namespace: namespaces.join(".")
              }, handleObjIn);
              if (!(handlers = events[type2])) {
                handlers = events[type2] = [];
                handlers.delegateCount = 0;
                if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
                  if (elem.addEventListener) {
                    elem.addEventListener(type2, eventHandle);
                  }
                }
              }
              if (special.add) {
                special.add.call(elem, handleObj);
                if (!handleObj.handler.guid) {
                  handleObj.handler.guid = handler.guid;
                }
              }
              if (selector) {
                handlers.splice(handlers.delegateCount++, 0, handleObj);
              } else {
                handlers.push(handleObj);
              }
              jQuery3.event.global[type2] = true;
            }
          },
          remove: function(elem, types, handler, selector, mappedTypes) {
            var j, origCount, tmp, events, t, handleObj, special, handlers, type2, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
            if (!elemData || !(events = elemData.events)) {
              return;
            }
            types = (types || "").match(rnothtmlwhite) || [""];
            t = types.length;
            while (t--) {
              tmp = rtypenamespace.exec(types[t]) || [];
              type2 = origType = tmp[1];
              namespaces = (tmp[2] || "").split(".").sort();
              if (!type2) {
                for (type2 in events) {
                  jQuery3.event.remove(elem, type2 + types[t], handler, selector, true);
                }
                continue;
              }
              special = jQuery3.event.special[type2] || {};
              type2 = (selector ? special.delegateType : special.bindType) || type2;
              handlers = events[type2] || [];
              tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
              origCount = j = handlers.length;
              while (j--) {
                handleObj = handlers[j];
                if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) {
                  handlers.splice(j, 1);
                  if (handleObj.selector) {
                    handlers.delegateCount--;
                  }
                  if (special.remove) {
                    special.remove.call(elem, handleObj);
                  }
                }
              }
              if (origCount && !handlers.length) {
                if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
                  jQuery3.removeEvent(elem, type2, elemData.handle);
                }
                delete events[type2];
              }
            }
            if (jQuery3.isEmptyObject(events)) {
              dataPriv.remove(elem, "handle events");
            }
          },
          dispatch: function(nativeEvent) {
            var i2, j, ret, matched, handleObj, handlerQueue, args = new Array(arguments.length), event = jQuery3.event.fix(nativeEvent), handlers = (dataPriv.get(this, "events") || /* @__PURE__ */ Object.create(null))[event.type] || [], special = jQuery3.event.special[event.type] || {};
            args[0] = event;
            for (i2 = 1; i2 < arguments.length; i2++) {
              args[i2] = arguments[i2];
            }
            event.delegateTarget = this;
            if (special.preDispatch && special.preDispatch.call(this, event) === false) {
              return;
            }
            handlerQueue = jQuery3.event.handlers.call(this, event, handlers);
            i2 = 0;
            while ((matched = handlerQueue[i2++]) && !event.isPropagationStopped()) {
              event.currentTarget = matched.elem;
              j = 0;
              while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
                if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {
                  event.handleObj = handleObj;
                  event.data = handleObj.data;
                  ret = ((jQuery3.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
                  if (ret !== void 0) {
                    if ((event.result = ret) === false) {
                      event.preventDefault();
                      event.stopPropagation();
                    }
                  }
                }
              }
            }
            if (special.postDispatch) {
              special.postDispatch.call(this, event);
            }
            return event.result;
          },
          handlers: function(event, handlers) {
            var i2, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target;
            if (delegateCount && cur.nodeType && !(event.type === "click" && event.button >= 1)) {
              for (; cur !== this; cur = cur.parentNode || this) {
                if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) {
                  matchedHandlers = [];
                  matchedSelectors = {};
                  for (i2 = 0; i2 < delegateCount; i2++) {
                    handleObj = handlers[i2];
                    sel = handleObj.selector + " ";
                    if (matchedSelectors[sel] === void 0) {
                      matchedSelectors[sel] = handleObj.needsContext ? jQuery3(sel, this).index(cur) > -1 : jQuery3.find(sel, this, null, [cur]).length;
                    }
                    if (matchedSelectors[sel]) {
                      matchedHandlers.push(handleObj);
                    }
                  }
                  if (matchedHandlers.length) {
                    handlerQueue.push({ elem: cur, handlers: matchedHandlers });
                  }
                }
              }
            }
            cur = this;
            if (delegateCount < handlers.length) {
              handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) });
            }
            return handlerQueue;
          },
          addProp: function(name2, hook) {
            Object.defineProperty(jQuery3.Event.prototype, name2, {
              enumerable: true,
              configurable: true,
              get: isFunction(hook) ? function() {
                if (this.originalEvent) {
                  return hook(this.originalEvent);
                }
              } : function() {
                if (this.originalEvent) {
                  return this.originalEvent[name2];
                }
              },
              set: function(value2) {
                Object.defineProperty(this, name2, {
                  enumerable: true,
                  configurable: true,
                  writable: true,
                  value: value2
                });
              }
            });
          },
          fix: function(originalEvent) {
            return originalEvent[jQuery3.expando] ? originalEvent : new jQuery3.Event(originalEvent);
          },
          special: {
            load: {
              noBubble: true
            },
            click: {
              setup: function(data) {
                var el = this || data;
                if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
                  leverageNative(el, "click", true);
                }
                return false;
              },
              trigger: function(data) {
                var el = this || data;
                if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
                  leverageNative(el, "click");
                }
                return true;
              },
              _default: function(event) {
                var target = event.target;
                return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a");
              }
            },
            beforeunload: {
              postDispatch: function(event) {
                if (event.result !== void 0 && event.originalEvent) {
                  event.originalEvent.returnValue = event.result;
                }
              }
            }
          }
        };
        function leverageNative(el, type2, isSetup) {
          if (!isSetup) {
            if (dataPriv.get(el, type2) === void 0) {
              jQuery3.event.add(el, type2, returnTrue);
            }
            return;
          }
          dataPriv.set(el, type2, false);
          jQuery3.event.add(el, type2, {
            namespace: false,
            handler: function(event) {
              var result, saved = dataPriv.get(this, type2);
              if (event.isTrigger & 1 && this[type2]) {
                if (!saved) {
                  saved = slice.call(arguments);
                  dataPriv.set(this, type2, saved);
                  this[type2]();
                  result = dataPriv.get(this, type2);
                  dataPriv.set(this, type2, false);
                  if (saved !== result) {
                    event.stopImmediatePropagation();
                    event.preventDefault();
                    return result;
                  }
                } else if ((jQuery3.event.special[type2] || {}).delegateType) {
                  event.stopPropagation();
                }
              } else if (saved) {
                dataPriv.set(this, type2, jQuery3.event.trigger(
                  saved[0],
                  saved.slice(1),
                  this
                ));
                event.stopPropagation();
                event.isImmediatePropagationStopped = returnTrue;
              }
            }
          });
        }
        jQuery3.removeEvent = function(elem, type2, handle) {
          if (elem.removeEventListener) {
            elem.removeEventListener(type2, handle);
          }
        };
        jQuery3.Event = function(src, props) {
          if (!(this instanceof jQuery3.Event)) {
            return new jQuery3.Event(src, props);
          }
          if (src && src.type) {
            this.originalEvent = src;
            this.type = src.type;
            this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === void 0 && src.returnValue === false ? returnTrue : returnFalse;
            this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;
            this.currentTarget = src.currentTarget;
            this.relatedTarget = src.relatedTarget;
          } else {
            this.type = src;
          }
          if (props) {
            jQuery3.extend(this, props);
          }
          this.timeStamp = src && src.timeStamp || Date.now();
          this[jQuery3.expando] = true;
        };
        jQuery3.Event.prototype = {
          constructor: jQuery3.Event,
          isDefaultPrevented: returnFalse,
          isPropagationStopped: returnFalse,
          isImmediatePropagationStopped: returnFalse,
          isSimulated: false,
          preventDefault: function() {
            var e = this.originalEvent;
            this.isDefaultPrevented = returnTrue;
            if (e && !this.isSimulated) {
              e.preventDefault();
            }
          },
          stopPropagation: function() {
            var e = this.originalEvent;
            this.isPropagationStopped = returnTrue;
            if (e && !this.isSimulated) {
              e.stopPropagation();
            }
          },
          stopImmediatePropagation: function() {
            var e = this.originalEvent;
            this.isImmediatePropagationStopped = returnTrue;
            if (e && !this.isSimulated) {
              e.stopImmediatePropagation();
            }
            this.stopPropagation();
          }
        };
        jQuery3.each({
          altKey: true,
          bubbles: true,
          cancelable: true,
          changedTouches: true,
          ctrlKey: true,
          detail: true,
          eventPhase: true,
          metaKey: true,
          pageX: true,
          pageY: true,
          shiftKey: true,
          view: true,
          "char": true,
          code: true,
          charCode: true,
          key: true,
          keyCode: true,
          button: true,
          buttons: true,
          clientX: true,
          clientY: true,
          offsetX: true,
          offsetY: true,
          pointerId: true,
          pointerType: true,
          screenX: true,
          screenY: true,
          targetTouches: true,
          toElement: true,
          touches: true,
          which: true
        }, jQuery3.event.addProp);
        jQuery3.each({ focus: "focusin", blur: "focusout" }, function(type2, delegateType) {
          function focusMappedHandler(nativeEvent) {
            if (document2.documentMode) {
              var handle = dataPriv.get(this, "handle"), event = jQuery3.event.fix(nativeEvent);
              event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
              event.isSimulated = true;
              handle(nativeEvent);
              if (event.target === event.currentTarget) {
                handle(event);
              }
            } else {
              jQuery3.event.simulate(
                delegateType,
                nativeEvent.target,
                jQuery3.event.fix(nativeEvent)
              );
            }
          }
          jQuery3.event.special[type2] = {
            setup: function() {
              var attaches;
              leverageNative(this, type2, true);
              if (document2.documentMode) {
                attaches = dataPriv.get(this, delegateType);
                if (!attaches) {
                  this.addEventListener(delegateType, focusMappedHandler);
                }
                dataPriv.set(this, delegateType, (attaches || 0) + 1);
              } else {
                return false;
              }
            },
            trigger: function() {
              leverageNative(this, type2);
              return true;
            },
            teardown: function() {
              var attaches;
              if (document2.documentMode) {
                attaches = dataPriv.get(this, delegateType) - 1;
                if (!attaches) {
                  this.removeEventListener(delegateType, focusMappedHandler);
                  dataPriv.remove(this, delegateType);
                } else {
                  dataPriv.set(this, delegateType, attaches);
                }
              } else {
                return false;
              }
            },
            _default: function(event) {
              return dataPriv.get(event.target, type2);
            },
            delegateType
          };
          jQuery3.event.special[delegateType] = {
            setup: function() {
              var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType);
              if (!attaches) {
                if (document2.documentMode) {
                  this.addEventListener(delegateType, focusMappedHandler);
                } else {
                  doc.addEventListener(type2, focusMappedHandler, true);
                }
              }
              dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);
            },
            teardown: function() {
              var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType) - 1;
              if (!attaches) {
                if (document2.documentMode) {
                  this.removeEventListener(delegateType, focusMappedHandler);
                } else {
                  doc.removeEventListener(type2, focusMappedHandler, true);
                }
                dataPriv.remove(dataHolder, delegateType);
              } else {
                dataPriv.set(dataHolder, delegateType, attaches);
              }
            }
          };
        });
        jQuery3.each({
          mouseenter: "mouseover",
          mouseleave: "mouseout",
          pointerenter: "pointerover",
          pointerleave: "pointerout"
        }, function(orig, fix) {
          jQuery3.event.special[orig] = {
            delegateType: fix,
            bindType: fix,
            handle: function(event) {
              var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj;
              if (!related || related !== target && !jQuery3.contains(target, related)) {
                event.type = handleObj.origType;
                ret = handleObj.handler.apply(this, arguments);
                event.type = fix;
              }
              return ret;
            }
          };
        });
        jQuery3.fn.extend({
          on: function(types, selector, data, fn) {
            return on2(this, types, selector, data, fn);
          },
          one: function(types, selector, data, fn) {
            return on2(this, types, selector, data, fn, 1);
          },
          off: function(types, selector, fn) {
            var handleObj, type2;
            if (types && types.preventDefault && types.handleObj) {
              handleObj = types.handleObj;
              jQuery3(types.delegateTarget).off(
                handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
                handleObj.selector,
                handleObj.handler
              );
              return this;
            }
            if (typeof types === "object") {
              for (type2 in types) {
                this.off(type2, selector, types[type2]);
              }
              return this;
            }
            if (selector === false || typeof selector === "function") {
              fn = selector;
              selector = void 0;
            }
            if (fn === false) {
              fn = returnFalse;
            }
            return this.each(function() {
              jQuery3.event.remove(this, types, fn, selector);
            });
          }
        });
        var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
        function manipulationTarget(elem, content) {
          if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) {
            return jQuery3(elem).children("tbody")[0] || elem;
          }
          return elem;
        }
        function disableScript(elem) {
          elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
          return elem;
        }
        function restoreScript(elem) {
          if ((elem.type || "").slice(0, 5) === "true/") {
            elem.type = elem.type.slice(5);
          } else {
            elem.removeAttribute("type");
          }
          return elem;
        }
        function cloneCopyEvent(src, dest) {
          var i2, l, type2, pdataOld, udataOld, udataCur, events;
          if (dest.nodeType !== 1) {
            return;
          }
          if (dataPriv.hasData(src)) {
            pdataOld = dataPriv.get(src);
            events = pdataOld.events;
            if (events) {
              dataPriv.remove(dest, "handle events");
              for (type2 in events) {
                for (i2 = 0, l = events[type2].length; i2 < l; i2++) {
                  jQuery3.event.add(dest, type2, events[type2][i2]);
                }
              }
            }
          }
          if (dataUser.hasData(src)) {
            udataOld = dataUser.access(src);
            udataCur = jQuery3.extend({}, udataOld);
            dataUser.set(dest, udataCur);
          }
        }
        function fixInput(src, dest) {
          var nodeName2 = dest.nodeName.toLowerCase();
          if (nodeName2 === "input" && rcheckableType.test(src.type)) {
            dest.checked = src.checked;
          } else if (nodeName2 === "input" || nodeName2 === "textarea") {
            dest.defaultValue = src.defaultValue;
          }
        }
        function domManip(collection, args, callback, ignored) {
          args = flat(args);
          var fragment, first, scripts, hasScripts, node, doc, i2 = 0, l = collection.length, iNoClone = l - 1, value2 = args[0], valueIsFunction = isFunction(value2);
          if (valueIsFunction || l > 1 && typeof value2 === "string" && !support.checkClone && rchecked.test(value2)) {
            return collection.each(function(index) {
              var self2 = collection.eq(index);
              if (valueIsFunction) {
                args[0] = value2.call(this, index, self2.html());
              }
              domManip(self2, args, callback, ignored);
            });
          }
          if (l) {
            fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
            first = fragment.firstChild;
            if (fragment.childNodes.length === 1) {
              fragment = first;
            }
            if (first || ignored) {
              scripts = jQuery3.map(getAll(fragment, "script"), disableScript);
              hasScripts = scripts.length;
              for (; i2 < l; i2++) {
                node = fragment;
                if (i2 !== iNoClone) {
                  node = jQuery3.clone(node, true, true);
                  if (hasScripts) {
                    jQuery3.merge(scripts, getAll(node, "script"));
                  }
                }
                callback.call(collection[i2], node, i2);
              }
              if (hasScripts) {
                doc = scripts[scripts.length - 1].ownerDocument;
                jQuery3.map(scripts, restoreScript);
                for (i2 = 0; i2 < hasScripts; i2++) {
                  node = scripts[i2];
                  if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery3.contains(doc, node)) {
                    if (node.src && (node.type || "").toLowerCase() !== "module") {
                      if (jQuery3._evalUrl && !node.noModule) {
                        jQuery3._evalUrl(node.src, {
                          nonce: node.nonce || node.getAttribute("nonce")
                        }, doc);
                      }
                    } else {
                      DOMEval(node.textContent.replace(rcleanScript, ""), node, doc);
                    }
                  }
                }
              }
            }
          }
          return collection;
        }
        function remove(elem, selector, keepData) {
          var node, nodes = selector ? jQuery3.filter(selector, elem) : elem, i2 = 0;
          for (; (node = nodes[i2]) != null; i2++) {
            if (!keepData && node.nodeType === 1) {
              jQuery3.cleanData(getAll(node));
            }
            if (node.parentNode) {
              if (keepData && isAttached(node)) {
                setGlobalEval(getAll(node, "script"));
              }
              node.parentNode.removeChild(node);
            }
          }
          return elem;
        }
        jQuery3.extend({
          htmlPrefilter: function(html) {
            return html;
          },
          clone: function(elem, dataAndEvents, deepDataAndEvents) {
            var i2, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = isAttached(elem);
            if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery3.isXMLDoc(elem)) {
              destElements = getAll(clone);
              srcElements = getAll(elem);
              for (i2 = 0, l = srcElements.length; i2 < l; i2++) {
                fixInput(srcElements[i2], destElements[i2]);
              }
            }
            if (dataAndEvents) {
              if (deepDataAndEvents) {
                srcElements = srcElements || getAll(elem);
                destElements = destElements || getAll(clone);
                for (i2 = 0, l = srcElements.length; i2 < l; i2++) {
                  cloneCopyEvent(srcElements[i2], destElements[i2]);
                }
              } else {
                cloneCopyEvent(elem, clone);
              }
            }
            destElements = getAll(clone, "script");
            if (destElements.length > 0) {
              setGlobalEval(destElements, !inPage && getAll(elem, "script"));
            }
            return clone;
          },
          cleanData: function(elems) {
            var data, elem, type2, special = jQuery3.event.special, i2 = 0;
            for (; (elem = elems[i2]) !== void 0; i2++) {
              if (acceptData(elem)) {
                if (data = elem[dataPriv.expando]) {
                  if (data.events) {
                    for (type2 in data.events) {
                      if (special[type2]) {
                        jQuery3.event.remove(elem, type2);
                      } else {
                        jQuery3.removeEvent(elem, type2, data.handle);
                      }
                    }
                  }
                  elem[dataPriv.expando] = void 0;
                }
                if (elem[dataUser.expando]) {
                  elem[dataUser.expando] = void 0;
                }
              }
            }
          }
        });
        jQuery3.fn.extend({
          detach: function(selector) {
            return remove(this, selector, true);
          },
          remove: function(selector) {
            return remove(this, selector);
          },
          text: function(value2) {
            return access(this, function(value3) {
              return value3 === void 0 ? jQuery3.text(this) : this.empty().each(function() {
                if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
                  this.textContent = value3;
                }
              });
            }, null, value2, arguments.length);
          },
          append: function() {
            return domManip(this, arguments, function(elem) {
              if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
                var target = manipulationTarget(this, elem);
                target.appendChild(elem);
              }
            });
          },
          prepend: function() {
            return domManip(this, arguments, function(elem) {
              if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
                var target = manipulationTarget(this, elem);
                target.insertBefore(elem, target.firstChild);
              }
            });
          },
          before: function() {
            return domManip(this, arguments, function(elem) {
              if (this.parentNode) {
                this.parentNode.insertBefore(elem, this);
              }
            });
          },
          after: function() {
            return domManip(this, arguments, function(elem) {
              if (this.parentNode) {
                this.parentNode.insertBefore(elem, this.nextSibling);
              }
            });
          },
          empty: function() {
            var elem, i2 = 0;
            for (; (elem = this[i2]) != null; i2++) {
              if (elem.nodeType === 1) {
                jQuery3.cleanData(getAll(elem, false));
                elem.textContent = "";
              }
            }
            return this;
          },
          clone: function(dataAndEvents, deepDataAndEvents) {
            dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
            deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
            return this.map(function() {
              return jQuery3.clone(this, dataAndEvents, deepDataAndEvents);
            });
          },
          html: function(value2) {
            return access(this, function(value3) {
              var elem = this[0] || {}, i2 = 0, l = this.length;
              if (value3 === void 0 && elem.nodeType === 1) {
                return elem.innerHTML;
              }
              if (typeof value3 === "string" && !rnoInnerhtml.test(value3) && !wrapMap[(rtagName.exec(value3) || ["", ""])[1].toLowerCase()]) {
                value3 = jQuery3.htmlPrefilter(value3);
                try {
                  for (; i2 < l; i2++) {
                    elem = this[i2] || {};
                    if (elem.nodeType === 1) {
                      jQuery3.cleanData(getAll(elem, false));
                      elem.innerHTML = value3;
                    }
                  }
                  elem = 0;
                } catch (e) {
                }
              }
              if (elem) {
                this.empty().append(value3);
              }
            }, null, value2, arguments.length);
          },
          replaceWith: function() {
            var ignored = [];
            return domManip(this, arguments, function(elem) {
              var parent = this.parentNode;
              if (jQuery3.inArray(this, ignored) < 0) {
                jQuery3.cleanData(getAll(this));
                if (parent) {
                  parent.replaceChild(elem, this);
                }
              }
            }, ignored);
          }
        });
        jQuery3.each({
          appendTo: "append",
          prependTo: "prepend",
          insertBefore: "before",
          insertAfter: "after",
          replaceAll: "replaceWith"
        }, function(name2, original) {
          jQuery3.fn[name2] = function(selector) {
            var elems, ret = [], insert = jQuery3(selector), last = insert.length - 1, i2 = 0;
            for (; i2 <= last; i2++) {
              elems = i2 === last ? this : this.clone(true);
              jQuery3(insert[i2])[original](elems);
              push.apply(ret, elems.get());
            }
            return this.pushStack(ret);
          };
        });
        var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
        var rcustomProp = /^--/;
        var getStyles = function(elem) {
          var view = elem.ownerDocument.defaultView;
          if (!view || !view.opener) {
            view = window2;
          }
          return view.getComputedStyle(elem);
        };
        var swap = function(elem, options, callback) {
          var ret, name2, old = {};
          for (name2 in options) {
            old[name2] = elem.style[name2];
            elem.style[name2] = options[name2];
          }
          ret = callback.call(elem);
          for (name2 in options) {
            elem.style[name2] = old[name2];
          }
          return ret;
        };
        var rboxStyle = new RegExp(cssExpand.join("|"), "i");
        (function() {
          function computeStyleTests() {
            if (!div) {
              return;
            }
            container.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0";
            div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%";
            documentElement.appendChild(container).appendChild(div);
            var divStyle = window2.getComputedStyle(div);
            pixelPositionVal = divStyle.top !== "1%";
            reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;
            div.style.right = "60%";
            pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;
            boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;
            div.style.position = "absolute";
            scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;
            documentElement.removeChild(container);
            div = null;
          }
          function roundPixelMeasures(measure) {
            return Math.round(parseFloat(measure));
          }
          var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document2.createElement("div"), div = document2.createElement("div");
          if (!div.style) {
            return;
          }
          div.style.backgroundClip = "content-box";
          div.cloneNode(true).style.backgroundClip = "";
          support.clearCloneStyle = div.style.backgroundClip === "content-box";
          jQuery3.extend(support, {
            boxSizingReliable: function() {
              computeStyleTests();
              return boxSizingReliableVal;
            },
            pixelBoxStyles: function() {
              computeStyleTests();
              return pixelBoxStylesVal;
            },
            pixelPosition: function() {
              computeStyleTests();
              return pixelPositionVal;
            },
            reliableMarginLeft: function() {
              computeStyleTests();
              return reliableMarginLeftVal;
            },
            scrollboxSize: function() {
              computeStyleTests();
              return scrollboxSizeVal;
            },
            reliableTrDimensions: function() {
              var table, tr, trChild, trStyle;
              if (reliableTrDimensionsVal == null) {
                table = document2.createElement("table");
                tr = document2.createElement("tr");
                trChild = document2.createElement("div");
                table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
                tr.style.cssText = "border:1px solid";
                tr.style.height = "1px";
                trChild.style.height = "9px";
                trChild.style.display = "block";
                documentElement.appendChild(table).appendChild(tr).appendChild(trChild);
                trStyle = window2.getComputedStyle(tr);
                reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;
                documentElement.removeChild(table);
              }
              return reliableTrDimensionsVal;
            }
          });
        })();
        function curCSS(elem, name2, computed) {
          var width, minWidth, maxWidth, ret, isCustomProp = rcustomProp.test(name2), style = elem.style;
          computed = computed || getStyles(elem);
          if (computed) {
            ret = computed.getPropertyValue(name2) || computed[name2];
            if (isCustomProp && ret) {
              ret = ret.replace(rtrimCSS, "$1") || void 0;
            }
            if (ret === "" && !isAttached(elem)) {
              ret = jQuery3.style(elem, name2);
            }
            if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name2)) {
              width = style.width;
              minWidth = style.minWidth;
              maxWidth = style.maxWidth;
              style.minWidth = style.maxWidth = style.width = ret;
              ret = computed.width;
              style.width = width;
              style.minWidth = minWidth;
              style.maxWidth = maxWidth;
            }
          }
          return ret !== void 0 ? ret + "" : ret;
        }
        function addGetHookIf(conditionFn, hookFn) {
          return {
            get: function() {
              if (conditionFn()) {
                delete this.get;
                return;
              }
              return (this.get = hookFn).apply(this, arguments);
            }
          };
        }
        var cssPrefixes = ["Webkit", "Moz", "ms"], emptyStyle = document2.createElement("div").style, vendorProps = {};
        function vendorPropName(name2) {
          var capName = name2[0].toUpperCase() + name2.slice(1), i2 = cssPrefixes.length;
          while (i2--) {
            name2 = cssPrefixes[i2] + capName;
            if (name2 in emptyStyle) {
              return name2;
            }
          }
        }
        function finalPropName(name2) {
          var final = jQuery3.cssProps[name2] || vendorProps[name2];
          if (final) {
            return final;
          }
          if (name2 in emptyStyle) {
            return name2;
          }
          return vendorProps[name2] = vendorPropName(name2) || name2;
        }
        var rdisplayswap = /^(none|table(?!-c[ea]).+)/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = {
          letterSpacing: "0",
          fontWeight: "400"
        };
        function setPositiveNumber(_elem, value2, subtract) {
          var matches = rcssNum.exec(value2);
          return matches ? Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value2;
        }
        function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {
          var i2 = dimension === "width" ? 1 : 0, extra = 0, delta = 0, marginDelta = 0;
          if (box === (isBorderBox ? "border" : "content")) {
            return 0;
          }
          for (; i2 < 4; i2 += 2) {
            if (box === "margin") {
              marginDelta += jQuery3.css(elem, box + cssExpand[i2], true, styles);
            }
            if (!isBorderBox) {
              delta += jQuery3.css(elem, "padding" + cssExpand[i2], true, styles);
              if (box !== "padding") {
                delta += jQuery3.css(elem, "border" + cssExpand[i2] + "Width", true, styles);
              } else {
                extra += jQuery3.css(elem, "border" + cssExpand[i2] + "Width", true, styles);
              }
            } else {
              if (box === "content") {
                delta -= jQuery3.css(elem, "padding" + cssExpand[i2], true, styles);
              }
              if (box !== "margin") {
                delta -= jQuery3.css(elem, "border" + cssExpand[i2] + "Width", true, styles);
              }
            }
          }
          if (!isBorderBox && computedVal >= 0) {
            delta += Math.max(0, Math.ceil(
              elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5
            )) || 0;
          }
          return delta + marginDelta;
        }
        function getWidthOrHeight(elem, dimension, extra) {
          var styles = getStyles(elem), boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery3.css(elem, "boxSizing", false, styles) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS(elem, dimension, styles), offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1);
          if (rnumnonpx.test(val)) {
            if (!extra) {
              return val;
            }
            val = "auto";
          }
          if ((!support.boxSizingReliable() && isBorderBox || !support.reliableTrDimensions() && nodeName(elem, "tr") || val === "auto" || !parseFloat(val) && jQuery3.css(elem, "display", false, styles) === "inline") && elem.getClientRects().length) {
            isBorderBox = jQuery3.css(elem, "boxSizing", false, styles) === "border-box";
            valueIsBorderBox = offsetProp in elem;
            if (valueIsBorderBox) {
              val = elem[offsetProp];
            }
          }
          val = parseFloat(val) || 0;
          return val + boxModelAdjustment(
            elem,
            dimension,
            extra || (isBorderBox ? "border" : "content"),
            valueIsBorderBox,
            styles,
            val
          ) + "px";
        }
        jQuery3.extend({
          cssHooks: {
            opacity: {
              get: function(elem, computed) {
                if (computed) {
                  var ret = curCSS(elem, "opacity");
                  return ret === "" ? "1" : ret;
                }
              }
            }
          },
          cssNumber: {
            animationIterationCount: true,
            aspectRatio: true,
            borderImageSlice: true,
            columnCount: true,
            flexGrow: true,
            flexShrink: true,
            fontWeight: true,
            gridArea: true,
            gridColumn: true,
            gridColumnEnd: true,
            gridColumnStart: true,
            gridRow: true,
            gridRowEnd: true,
            gridRowStart: true,
            lineHeight: true,
            opacity: true,
            order: true,
            orphans: true,
            scale: true,
            widows: true,
            zIndex: true,
            zoom: true,
            fillOpacity: true,
            floodOpacity: true,
            stopOpacity: true,
            strokeMiterlimit: true,
            strokeOpacity: true
          },
          cssProps: {},
          style: function(elem, name2, value2, extra) {
            if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
              return;
            }
            var ret, type2, hooks, origName = camelCase(name2), isCustomProp = rcustomProp.test(name2), style = elem.style;
            if (!isCustomProp) {
              name2 = finalPropName(origName);
            }
            hooks = jQuery3.cssHooks[name2] || jQuery3.cssHooks[origName];
            if (value2 !== void 0) {
              type2 = typeof value2;
              if (type2 === "string" && (ret = rcssNum.exec(value2)) && ret[1]) {
                value2 = adjustCSS(elem, name2, ret);
                type2 = "number";
              }
              if (value2 == null || value2 !== value2) {
                return;
              }
              if (type2 === "number" && !isCustomProp) {
                value2 += ret && ret[3] || (jQuery3.cssNumber[origName] ? "" : "px");
              }
              if (!support.clearCloneStyle && value2 === "" && name2.indexOf("background") === 0) {
                style[name2] = "inherit";
              }
              if (!hooks || !("set" in hooks) || (value2 = hooks.set(elem, value2, extra)) !== void 0) {
                if (isCustomProp) {
                  style.setProperty(name2, value2);
                } else {
                  style[name2] = value2;
                }
              }
            } else {
              if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== void 0) {
                return ret;
              }
              return style[name2];
            }
          },
          css: function(elem, name2, extra, styles) {
            var val, num, hooks, origName = camelCase(name2), isCustomProp = rcustomProp.test(name2);
            if (!isCustomProp) {
              name2 = finalPropName(origName);
            }
            hooks = jQuery3.cssHooks[name2] || jQuery3.cssHooks[origName];
            if (hooks && "get" in hooks) {
              val = hooks.get(elem, true, extra);
            }
            if (val === void 0) {
              val = curCSS(elem, name2, styles);
            }
            if (val === "normal" && name2 in cssNormalTransform) {
              val = cssNormalTransform[name2];
            }
            if (extra === "" || extra) {
              num = parseFloat(val);
              return extra === true || isFinite(num) ? num || 0 : val;
            }
            return val;
          }
        });
        jQuery3.each(["height", "width"], function(_i, dimension) {
          jQuery3.cssHooks[dimension] = {
            get: function(elem, computed, extra) {
              if (computed) {
                return rdisplayswap.test(jQuery3.css(elem, "display")) && (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function() {
                  return getWidthOrHeight(elem, dimension, extra);
                }) : getWidthOrHeight(elem, dimension, extra);
              }
            },
            set: function(elem, value2, extra) {
              var matches, styles = getStyles(elem), scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery3.css(elem, "boxSizing", false, styles) === "border-box", subtract = extra ? boxModelAdjustment(
                elem,
                dimension,
                extra,
                isBorderBox,
                styles
              ) : 0;
              if (isBorderBox && scrollboxSizeBuggy) {
                subtract -= Math.ceil(
                  elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5
                );
              }
              if (subtract && (matches = rcssNum.exec(value2)) && (matches[3] || "px") !== "px") {
                elem.style[dimension] = value2;
                value2 = jQuery3.css(elem, dimension);
              }
              return setPositiveNumber(elem, value2, subtract);
            }
          };
        });
        jQuery3.cssHooks.marginLeft = addGetHookIf(
          support.reliableMarginLeft,
          function(elem, computed) {
            if (computed) {
              return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function() {
                return elem.getBoundingClientRect().left;
              })) + "px";
            }
          }
        );
        jQuery3.each({
          margin: "",
          padding: "",
          border: "Width"
        }, function(prefix, suffix) {
          jQuery3.cssHooks[prefix + suffix] = {
            expand: function(value2) {
              var i2 = 0, expanded = {}, parts2 = typeof value2 === "string" ? value2.split(" ") : [value2];
              for (; i2 < 4; i2++) {
                expanded[prefix + cssExpand[i2] + suffix] = parts2[i2] || parts2[i2 - 2] || parts2[0];
              }
              return expanded;
            }
          };
          if (prefix !== "margin") {
            jQuery3.cssHooks[prefix + suffix].set = setPositiveNumber;
          }
        });
        jQuery3.fn.extend({
          css: function(name2, value2) {
            return access(this, function(elem, name3, value3) {
              var styles, len, map2 = {}, i2 = 0;
              if (Array.isArray(name3)) {
                styles = getStyles(elem);
                len = name3.length;
                for (; i2 < len; i2++) {
                  map2[name3[i2]] = jQuery3.css(elem, name3[i2], false, styles);
                }
                return map2;
              }
              return value3 !== void 0 ? jQuery3.style(elem, name3, value3) : jQuery3.css(elem, name3);
            }, name2, value2, arguments.length > 1);
          }
        });
        function Tween(elem, options, prop, end, easing) {
          return new Tween.prototype.init(elem, options, prop, end, easing);
        }
        jQuery3.Tween = Tween;
        Tween.prototype = {
          constructor: Tween,
          init: function(elem, options, prop, end, easing, unit) {
            this.elem = elem;
            this.prop = prop;
            this.easing = easing || jQuery3.easing._default;
            this.options = options;
            this.start = this.now = this.cur();
            this.end = end;
            this.unit = unit || (jQuery3.cssNumber[prop] ? "" : "px");
          },
          cur: function() {
            var hooks = Tween.propHooks[this.prop];
            return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
          },
          run: function(percent) {
            var eased, hooks = Tween.propHooks[this.prop];
            if (this.options.duration) {
              this.pos = eased = jQuery3.easing[this.easing](
                percent,
                this.options.duration * percent,
                0,
                1,
                this.options.duration
              );
            } else {
              this.pos = eased = percent;
            }
            this.now = (this.end - this.start) * eased + this.start;
            if (this.options.step) {
              this.options.step.call(this.elem, this.now, this);
            }
            if (hooks && hooks.set) {
              hooks.set(this);
            } else {
              Tween.propHooks._default.set(this);
            }
            return this;
          }
        };
        Tween.prototype.init.prototype = Tween.prototype;
        Tween.propHooks = {
          _default: {
            get: function(tween) {
              var result;
              if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
                return tween.elem[tween.prop];
              }
              result = jQuery3.css(tween.elem, tween.prop, "");
              return !result || result === "auto" ? 0 : result;
            },
            set: function(tween) {
              if (jQuery3.fx.step[tween.prop]) {
                jQuery3.fx.step[tween.prop](tween);
              } else if (tween.elem.nodeType === 1 && (jQuery3.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {
                jQuery3.style(tween.elem, tween.prop, tween.now + tween.unit);
              } else {
                tween.elem[tween.prop] = tween.now;
              }
            }
          }
        };
        Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
          set: function(tween) {
            if (tween.elem.nodeType && tween.elem.parentNode) {
              tween.elem[tween.prop] = tween.now;
            }
          }
        };
        jQuery3.easing = {
          linear: function(p) {
            return p;
          },
          swing: function(p) {
            return 0.5 - Math.cos(p * Math.PI) / 2;
          },
          _default: "swing"
        };
        jQuery3.fx = Tween.prototype.init;
        jQuery3.fx.step = {};
        var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/;
        function schedule() {
          if (inProgress) {
            if (document2.hidden === false && window2.requestAnimationFrame) {
              window2.requestAnimationFrame(schedule);
            } else {
              window2.setTimeout(schedule, jQuery3.fx.interval);
            }
            jQuery3.fx.tick();
          }
        }
        function createFxNow() {
          window2.setTimeout(function() {
            fxNow = void 0;
          });
          return fxNow = Date.now();
        }
        function genFx(type2, includeWidth) {
          var which, i2 = 0, attrs = { height: type2 };
          includeWidth = includeWidth ? 1 : 0;
          for (; i2 < 4; i2 += 2 - includeWidth) {
            which = cssExpand[i2];
            attrs["margin" + which] = attrs["padding" + which] = type2;
          }
          if (includeWidth) {
            attrs.opacity = attrs.width = type2;
          }
          return attrs;
        }
        function createTween(value2, prop, animation) {
          var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]), index = 0, length2 = collection.length;
          for (; index < length2; index++) {
            if (tween = collection[index].call(animation, prop, value2)) {
              return tween;
            }
          }
        }
        function defaultPrefilter(elem, props, opts) {
          var prop, value2, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree(elem), dataShow = dataPriv.get(elem, "fxshow");
          if (!opts.queue) {
            hooks = jQuery3._queueHooks(elem, "fx");
            if (hooks.unqueued == null) {
              hooks.unqueued = 0;
              oldfire = hooks.empty.fire;
              hooks.empty.fire = function() {
                if (!hooks.unqueued) {
                  oldfire();
                }
              };
            }
            hooks.unqueued++;
            anim.always(function() {
              anim.always(function() {
                hooks.unqueued--;
                if (!jQuery3.queue(elem, "fx").length) {
                  hooks.empty.fire();
                }
              });
            });
          }
          for (prop in props) {
            value2 = props[prop];
            if (rfxtypes.test(value2)) {
              delete props[prop];
              toggle = toggle || value2 === "toggle";
              if (value2 === (hidden ? "hide" : "show")) {
                if (value2 === "show" && dataShow && dataShow[prop] !== void 0) {
                  hidden = true;
                } else {
                  continue;
                }
              }
              orig[prop] = dataShow && dataShow[prop] || jQuery3.style(elem, prop);
            }
          }
          propTween = !jQuery3.isEmptyObject(props);
          if (!propTween && jQuery3.isEmptyObject(orig)) {
            return;
          }
          if (isBox && elem.nodeType === 1) {
            opts.overflow = [style.overflow, style.overflowX, style.overflowY];
            restoreDisplay = dataShow && dataShow.display;
            if (restoreDisplay == null) {
              restoreDisplay = dataPriv.get(elem, "display");
            }
            display = jQuery3.css(elem, "display");
            if (display === "none") {
              if (restoreDisplay) {
                display = restoreDisplay;
              } else {
                showHide([elem], true);
                restoreDisplay = elem.style.display || restoreDisplay;
                display = jQuery3.css(elem, "display");
                showHide([elem]);
              }
            }
            if (display === "inline" || display === "inline-block" && restoreDisplay != null) {
              if (jQuery3.css(elem, "float") === "none") {
                if (!propTween) {
                  anim.done(function() {
                    style.display = restoreDisplay;
                  });
                  if (restoreDisplay == null) {
                    display = style.display;
                    restoreDisplay = display === "none" ? "" : display;
                  }
                }
                style.display = "inline-block";
              }
            }
          }
          if (opts.overflow) {
            style.overflow = "hidden";
            anim.always(function() {
              style.overflow = opts.overflow[0];
              style.overflowX = opts.overflow[1];
              style.overflowY = opts.overflow[2];
            });
          }
          propTween = false;
          for (prop in orig) {
            if (!propTween) {
              if (dataShow) {
                if ("hidden" in dataShow) {
                  hidden = dataShow.hidden;
                }
              } else {
                dataShow = dataPriv.access(elem, "fxshow", { display: restoreDisplay });
              }
              if (toggle) {
                dataShow.hidden = !hidden;
              }
              if (hidden) {
                showHide([elem], true);
              }
              anim.done(function() {
                if (!hidden) {
                  showHide([elem]);
                }
                dataPriv.remove(elem, "fxshow");
                for (prop in orig) {
                  jQuery3.style(elem, prop, orig[prop]);
                }
              });
            }
            propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
            if (!(prop in dataShow)) {
              dataShow[prop] = propTween.start;
              if (hidden) {
                propTween.end = propTween.start;
                propTween.start = 0;
              }
            }
          }
        }
        function propFilter(props, specialEasing) {
          var index, name2, easing, value2, hooks;
          for (index in props) {
            name2 = camelCase(index);
            easing = specialEasing[name2];
            value2 = props[index];
            if (Array.isArray(value2)) {
              easing = value2[1];
              value2 = props[index] = value2[0];
            }
            if (index !== name2) {
              props[name2] = value2;
              delete props[index];
            }
            hooks = jQuery3.cssHooks[name2];
            if (hooks && "expand" in hooks) {
              value2 = hooks.expand(value2);
              delete props[name2];
              for (index in value2) {
                if (!(index in props)) {
                  props[index] = value2[index];
                  specialEasing[index] = easing;
                }
              }
            } else {
              specialEasing[name2] = easing;
            }
          }
        }
        function Animation(elem, properties, options) {
          var result, stopped, index = 0, length2 = Animation.prefilters.length, deferred = jQuery3.Deferred().always(function() {
            delete tick.elem;
          }), tick = function() {
            if (stopped) {
              return false;
            }
            var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index2 = 0, length3 = animation.tweens.length;
            for (; index2 < length3; index2++) {
              animation.tweens[index2].run(percent);
            }
            deferred.notifyWith(elem, [animation, percent, remaining]);
            if (percent < 1 && length3) {
              return remaining;
            }
            if (!length3) {
              deferred.notifyWith(elem, [animation, 1, 0]);
            }
            deferred.resolveWith(elem, [animation]);
            return false;
          }, animation = deferred.promise({
            elem,
            props: jQuery3.extend({}, properties),
            opts: jQuery3.extend(true, {
              specialEasing: {},
              easing: jQuery3.easing._default
            }, options),
            originalProperties: properties,
            originalOptions: options,
            startTime: fxNow || createFxNow(),
            duration: options.duration,
            tweens: [],
            createTween: function(prop, end) {
              var tween = jQuery3.Tween(
                elem,
                animation.opts,
                prop,
                end,
                animation.opts.specialEasing[prop] || animation.opts.easing
              );
              animation.tweens.push(tween);
              return tween;
            },
            stop: function(gotoEnd) {
              var index2 = 0, length3 = gotoEnd ? animation.tweens.length : 0;
              if (stopped) {
                return this;
              }
              stopped = true;
              for (; index2 < length3; index2++) {
                animation.tweens[index2].run(1);
              }
              if (gotoEnd) {
                deferred.notifyWith(elem, [animation, 1, 0]);
                deferred.resolveWith(elem, [animation, gotoEnd]);
              } else {
                deferred.rejectWith(elem, [animation, gotoEnd]);
              }
              return this;
            }
          }), props = animation.props;
          propFilter(props, animation.opts.specialEasing);
          for (; index < length2; index++) {
            result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
            if (result) {
              if (isFunction(result.stop)) {
                jQuery3._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);
              }
              return result;
            }
          }
          jQuery3.map(props, createTween, animation);
          if (isFunction(animation.opts.start)) {
            animation.opts.start.call(elem, animation);
          }
          animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
          jQuery3.fx.timer(
            jQuery3.extend(tick, {
              elem,
              anim: animation,
              queue: animation.opts.queue
            })
          );
          return animation;
        }
        jQuery3.Animation = jQuery3.extend(Animation, {
          tweeners: {
            "*": [function(prop, value2) {
              var tween = this.createTween(prop, value2);
              adjustCSS(tween.elem, prop, rcssNum.exec(value2), tween);
              return tween;
            }]
          },
          tweener: function(props, callback) {
            if (isFunction(props)) {
              callback = props;
              props = ["*"];
            } else {
              props = props.match(rnothtmlwhite);
            }
            var prop, index = 0, length2 = props.length;
            for (; index < length2; index++) {
              prop = props[index];
              Animation.tweeners[prop] = Animation.tweeners[prop] || [];
              Animation.tweeners[prop].unshift(callback);
            }
          },
          prefilters: [defaultPrefilter],
          prefilter: function(callback, prepend) {
            if (prepend) {
              Animation.prefilters.unshift(callback);
            } else {
              Animation.prefilters.push(callback);
            }
          }
        });
        jQuery3.speed = function(speed, easing, fn) {
          var opt = speed && typeof speed === "object" ? jQuery3.extend({}, speed) : {
            complete: fn || !fn && easing || isFunction(speed) && speed,
            duration: speed,
            easing: fn && easing || easing && !isFunction(easing) && easing
          };
          if (jQuery3.fx.off) {
            opt.duration = 0;
          } else {
            if (typeof opt.duration !== "number") {
              if (opt.duration in jQuery3.fx.speeds) {
                opt.duration = jQuery3.fx.speeds[opt.duration];
              } else {
                opt.duration = jQuery3.fx.speeds._default;
              }
            }
          }
          if (opt.queue == null || opt.queue === true) {
            opt.queue = "fx";
          }
          opt.old = opt.complete;
          opt.complete = function() {
            if (isFunction(opt.old)) {
              opt.old.call(this);
            }
            if (opt.queue) {
              jQuery3.dequeue(this, opt.queue);
            }
          };
          return opt;
        };
        jQuery3.fn.extend({
          fadeTo: function(speed, to, easing, callback) {
            return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ opacity: to }, speed, easing, callback);
          },
          animate: function(prop, speed, easing, callback) {
            var empty2 = jQuery3.isEmptyObject(prop), optall = jQuery3.speed(speed, easing, callback), doAnimation = function() {
              var anim = Animation(this, jQuery3.extend({}, prop), optall);
              if (empty2 || dataPriv.get(this, "finish")) {
                anim.stop(true);
              }
            };
            doAnimation.finish = doAnimation;
            return empty2 || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
          },
          stop: function(type2, clearQueue, gotoEnd) {
            var stopQueue = function(hooks) {
              var stop = hooks.stop;
              delete hooks.stop;
              stop(gotoEnd);
            };
            if (typeof type2 !== "string") {
              gotoEnd = clearQueue;
              clearQueue = type2;
              type2 = void 0;
            }
            if (clearQueue) {
              this.queue(type2 || "fx", []);
            }
            return this.each(function() {
              var dequeue = true, index = type2 != null && type2 + "queueHooks", timers = jQuery3.timers, data = dataPriv.get(this);
              if (index) {
                if (data[index] && data[index].stop) {
                  stopQueue(data[index]);
                }
              } else {
                for (index in data) {
                  if (data[index] && data[index].stop && rrun.test(index)) {
                    stopQueue(data[index]);
                  }
                }
              }
              for (index = timers.length; index--; ) {
                if (timers[index].elem === this && (type2 == null || timers[index].queue === type2)) {
                  timers[index].anim.stop(gotoEnd);
                  dequeue = false;
                  timers.splice(index, 1);
                }
              }
              if (dequeue || !gotoEnd) {
                jQuery3.dequeue(this, type2);
              }
            });
          },
          finish: function(type2) {
            if (type2 !== false) {
              type2 = type2 || "fx";
            }
            return this.each(function() {
              var index, data = dataPriv.get(this), queue = data[type2 + "queue"], hooks = data[type2 + "queueHooks"], timers = jQuery3.timers, length2 = queue ? queue.length : 0;
              data.finish = true;
              jQuery3.queue(this, type2, []);
              if (hooks && hooks.stop) {
                hooks.stop.call(this, true);
              }
              for (index = timers.length; index--; ) {
                if (timers[index].elem === this && timers[index].queue === type2) {
                  timers[index].anim.stop(true);
                  timers.splice(index, 1);
                }
              }
              for (index = 0; index < length2; index++) {
                if (queue[index] && queue[index].finish) {
                  queue[index].finish.call(this);
                }
              }
              delete data.finish;
            });
          }
        });
        jQuery3.each(["toggle", "show", "hide"], function(_i, name2) {
          var cssFn = jQuery3.fn[name2];
          jQuery3.fn[name2] = function(speed, easing, callback) {
            return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name2, true), speed, easing, callback);
          };
        });
        jQuery3.each({
          slideDown: genFx("show"),
          slideUp: genFx("hide"),
          slideToggle: genFx("toggle"),
          fadeIn: { opacity: "show" },
          fadeOut: { opacity: "hide" },
          fadeToggle: { opacity: "toggle" }
        }, function(name2, props) {
          jQuery3.fn[name2] = function(speed, easing, callback) {
            return this.animate(props, speed, easing, callback);
          };
        });
        jQuery3.timers = [];
        jQuery3.fx.tick = function() {
          var timer, i2 = 0, timers = jQuery3.timers;
          fxNow = Date.now();
          for (; i2 < timers.length; i2++) {
            timer = timers[i2];
            if (!timer() && timers[i2] === timer) {
              timers.splice(i2--, 1);
            }
          }
          if (!timers.length) {
            jQuery3.fx.stop();
          }
          fxNow = void 0;
        };
        jQuery3.fx.timer = function(timer) {
          jQuery3.timers.push(timer);
          jQuery3.fx.start();
        };
        jQuery3.fx.interval = 13;
        jQuery3.fx.start = function() {
          if (inProgress) {
            return;
          }
          inProgress = true;
          schedule();
        };
        jQuery3.fx.stop = function() {
          inProgress = null;
        };
        jQuery3.fx.speeds = {
          slow: 600,
          fast: 200,
          _default: 400
        };
        jQuery3.fn.delay = function(time, type2) {
          time = jQuery3.fx ? jQuery3.fx.speeds[time] || time : time;
          type2 = type2 || "fx";
          return this.queue(type2, function(next, hooks) {
            var timeout = window2.setTimeout(next, time);
            hooks.stop = function() {
              window2.clearTimeout(timeout);
            };
          });
        };
        (function() {
          var input = document2.createElement("input"), select = document2.createElement("select"), opt = select.appendChild(document2.createElement("option"));
          input.type = "checkbox";
          support.checkOn = input.value !== "";
          support.optSelected = opt.selected;
          input = document2.createElement("input");
          input.value = "t";
          input.type = "radio";
          support.radioValue = input.value === "t";
        })();
        var boolHook, attrHandle = jQuery3.expr.attrHandle;
        jQuery3.fn.extend({
          attr: function(name2, value2) {
            return access(this, jQuery3.attr, name2, value2, arguments.length > 1);
          },
          removeAttr: function(name2) {
            return this.each(function() {
              jQuery3.removeAttr(this, name2);
            });
          }
        });
        jQuery3.extend({
          attr: function(elem, name2, value2) {
            var ret, hooks, nType = elem.nodeType;
            if (nType === 3 || nType === 8 || nType === 2) {
              return;
            }
            if (typeof elem.getAttribute === "undefined") {
              return jQuery3.prop(elem, name2, value2);
            }
            if (nType !== 1 || !jQuery3.isXMLDoc(elem)) {
              hooks = jQuery3.attrHooks[name2.toLowerCase()] || (jQuery3.expr.match.bool.test(name2) ? boolHook : void 0);
            }
            if (value2 !== void 0) {
              if (value2 === null) {
                jQuery3.removeAttr(elem, name2);
                return;
              }
              if (hooks && "set" in hooks && (ret = hooks.set(elem, value2, name2)) !== void 0) {
                return ret;
              }
              elem.setAttribute(name2, value2 + "");
              return value2;
            }
            if (hooks && "get" in hooks && (ret = hooks.get(elem, name2)) !== null) {
              return ret;
            }
            ret = jQuery3.find.attr(elem, name2);
            return ret == null ? void 0 : ret;
          },
          attrHooks: {
            type: {
              set: function(elem, value2) {
                if (!support.radioValue && value2 === "radio" && nodeName(elem, "input")) {
                  var val = elem.value;
                  elem.setAttribute("type", value2);
                  if (val) {
                    elem.value = val;
                  }
                  return value2;
                }
              }
            }
          },
          removeAttr: function(elem, value2) {
            var name2, i2 = 0, attrNames = value2 && value2.match(rnothtmlwhite);
            if (attrNames && elem.nodeType === 1) {
              while (name2 = attrNames[i2++]) {
                elem.removeAttribute(name2);
              }
            }
          }
        });
        boolHook = {
          set: function(elem, value2, name2) {
            if (value2 === false) {
              jQuery3.removeAttr(elem, name2);
            } else {
              elem.setAttribute(name2, name2);
            }
            return name2;
          }
        };
        jQuery3.each(jQuery3.expr.match.bool.source.match(/\w+/g), function(_i, name2) {
          var getter = attrHandle[name2] || jQuery3.find.attr;
          attrHandle[name2] = function(elem, name3, isXML) {
            var ret, handle, lowercaseName = name3.toLowerCase();
            if (!isXML) {
              handle = attrHandle[lowercaseName];
              attrHandle[lowercaseName] = ret;
              ret = getter(elem, name3, isXML) != null ? lowercaseName : null;
              attrHandle[lowercaseName] = handle;
            }
            return ret;
          };
        });
        var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i;
        jQuery3.fn.extend({
          prop: function(name2, value2) {
            return access(this, jQuery3.prop, name2, value2, arguments.length > 1);
          },
          removeProp: function(name2) {
            return this.each(function() {
              delete this[jQuery3.propFix[name2] || name2];
            });
          }
        });
        jQuery3.extend({
          prop: function(elem, name2, value2) {
            var ret, hooks, nType = elem.nodeType;
            if (nType === 3 || nType === 8 || nType === 2) {
              return;
            }
            if (nType !== 1 || !jQuery3.isXMLDoc(elem)) {
              name2 = jQuery3.propFix[name2] || name2;
              hooks = jQuery3.propHooks[name2];
            }
            if (value2 !== void 0) {
              if (hooks && "set" in hooks && (ret = hooks.set(elem, value2, name2)) !== void 0) {
                return ret;
              }
              return elem[name2] = value2;
            }
            if (hooks && "get" in hooks && (ret = hooks.get(elem, name2)) !== null) {
              return ret;
            }
            return elem[name2];
          },
          propHooks: {
            tabIndex: {
              get: function(elem) {
                var tabindex = jQuery3.find.attr(elem, "tabindex");
                if (tabindex) {
                  return parseInt(tabindex, 10);
                }
                if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {
                  return 0;
                }
                return -1;
              }
            }
          },
          propFix: {
            "for": "htmlFor",
            "class": "className"
          }
        });
        if (!support.optSelected) {
          jQuery3.propHooks.selected = {
            get: function(elem) {
              var parent = elem.parentNode;
              if (parent && parent.parentNode) {
                parent.parentNode.selectedIndex;
              }
              return null;
            },
            set: function(elem) {
              var parent = elem.parentNode;
              if (parent) {
                parent.selectedIndex;
                if (parent.parentNode) {
                  parent.parentNode.selectedIndex;
                }
              }
            }
          };
        }
        jQuery3.each([
          "tabIndex",
          "readOnly",
          "maxLength",
          "cellSpacing",
          "cellPadding",
          "rowSpan",
          "colSpan",
          "useMap",
          "frameBorder",
          "contentEditable"
        ], function() {
          jQuery3.propFix[this.toLowerCase()] = this;
        });
        function stripAndCollapse(value2) {
          var tokens = value2.match(rnothtmlwhite) || [];
          return tokens.join(" ");
        }
        function getClass(elem) {
          return elem.getAttribute && elem.getAttribute("class") || "";
        }
        function classesToArray(value2) {
          if (Array.isArray(value2)) {
            return value2;
          }
          if (typeof value2 === "string") {
            return value2.match(rnothtmlwhite) || [];
          }
          return [];
        }
        jQuery3.fn.extend({
          addClass: function(value2) {
            var classNames, cur, curValue, className, i2, finalValue;
            if (isFunction(value2)) {
              return this.each(function(j) {
                jQuery3(this).addClass(value2.call(this, j, getClass(this)));
              });
            }
            classNames = classesToArray(value2);
            if (classNames.length) {
              return this.each(function() {
                curValue = getClass(this);
                cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
                if (cur) {
                  for (i2 = 0; i2 < classNames.length; i2++) {
                    className = classNames[i2];
                    if (cur.indexOf(" " + className + " ") < 0) {
                      cur += className + " ";
                    }
                  }
                  finalValue = stripAndCollapse(cur);
                  if (curValue !== finalValue) {
                    this.setAttribute("class", finalValue);
                  }
                }
              });
            }
            return this;
          },
          removeClass: function(value2) {
            var classNames, cur, curValue, className, i2, finalValue;
            if (isFunction(value2)) {
              return this.each(function(j) {
                jQuery3(this).removeClass(value2.call(this, j, getClass(this)));
              });
            }
            if (!arguments.length) {
              return this.attr("class", "");
            }
            classNames = classesToArray(value2);
            if (classNames.length) {
              return this.each(function() {
                curValue = getClass(this);
                cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
                if (cur) {
                  for (i2 = 0; i2 < classNames.length; i2++) {
                    className = classNames[i2];
                    while (cur.indexOf(" " + className + " ") > -1) {
                      cur = cur.replace(" " + className + " ", " ");
                    }
                  }
                  finalValue = stripAndCollapse(cur);
                  if (curValue !== finalValue) {
                    this.setAttribute("class", finalValue);
                  }
                }
              });
            }
            return this;
          },
          toggleClass: function(value2, stateVal) {
            var classNames, className, i2, self2, type2 = typeof value2, isValidValue = type2 === "string" || Array.isArray(value2);
            if (isFunction(value2)) {
              return this.each(function(i3) {
                jQuery3(this).toggleClass(
                  value2.call(this, i3, getClass(this), stateVal),
                  stateVal
                );
              });
            }
            if (typeof stateVal === "boolean" && isValidValue) {
              return stateVal ? this.addClass(value2) : this.removeClass(value2);
            }
            classNames = classesToArray(value2);
            return this.each(function() {
              if (isValidValue) {
                self2 = jQuery3(this);
                for (i2 = 0; i2 < classNames.length; i2++) {
                  className = classNames[i2];
                  if (self2.hasClass(className)) {
                    self2.removeClass(className);
                  } else {
                    self2.addClass(className);
                  }
                }
              } else if (value2 === void 0 || type2 === "boolean") {
                className = getClass(this);
                if (className) {
                  dataPriv.set(this, "__className__", className);
                }
                if (this.setAttribute) {
                  this.setAttribute(
                    "class",
                    className || value2 === false ? "" : dataPriv.get(this, "__className__") || ""
                  );
                }
              }
            });
          },
          hasClass: function(selector) {
            var className, elem, i2 = 0;
            className = " " + selector + " ";
            while (elem = this[i2++]) {
              if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) {
                return true;
              }
            }
            return false;
          }
        });
        var rreturn = /\r/g;
        jQuery3.fn.extend({
          val: function(value2) {
            var hooks, ret, valueIsFunction, elem = this[0];
            if (!arguments.length) {
              if (elem) {
                hooks = jQuery3.valHooks[elem.type] || jQuery3.valHooks[elem.nodeName.toLowerCase()];
                if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== void 0) {
                  return ret;
                }
                ret = elem.value;
                if (typeof ret === "string") {
                  return ret.replace(rreturn, "");
                }
                return ret == null ? "" : ret;
              }
              return;
            }
            valueIsFunction = isFunction(value2);
            return this.each(function(i2) {
              var val;
              if (this.nodeType !== 1) {
                return;
              }
              if (valueIsFunction) {
                val = value2.call(this, i2, jQuery3(this).val());
              } else {
                val = value2;
              }
              if (val == null) {
                val = "";
              } else if (typeof val === "number") {
                val += "";
              } else if (Array.isArray(val)) {
                val = jQuery3.map(val, function(value3) {
                  return value3 == null ? "" : value3 + "";
                });
              }
              hooks = jQuery3.valHooks[this.type] || jQuery3.valHooks[this.nodeName.toLowerCase()];
              if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === void 0) {
                this.value = val;
              }
            });
          }
        });
        jQuery3.extend({
          valHooks: {
            option: {
              get: function(elem) {
                var val = jQuery3.find.attr(elem, "value");
                return val != null ? val : stripAndCollapse(jQuery3.text(elem));
              }
            },
            select: {
              get: function(elem) {
                var value2, option, i2, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max = one ? index + 1 : options.length;
                if (index < 0) {
                  i2 = max;
                } else {
                  i2 = one ? index : 0;
                }
                for (; i2 < max; i2++) {
                  option = options[i2];
                  if ((option.selected || i2 === index) && !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) {
                    value2 = jQuery3(option).val();
                    if (one) {
                      return value2;
                    }
                    values.push(value2);
                  }
                }
                return values;
              },
              set: function(elem, value2) {
                var optionSet, option, options = elem.options, values = jQuery3.makeArray(value2), i2 = options.length;
                while (i2--) {
                  option = options[i2];
                  if (option.selected = jQuery3.inArray(jQuery3.valHooks.option.get(option), values) > -1) {
                    optionSet = true;
                  }
                }
                if (!optionSet) {
                  elem.selectedIndex = -1;
                }
                return values;
              }
            }
          }
        });
        jQuery3.each(["radio", "checkbox"], function() {
          jQuery3.valHooks[this] = {
            set: function(elem, value2) {
              if (Array.isArray(value2)) {
                return elem.checked = jQuery3.inArray(jQuery3(elem).val(), value2) > -1;
              }
            }
          };
          if (!support.checkOn) {
            jQuery3.valHooks[this].get = function(elem) {
              return elem.getAttribute("value") === null ? "on" : elem.value;
            };
          }
        });
        var location2 = window2.location;
        var nonce = { guid: Date.now() };
        var rquery = /\?/;
        jQuery3.parseXML = function(data) {
          var xml, parserErrorElem;
          if (!data || typeof data !== "string") {
            return null;
          }
          try {
            xml = new window2.DOMParser().parseFromString(data, "text/xml");
          } catch (e) {
          }
          parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0];
          if (!xml || parserErrorElem) {
            jQuery3.error("Invalid XML: " + (parserErrorElem ? jQuery3.map(parserErrorElem.childNodes, function(el) {
              return el.textContent;
            }).join("\n") : data));
          }
          return xml;
        };
        var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function(e) {
          e.stopPropagation();
        };
        jQuery3.extend(jQuery3.event, {
          trigger: function(event, data, elem, onlyHandlers) {
            var i2, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [elem || document2], type2 = hasOwn.call(event, "type") ? event.type : event, namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
            cur = lastElement = tmp = elem = elem || document2;
            if (elem.nodeType === 3 || elem.nodeType === 8) {
              return;
            }
            if (rfocusMorph.test(type2 + jQuery3.event.triggered)) {
              return;
            }
            if (type2.indexOf(".") > -1) {
              namespaces = type2.split(".");
              type2 = namespaces.shift();
              namespaces.sort();
            }
            ontype = type2.indexOf(":") < 0 && "on" + type2;
            event = event[jQuery3.expando] ? event : new jQuery3.Event(type2, typeof event === "object" && event);
            event.isTrigger = onlyHandlers ? 2 : 3;
            event.namespace = namespaces.join(".");
            event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
            event.result = void 0;
            if (!event.target) {
              event.target = elem;
            }
            data = data == null ? [event] : jQuery3.makeArray(data, [event]);
            special = jQuery3.event.special[type2] || {};
            if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
              return;
            }
            if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {
              bubbleType = special.delegateType || type2;
              if (!rfocusMorph.test(bubbleType + type2)) {
                cur = cur.parentNode;
              }
              for (; cur; cur = cur.parentNode) {
                eventPath.push(cur);
                tmp = cur;
              }
              if (tmp === (elem.ownerDocument || document2)) {
                eventPath.push(tmp.defaultView || tmp.parentWindow || window2);
              }
            }
            i2 = 0;
            while ((cur = eventPath[i2++]) && !event.isPropagationStopped()) {
              lastElement = cur;
              event.type = i2 > 1 ? bubbleType : special.bindType || type2;
              handle = (dataPriv.get(cur, "events") || /* @__PURE__ */ Object.create(null))[event.type] && dataPriv.get(cur, "handle");
              if (handle) {
                handle.apply(cur, data);
              }
              handle = ontype && cur[ontype];
              if (handle && handle.apply && acceptData(cur)) {
                event.result = handle.apply(cur, data);
                if (event.result === false) {
                  event.preventDefault();
                }
              }
            }
            event.type = type2;
            if (!onlyHandlers && !event.isDefaultPrevented()) {
              if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
                if (ontype && isFunction(elem[type2]) && !isWindow(elem)) {
                  tmp = elem[ontype];
                  if (tmp) {
                    elem[ontype] = null;
                  }
                  jQuery3.event.triggered = type2;
                  if (event.isPropagationStopped()) {
                    lastElement.addEventListener(type2, stopPropagationCallback);
                  }
                  elem[type2]();
                  if (event.isPropagationStopped()) {
                    lastElement.removeEventListener(type2, stopPropagationCallback);
                  }
                  jQuery3.event.triggered = void 0;
                  if (tmp) {
                    elem[ontype] = tmp;
                  }
                }
              }
            }
            return event.result;
          },
          simulate: function(type2, elem, event) {
            var e = jQuery3.extend(
              new jQuery3.Event(),
              event,
              {
                type: type2,
                isSimulated: true
              }
            );
            jQuery3.event.trigger(e, null, elem);
          }
        });
        jQuery3.fn.extend({
          trigger: function(type2, data) {
            return this.each(function() {
              jQuery3.event.trigger(type2, data, this);
            });
          },
          triggerHandler: function(type2, data) {
            var elem = this[0];
            if (elem) {
              return jQuery3.event.trigger(type2, data, elem, true);
            }
          }
        });
        var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i;
        function buildParams(prefix, obj, traditional, add) {
          var name2;
          if (Array.isArray(obj)) {
            jQuery3.each(obj, function(i2, v) {
              if (traditional || rbracket.test(prefix)) {
                add(prefix, v);
              } else {
                buildParams(
                  prefix + "[" + (typeof v === "object" && v != null ? i2 : "") + "]",
                  v,
                  traditional,
                  add
                );
              }
            });
          } else if (!traditional && toType(obj) === "object") {
            for (name2 in obj) {
              buildParams(prefix + "[" + name2 + "]", obj[name2], traditional, add);
            }
          } else {
            add(prefix, obj);
          }
        }
        jQuery3.param = function(a, traditional) {
          var prefix, s = [], add = function(key, valueOrFunction) {
            var value2 = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;
            s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value2 == null ? "" : value2);
          };
          if (a == null) {
            return "";
          }
          if (Array.isArray(a) || a.jquery && !jQuery3.isPlainObject(a)) {
            jQuery3.each(a, function() {
              add(this.name, this.value);
            });
          } else {
            for (prefix in a) {
              buildParams(prefix, a[prefix], traditional, add);
            }
          }
          return s.join("&");
        };
        jQuery3.fn.extend({
          serialize: function() {
            return jQuery3.param(this.serializeArray());
          },
          serializeArray: function() {
            return this.map(function() {
              var elements = jQuery3.prop(this, "elements");
              return elements ? jQuery3.makeArray(elements) : this;
            }).filter(function() {
              var type2 = this.type;
              return this.name && !jQuery3(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type2) && (this.checked || !rcheckableType.test(type2));
            }).map(function(_i, elem) {
              var val = jQuery3(this).val();
              if (val == null) {
                return null;
              }
              if (Array.isArray(val)) {
                return jQuery3.map(val, function(val2) {
                  return { name: elem.name, value: val2.replace(rCRLF, "\r\n") };
                });
              }
              return { name: elem.name, value: val.replace(rCRLF, "\r\n") };
            }).get();
          }
        });
        var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, prefilters = {}, transports2 = {}, allTypes = "*/".concat("*"), originAnchor = document2.createElement("a");
        originAnchor.href = location2.href;
        function addToPrefiltersOrTransports(structure) {
          return function(dataTypeExpression, func) {
            if (typeof dataTypeExpression !== "string") {
              func = dataTypeExpression;
              dataTypeExpression = "*";
            }
            var dataType, i2 = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
            if (isFunction(func)) {
              while (dataType = dataTypes[i2++]) {
                if (dataType[0] === "+") {
                  dataType = dataType.slice(1) || "*";
                  (structure[dataType] = structure[dataType] || []).unshift(func);
                } else {
                  (structure[dataType] = structure[dataType] || []).push(func);
                }
              }
            }
          };
        }
        function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
          var inspected = {}, seekingTransport = structure === transports2;
          function inspect(dataType) {
            var selected;
            inspected[dataType] = true;
            jQuery3.each(structure[dataType] || [], function(_, prefilterOrFactory) {
              var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
              if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) {
                options.dataTypes.unshift(dataTypeOrTransport);
                inspect(dataTypeOrTransport);
                return false;
              } else if (seekingTransport) {
                return !(selected = dataTypeOrTransport);
              }
            });
            return selected;
          }
          return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
        }
        function ajaxExtend(target, src) {
          var key, deep, flatOptions = jQuery3.ajaxSettings.flatOptions || {};
          for (key in src) {
            if (src[key] !== void 0) {
              (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
            }
          }
          if (deep) {
            jQuery3.extend(true, target, deep);
          }
          return target;
        }
        function ajaxHandleResponses(s, jqXHR, responses) {
          var ct, type2, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes;
          while (dataTypes[0] === "*") {
            dataTypes.shift();
            if (ct === void 0) {
              ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
            }
          }
          if (ct) {
            for (type2 in contents) {
              if (contents[type2] && contents[type2].test(ct)) {
                dataTypes.unshift(type2);
                break;
              }
            }
          }
          if (dataTypes[0] in responses) {
            finalDataType = dataTypes[0];
          } else {
            for (type2 in responses) {
              if (!dataTypes[0] || s.converters[type2 + " " + dataTypes[0]]) {
                finalDataType = type2;
                break;
              }
              if (!firstDataType) {
                firstDataType = type2;
              }
            }
            finalDataType = finalDataType || firstDataType;
          }
          if (finalDataType) {
            if (finalDataType !== dataTypes[0]) {
              dataTypes.unshift(finalDataType);
            }
            return responses[finalDataType];
          }
        }
        function ajaxConvert(s, response, jqXHR, isSuccess) {
          var conv2, current, conv, tmp, prev2, converters = {}, dataTypes = s.dataTypes.slice();
          if (dataTypes[1]) {
            for (conv in s.converters) {
              converters[conv.toLowerCase()] = s.converters[conv];
            }
          }
          current = dataTypes.shift();
          while (current) {
            if (s.responseFields[current]) {
              jqXHR[s.responseFields[current]] = response;
            }
            if (!prev2 && isSuccess && s.dataFilter) {
              response = s.dataFilter(response, s.dataType);
            }
            prev2 = current;
            current = dataTypes.shift();
            if (current) {
              if (current === "*") {
                current = prev2;
              } else if (prev2 !== "*" && prev2 !== current) {
                conv = converters[prev2 + " " + current] || converters["* " + current];
                if (!conv) {
                  for (conv2 in converters) {
                    tmp = conv2.split(" ");
                    if (tmp[1] === current) {
                      conv = converters[prev2 + " " + tmp[0]] || converters["* " + tmp[0]];
                      if (conv) {
                        if (conv === true) {
                          conv = converters[conv2];
                        } else if (converters[conv2] !== true) {
                          current = tmp[0];
                          dataTypes.unshift(tmp[1]);
                        }
                        break;
                      }
                    }
                  }
                }
                if (conv !== true) {
                  if (conv && s.throws) {
                    response = conv(response);
                  } else {
                    try {
                      response = conv(response);
                    } catch (e) {
                      return {
                        state: "parsererror",
                        error: conv ? e : "No conversion from " + prev2 + " to " + current
                      };
                    }
                  }
                }
              }
            }
          }
          return { state: "success", data: response };
        }
        jQuery3.extend({
          active: 0,
          lastModified: {},
          etag: {},
          ajaxSettings: {
            url: location2.href,
            type: "GET",
            isLocal: rlocalProtocol.test(location2.protocol),
            global: true,
            processData: true,
            async: true,
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            accepts: {
              "*": allTypes,
              text: "text/plain",
              html: "text/html",
              xml: "application/xml, text/xml",
              json: "application/json, text/javascript"
            },
            contents: {
              xml: /\bxml\b/,
              html: /\bhtml/,
              json: /\bjson\b/
            },
            responseFields: {
              xml: "responseXML",
              text: "responseText",
              json: "responseJSON"
            },
            converters: {
              "* text": String,
              "text html": true,
              "text json": JSON.parse,
              "text xml": jQuery3.parseXML
            },
            flatOptions: {
              url: true,
              context: true
            }
          },
          ajaxSetup: function(target, settings) {
            return settings ? ajaxExtend(ajaxExtend(target, jQuery3.ajaxSettings), settings) : ajaxExtend(jQuery3.ajaxSettings, target);
          },
          ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
          ajaxTransport: addToPrefiltersOrTransports(transports2),
          ajax: function(url2, options) {
            if (typeof url2 === "object") {
              options = url2;
              url2 = void 0;
            }
            options = options || {};
            var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed2, fireGlobals, i2, uncached, s = jQuery3.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery3(callbackContext) : jQuery3.event, deferred = jQuery3.Deferred(), completeDeferred = jQuery3.Callbacks("once memory"), statusCode = s.statusCode || {}, requestHeaders = {}, requestHeadersNames = {}, strAbort = "canceled", jqXHR = {
              readyState: 0,
              getResponseHeader: function(key) {
                var match;
                if (completed2) {
                  if (!responseHeaders) {
                    responseHeaders = {};
                    while (match = rheaders.exec(responseHeadersString)) {
                      responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]);
                    }
                  }
                  match = responseHeaders[key.toLowerCase() + " "];
                }
                return match == null ? null : match.join(", ");
              },
              getAllResponseHeaders: function() {
                return completed2 ? responseHeadersString : null;
              },
              setRequestHeader: function(name2, value2) {
                if (completed2 == null) {
                  name2 = requestHeadersNames[name2.toLowerCase()] = requestHeadersNames[name2.toLowerCase()] || name2;
                  requestHeaders[name2] = value2;
                }
                return this;
              },
              overrideMimeType: function(type2) {
                if (completed2 == null) {
                  s.mimeType = type2;
                }
                return this;
              },
              statusCode: function(map2) {
                var code;
                if (map2) {
                  if (completed2) {
                    jqXHR.always(map2[jqXHR.status]);
                  } else {
                    for (code in map2) {
                      statusCode[code] = [statusCode[code], map2[code]];
                    }
                  }
                }
                return this;
              },
              abort: function(statusText) {
                var finalText = statusText || strAbort;
                if (transport) {
                  transport.abort(finalText);
                }
                done(0, finalText);
                return this;
              }
            };
            deferred.promise(jqXHR);
            s.url = ((url2 || s.url || location2.href) + "").replace(rprotocol, location2.protocol + "//");
            s.type = options.method || options.type || s.method || s.type;
            s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""];
            if (s.crossDomain == null) {
              urlAnchor = document2.createElement("a");
              try {
                urlAnchor.href = s.url;
                urlAnchor.href = urlAnchor.href;
                s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host;
              } catch (e) {
                s.crossDomain = true;
              }
            }
            if (s.data && s.processData && typeof s.data !== "string") {
              s.data = jQuery3.param(s.data, s.traditional);
            }
            inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
            if (completed2) {
              return jqXHR;
            }
            fireGlobals = jQuery3.event && s.global;
            if (fireGlobals && jQuery3.active++ === 0) {
              jQuery3.event.trigger("ajaxStart");
            }
            s.type = s.type.toUpperCase();
            s.hasContent = !rnoContent.test(s.type);
            cacheURL = s.url.replace(rhash, "");
            if (!s.hasContent) {
              uncached = s.url.slice(cacheURL.length);
              if (s.data && (s.processData || typeof s.data === "string")) {
                cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data;
                delete s.data;
              }
              if (s.cache === false) {
                cacheURL = cacheURL.replace(rantiCache, "$1");
                uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached;
              }
              s.url = cacheURL + uncached;
            } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) {
              s.data = s.data.replace(r20, "+");
            }
            if (s.ifModified) {
              if (jQuery3.lastModified[cacheURL]) {
                jqXHR.setRequestHeader("If-Modified-Since", jQuery3.lastModified[cacheURL]);
              }
              if (jQuery3.etag[cacheURL]) {
                jqXHR.setRequestHeader("If-None-Match", jQuery3.etag[cacheURL]);
              }
            }
            if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
              jqXHR.setRequestHeader("Content-Type", s.contentType);
            }
            jqXHR.setRequestHeader(
              "Accept",
              s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]
            );
            for (i2 in s.headers) {
              jqXHR.setRequestHeader(i2, s.headers[i2]);
            }
            if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed2)) {
              return jqXHR.abort();
            }
            strAbort = "abort";
            completeDeferred.add(s.complete);
            jqXHR.done(s.success);
            jqXHR.fail(s.error);
            transport = inspectPrefiltersOrTransports(transports2, s, options, jqXHR);
            if (!transport) {
              done(-1, "No Transport");
            } else {
              jqXHR.readyState = 1;
              if (fireGlobals) {
                globalEventContext.trigger("ajaxSend", [jqXHR, s]);
              }
              if (completed2) {
                return jqXHR;
              }
              if (s.async && s.timeout > 0) {
                timeoutTimer = window2.setTimeout(function() {
                  jqXHR.abort("timeout");
                }, s.timeout);
              }
              try {
                completed2 = false;
                transport.send(requestHeaders, done);
              } catch (e) {
                if (completed2) {
                  throw e;
                }
                done(-1, e);
              }
            }
            function done(status, nativeStatusText, responses, headers) {
              var isSuccess, success, error, response, modified, statusText = nativeStatusText;
              if (completed2) {
                return;
              }
              completed2 = true;
              if (timeoutTimer) {
                window2.clearTimeout(timeoutTimer);
              }
              transport = void 0;
              responseHeadersString = headers || "";
              jqXHR.readyState = status > 0 ? 4 : 0;
              isSuccess = status >= 200 && status < 300 || status === 304;
              if (responses) {
                response = ajaxHandleResponses(s, jqXHR, responses);
              }
              if (!isSuccess && jQuery3.inArray("script", s.dataTypes) > -1 && jQuery3.inArray("json", s.dataTypes) < 0) {
                s.converters["text script"] = function() {
                };
              }
              response = ajaxConvert(s, response, jqXHR, isSuccess);
              if (isSuccess) {
                if (s.ifModified) {
                  modified = jqXHR.getResponseHeader("Last-Modified");
                  if (modified) {
                    jQuery3.lastModified[cacheURL] = modified;
                  }
                  modified = jqXHR.getResponseHeader("etag");
                  if (modified) {
                    jQuery3.etag[cacheURL] = modified;
                  }
                }
                if (status === 204 || s.type === "HEAD") {
                  statusText = "nocontent";
                } else if (status === 304) {
                  statusText = "notmodified";
                } else {
                  statusText = response.state;
                  success = response.data;
                  error = response.error;
                  isSuccess = !error;
                }
              } else {
                error = statusText;
                if (status || !statusText) {
                  statusText = "error";
                  if (status < 0) {
                    status = 0;
                  }
                }
              }
              jqXHR.status = status;
              jqXHR.statusText = (nativeStatusText || statusText) + "";
              if (isSuccess) {
                deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
              } else {
                deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
              }
              jqXHR.statusCode(statusCode);
              statusCode = void 0;
              if (fireGlobals) {
                globalEventContext.trigger(
                  isSuccess ? "ajaxSuccess" : "ajaxError",
                  [jqXHR, s, isSuccess ? success : error]
                );
              }
              completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
              if (fireGlobals) {
                globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
                if (!--jQuery3.active) {
                  jQuery3.event.trigger("ajaxStop");
                }
              }
            }
            return jqXHR;
          },
          getJSON: function(url2, data, callback) {
            return jQuery3.get(url2, data, callback, "json");
          },
          getScript: function(url2, callback) {
            return jQuery3.get(url2, void 0, callback, "script");
          }
        });
        jQuery3.each(["get", "post"], function(_i, method) {
          jQuery3[method] = function(url2, data, callback, type2) {
            if (isFunction(data)) {
              type2 = type2 || callback;
              callback = data;
              data = void 0;
            }
            return jQuery3.ajax(jQuery3.extend({
              url: url2,
              type: method,
              dataType: type2,
              data,
              success: callback
            }, jQuery3.isPlainObject(url2) && url2));
          };
        });
        jQuery3.ajaxPrefilter(function(s) {
          var i2;
          for (i2 in s.headers) {
            if (i2.toLowerCase() === "content-type") {
              s.contentType = s.headers[i2] || "";
            }
          }
        });
        jQuery3._evalUrl = function(url2, options, doc) {
          return jQuery3.ajax({
            url: url2,
            type: "GET",
            dataType: "script",
            cache: true,
            async: false,
            global: false,
            converters: {
              "text script": function() {
              }
            },
            dataFilter: function(response) {
              jQuery3.globalEval(response, options, doc);
            }
          });
        };
        jQuery3.fn.extend({
          wrapAll: function(html) {
            var wrap;
            if (this[0]) {
              if (isFunction(html)) {
                html = html.call(this[0]);
              }
              wrap = jQuery3(html, this[0].ownerDocument).eq(0).clone(true);
              if (this[0].parentNode) {
                wrap.insertBefore(this[0]);
              }
              wrap.map(function() {
                var elem = this;
                while (elem.firstElementChild) {
                  elem = elem.firstElementChild;
                }
                return elem;
              }).append(this);
            }
            return this;
          },
          wrapInner: function(html) {
            if (isFunction(html)) {
              return this.each(function(i2) {
                jQuery3(this).wrapInner(html.call(this, i2));
              });
            }
            return this.each(function() {
              var self2 = jQuery3(this), contents = self2.contents();
              if (contents.length) {
                contents.wrapAll(html);
              } else {
                self2.append(html);
              }
            });
          },
          wrap: function(html) {
            var htmlIsFunction = isFunction(html);
            return this.each(function(i2) {
              jQuery3(this).wrapAll(htmlIsFunction ? html.call(this, i2) : html);
            });
          },
          unwrap: function(selector) {
            this.parent(selector).not("body").each(function() {
              jQuery3(this).replaceWith(this.childNodes);
            });
            return this;
          }
        });
        jQuery3.expr.pseudos.hidden = function(elem) {
          return !jQuery3.expr.pseudos.visible(elem);
        };
        jQuery3.expr.pseudos.visible = function(elem) {
          return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
        };
        jQuery3.ajaxSettings.xhr = function() {
          try {
            return new window2.XMLHttpRequest();
          } catch (e) {
          }
        };
        var xhrSuccessStatus = {
          0: 200,
          1223: 204
        }, xhrSupported = jQuery3.ajaxSettings.xhr();
        support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
        support.ajax = xhrSupported = !!xhrSupported;
        jQuery3.ajaxTransport(function(options) {
          var callback, errorCallback;
          if (support.cors || xhrSupported && !options.crossDomain) {
            return {
              send: function(headers, complete) {
                var i2, xhr = options.xhr();
                xhr.open(
                  options.type,
                  options.url,
                  options.async,
                  options.username,
                  options.password
                );
                if (options.xhrFields) {
                  for (i2 in options.xhrFields) {
                    xhr[i2] = options.xhrFields[i2];
                  }
                }
                if (options.mimeType && xhr.overrideMimeType) {
                  xhr.overrideMimeType(options.mimeType);
                }
                if (!options.crossDomain && !headers["X-Requested-With"]) {
                  headers["X-Requested-With"] = "XMLHttpRequest";
                }
                for (i2 in headers) {
                  xhr.setRequestHeader(i2, headers[i2]);
                }
                callback = function(type2) {
                  return function() {
                    if (callback) {
                      callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;
                      if (type2 === "abort") {
                        xhr.abort();
                      } else if (type2 === "error") {
                        if (typeof xhr.status !== "number") {
                          complete(0, "error");
                        } else {
                          complete(
                            xhr.status,
                            xhr.statusText
                          );
                        }
                      } else {
                        complete(
                          xhrSuccessStatus[xhr.status] || xhr.status,
                          xhr.statusText,
                          (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText },
                          xhr.getAllResponseHeaders()
                        );
                      }
                    }
                  };
                };
                xhr.onload = callback();
                errorCallback = xhr.onerror = xhr.ontimeout = callback("error");
                if (xhr.onabort !== void 0) {
                  xhr.onabort = errorCallback;
                } else {
                  xhr.onreadystatechange = function() {
                    if (xhr.readyState === 4) {
                      window2.setTimeout(function() {
                        if (callback) {
                          errorCallback();
                        }
                      });
                    }
                  };
                }
                callback = callback("abort");
                try {
                  xhr.send(options.hasContent && options.data || null);
                } catch (e) {
                  if (callback) {
                    throw e;
                  }
                }
              },
              abort: function() {
                if (callback) {
                  callback();
                }
              }
            };
          }
        });
        jQuery3.ajaxPrefilter(function(s) {
          if (s.crossDomain) {
            s.contents.script = false;
          }
        });
        jQuery3.ajaxSetup({
          accepts: {
            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
          },
          contents: {
            script: /\b(?:java|ecma)script\b/
          },
          converters: {
            "text script": function(text) {
              jQuery3.globalEval(text);
              return text;
            }
          }
        });
        jQuery3.ajaxPrefilter("script", function(s) {
          if (s.cache === void 0) {
            s.cache = false;
          }
          if (s.crossDomain) {
            s.type = "GET";
          }
        });
        jQuery3.ajaxTransport("script", function(s) {
          if (s.crossDomain || s.scriptAttrs) {
            var script, callback;
            return {
              send: function(_, complete) {
                script = jQuery3("<script>").attr(s.scriptAttrs || {}).prop({ charset: s.scriptCharset, src: s.url }).on("load error", callback = function(evt) {
                  script.remove();
                  callback = null;
                  if (evt) {
                    complete(evt.type === "error" ? 404 : 200, evt.type);
                  }
                });
                document2.head.appendChild(script[0]);
              },
              abort: function() {
                if (callback) {
                  callback();
                }
              }
            };
          }
        });
        var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/;
        jQuery3.ajaxSetup({
          jsonp: "callback",
          jsonpCallback: function() {
            var callback = oldCallbacks.pop() || jQuery3.expando + "_" + nonce.guid++;
            this[callback] = true;
            return callback;
          }
        });
        jQuery3.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) {
          var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data");
          if (jsonProp || s.dataTypes[0] === "jsonp") {
            callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;
            if (jsonProp) {
              s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
            } else if (s.jsonp !== false) {
              s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
            }
            s.converters["script json"] = function() {
              if (!responseContainer) {
                jQuery3.error(callbackName + " was not called");
              }
              return responseContainer[0];
            };
            s.dataTypes[0] = "json";
            overwritten = window2[callbackName];
            window2[callbackName] = function() {
              responseContainer = arguments;
            };
            jqXHR.always(function() {
              if (overwritten === void 0) {
                jQuery3(window2).removeProp(callbackName);
              } else {
                window2[callbackName] = overwritten;
              }
              if (s[callbackName]) {
                s.jsonpCallback = originalSettings.jsonpCallback;
                oldCallbacks.push(callbackName);
              }
              if (responseContainer && isFunction(overwritten)) {
                overwritten(responseContainer[0]);
              }
              responseContainer = overwritten = void 0;
            });
            return "script";
          }
        });
        support.createHTMLDocument = function() {
          var body = document2.implementation.createHTMLDocument("").body;
          body.innerHTML = "<form></form><form></form>";
          return body.childNodes.length === 2;
        }();
        jQuery3.parseHTML = function(data, context, keepScripts) {
          if (typeof data !== "string") {
            return [];
          }
          if (typeof context === "boolean") {
            keepScripts = context;
            context = false;
          }
          var base, parsed, scripts;
          if (!context) {
            if (support.createHTMLDocument) {
              context = document2.implementation.createHTMLDocument("");
              base = context.createElement("base");
              base.href = document2.location.href;
              context.head.appendChild(base);
            } else {
              context = document2;
            }
          }
          parsed = rsingleTag.exec(data);
          scripts = !keepScripts && [];
          if (parsed) {
            return [context.createElement(parsed[1])];
          }
          parsed = buildFragment([data], context, scripts);
          if (scripts && scripts.length) {
            jQuery3(scripts).remove();
          }
          return jQuery3.merge([], parsed.childNodes);
        };
        jQuery3.fn.load = function(url2, params, callback) {
          var selector, type2, response, self2 = this, off = url2.indexOf(" ");
          if (off > -1) {
            selector = stripAndCollapse(url2.slice(off));
            url2 = url2.slice(0, off);
          }
          if (isFunction(params)) {
            callback = params;
            params = void 0;
          } else if (params && typeof params === "object") {
            type2 = "POST";
          }
          if (self2.length > 0) {
            jQuery3.ajax({
              url: url2,
              type: type2 || "GET",
              dataType: "html",
              data: params
            }).done(function(responseText) {
              response = arguments;
              self2.html(selector ? jQuery3("<div>").append(jQuery3.parseHTML(responseText)).find(selector) : responseText);
            }).always(callback && function(jqXHR, status) {
              self2.each(function() {
                callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
              });
            });
          }
          return this;
        };
        jQuery3.expr.pseudos.animated = function(elem) {
          return jQuery3.grep(jQuery3.timers, function(fn) {
            return elem === fn.elem;
          }).length;
        };
        jQuery3.offset = {
          setOffset: function(elem, options, i2) {
            var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery3.css(elem, "position"), curElem = jQuery3(elem), props = {};
            if (position === "static") {
              elem.style.position = "relative";
            }
            curOffset = curElem.offset();
            curCSSTop = jQuery3.css(elem, "top");
            curCSSLeft = jQuery3.css(elem, "left");
            calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1;
            if (calculatePosition) {
              curPosition = curElem.position();
              curTop = curPosition.top;
              curLeft = curPosition.left;
            } else {
              curTop = parseFloat(curCSSTop) || 0;
              curLeft = parseFloat(curCSSLeft) || 0;
            }
            if (isFunction(options)) {
              options = options.call(elem, i2, jQuery3.extend({}, curOffset));
            }
            if (options.top != null) {
              props.top = options.top - curOffset.top + curTop;
            }
            if (options.left != null) {
              props.left = options.left - curOffset.left + curLeft;
            }
            if ("using" in options) {
              options.using.call(elem, props);
            } else {
              curElem.css(props);
            }
          }
        };
        jQuery3.fn.extend({
          offset: function(options) {
            if (arguments.length) {
              return options === void 0 ? this : this.each(function(i2) {
                jQuery3.offset.setOffset(this, options, i2);
              });
            }
            var rect, win, elem = this[0];
            if (!elem) {
              return;
            }
            if (!elem.getClientRects().length) {
              return { top: 0, left: 0 };
            }
            rect = elem.getBoundingClientRect();
            win = elem.ownerDocument.defaultView;
            return {
              top: rect.top + win.pageYOffset,
              left: rect.left + win.pageXOffset
            };
          },
          position: function() {
            if (!this[0]) {
              return;
            }
            var offsetParent, offset, doc, elem = this[0], parentOffset = { top: 0, left: 0 };
            if (jQuery3.css(elem, "position") === "fixed") {
              offset = elem.getBoundingClientRect();
            } else {
              offset = this.offset();
              doc = elem.ownerDocument;
              offsetParent = elem.offsetParent || doc.documentElement;
              while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery3.css(offsetParent, "position") === "static") {
                offsetParent = offsetParent.parentNode;
              }
              if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
                parentOffset = jQuery3(offsetParent).offset();
                parentOffset.top += jQuery3.css(offsetParent, "borderTopWidth", true);
                parentOffset.left += jQuery3.css(offsetParent, "borderLeftWidth", true);
              }
            }
            return {
              top: offset.top - parentOffset.top - jQuery3.css(elem, "marginTop", true),
              left: offset.left - parentOffset.left - jQuery3.css(elem, "marginLeft", true)
            };
          },
          offsetParent: function() {
            return this.map(function() {
              var offsetParent = this.offsetParent;
              while (offsetParent && jQuery3.css(offsetParent, "position") === "static") {
                offsetParent = offsetParent.offsetParent;
              }
              return offsetParent || documentElement;
            });
          }
        });
        jQuery3.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop) {
          var top = "pageYOffset" === prop;
          jQuery3.fn[method] = function(val) {
            return access(this, function(elem, method2, val2) {
              var win;
              if (isWindow(elem)) {
                win = elem;
              } else if (elem.nodeType === 9) {
                win = elem.defaultView;
              }
              if (val2 === void 0) {
                return win ? win[prop] : elem[method2];
              }
              if (win) {
                win.scrollTo(
                  !top ? val2 : win.pageXOffset,
                  top ? val2 : win.pageYOffset
                );
              } else {
                elem[method2] = val2;
              }
            }, method, val, arguments.length);
          };
        });
        jQuery3.each(["top", "left"], function(_i, prop) {
          jQuery3.cssHooks[prop] = addGetHookIf(
            support.pixelPosition,
            function(elem, computed) {
              if (computed) {
                computed = curCSS(elem, prop);
                return rnumnonpx.test(computed) ? jQuery3(elem).position()[prop] + "px" : computed;
              }
            }
          );
        });
        jQuery3.each({ Height: "height", Width: "width" }, function(name2, type2) {
          jQuery3.each({
            padding: "inner" + name2,
            content: type2,
            "": "outer" + name2
          }, function(defaultExtra, funcName) {
            jQuery3.fn[funcName] = function(margin, value2) {
              var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), extra = defaultExtra || (margin === true || value2 === true ? "margin" : "border");
              return access(this, function(elem, type3, value3) {
                var doc;
                if (isWindow(elem)) {
                  return funcName.indexOf("outer") === 0 ? elem["inner" + name2] : elem.document.documentElement["client" + name2];
                }
                if (elem.nodeType === 9) {
                  doc = elem.documentElement;
                  return Math.max(
                    elem.body["scroll" + name2],
                    doc["scroll" + name2],
                    elem.body["offset" + name2],
                    doc["offset" + name2],
                    doc["client" + name2]
                  );
                }
                return value3 === void 0 ? jQuery3.css(elem, type3, extra) : jQuery3.style(elem, type3, value3, extra);
              }, type2, chainable ? margin : void 0, chainable);
            };
          });
        });
        jQuery3.each([
          "ajaxStart",
          "ajaxStop",
          "ajaxComplete",
          "ajaxError",
          "ajaxSuccess",
          "ajaxSend"
        ], function(_i, type2) {
          jQuery3.fn[type2] = function(fn) {
            return this.on(type2, fn);
          };
        });
        jQuery3.fn.extend({
          bind: function(types, data, fn) {
            return this.on(types, null, data, fn);
          },
          unbind: function(types, fn) {
            return this.off(types, null, fn);
          },
          delegate: function(selector, types, data, fn) {
            return this.on(types, selector, data, fn);
          },
          undelegate: function(selector, types, fn) {
            return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn);
          },
          hover: function(fnOver, fnOut) {
            return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
          }
        });
        jQuery3.each(
          "blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),
          function(_i, name2) {
            jQuery3.fn[name2] = function(data, fn) {
              return arguments.length > 0 ? this.on(name2, null, data, fn) : this.trigger(name2);
            };
          }
        );
        var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
        jQuery3.proxy = function(fn, context) {
          var tmp, args, proxy;
          if (typeof context === "string") {
            tmp = fn[context];
            context = fn;
            fn = tmp;
          }
          if (!isFunction(fn)) {
            return void 0;
          }
          args = slice.call(arguments, 2);
          proxy = function() {
            return fn.apply(context || this, args.concat(slice.call(arguments)));
          };
          proxy.guid = fn.guid = fn.guid || jQuery3.guid++;
          return proxy;
        };
        jQuery3.holdReady = function(hold) {
          if (hold) {
            jQuery3.readyWait++;
          } else {
            jQuery3.ready(true);
          }
        };
        jQuery3.isArray = Array.isArray;
        jQuery3.parseJSON = JSON.parse;
        jQuery3.nodeName = nodeName;
        jQuery3.isFunction = isFunction;
        jQuery3.isWindow = isWindow;
        jQuery3.camelCase = camelCase;
        jQuery3.type = toType;
        jQuery3.now = Date.now;
        jQuery3.isNumeric = function(obj) {
          var type2 = jQuery3.type(obj);
          return (type2 === "number" || type2 === "string") && !isNaN(obj - parseFloat(obj));
        };
        jQuery3.trim = function(text) {
          return text == null ? "" : (text + "").replace(rtrim, "$1");
        };
        if (typeof define === "function" && define.amd) {
          define("jquery", [], function() {
            return jQuery3;
          });
        }
        var _jQuery = window2.jQuery, _$ = window2.$;
        jQuery3.noConflict = function(deep) {
          if (window2.$ === jQuery3) {
            window2.$ = _$;
          }
          if (deep && window2.jQuery === jQuery3) {
            window2.jQuery = _jQuery;
          }
          return jQuery3;
        };
        if (typeof noGlobal === "undefined") {
          window2.jQuery = window2.$ = jQuery3;
        }
        return jQuery3;
      });
    }
  });

  // node_modules/bootstrap/js/dist/util.js
  var require_util = __commonJS({
    "node_modules/bootstrap/js/dist/util.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery()) : typeof define === "function" && define.amd ? define(["jquery"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Util = factory(global2.jQuery));
      })(exports, function($2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var TRANSITION_END = "transitionend";
        var MAX_UID = 1e6;
        var MILLISECONDS_MULTIPLIER = 1e3;
        function toType(obj) {
          if (obj === null || typeof obj === "undefined") {
            return "" + obj;
          }
          return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
        }
        function getSpecialTransitionEndEvent() {
          return {
            bindType: TRANSITION_END,
            delegateType: TRANSITION_END,
            handle: function handle(event) {
              if ($__default["default"](event.target).is(this)) {
                return event.handleObj.handler.apply(this, arguments);
              }
              return void 0;
            }
          };
        }
        function transitionEndEmulator(duration) {
          var _this = this;
          var called = false;
          $__default["default"](this).one(Util2.TRANSITION_END, function() {
            called = true;
          });
          setTimeout(function() {
            if (!called) {
              Util2.triggerTransitionEnd(_this);
            }
          }, duration);
          return this;
        }
        function setTransitionEndSupport() {
          $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator;
          $__default["default"].event.special[Util2.TRANSITION_END] = getSpecialTransitionEndEvent();
        }
        var Util2 = {
          TRANSITION_END: "bsTransitionEnd",
          getUID: function getUID(prefix) {
            do {
              prefix += ~~(Math.random() * MAX_UID);
            } while (document.getElementById(prefix));
            return prefix;
          },
          getSelectorFromElement: function getSelectorFromElement(element) {
            var selector = element.getAttribute("data-target");
            if (!selector || selector === "#") {
              var hrefAttr = element.getAttribute("href");
              selector = hrefAttr && hrefAttr !== "#" ? hrefAttr.trim() : "";
            }
            try {
              return document.querySelector(selector) ? selector : null;
            } catch (_) {
              return null;
            }
          },
          getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
            if (!element) {
              return 0;
            }
            var transitionDuration = $__default["default"](element).css("transition-duration");
            var transitionDelay = $__default["default"](element).css("transition-delay");
            var floatTransitionDuration = parseFloat(transitionDuration);
            var floatTransitionDelay = parseFloat(transitionDelay);
            if (!floatTransitionDuration && !floatTransitionDelay) {
              return 0;
            }
            transitionDuration = transitionDuration.split(",")[0];
            transitionDelay = transitionDelay.split(",")[0];
            return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
          },
          reflow: function reflow(element) {
            return element.offsetHeight;
          },
          triggerTransitionEnd: function triggerTransitionEnd(element) {
            $__default["default"](element).trigger(TRANSITION_END);
          },
          supportsTransitionEnd: function supportsTransitionEnd() {
            return Boolean(TRANSITION_END);
          },
          isElement: function isElement(obj) {
            return (obj[0] || obj).nodeType;
          },
          typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
            for (var property in configTypes) {
              if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
                var expectedTypes = configTypes[property];
                var value2 = config[property];
                var valueType = value2 && Util2.isElement(value2) ? "element" : toType(value2);
                if (!new RegExp(expectedTypes).test(valueType)) {
                  throw new Error(componentName.toUpperCase() + ": " + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
                }
              }
            }
          },
          findShadowRoot: function findShadowRoot(element) {
            if (!document.documentElement.attachShadow) {
              return null;
            }
            if (typeof element.getRootNode === "function") {
              var root = element.getRootNode();
              return root instanceof ShadowRoot ? root : null;
            }
            if (element instanceof ShadowRoot) {
              return element;
            }
            if (!element.parentNode) {
              return null;
            }
            return Util2.findShadowRoot(element.parentNode);
          },
          jQueryDetection: function jQueryDetection() {
            if (typeof $__default["default"] === "undefined") {
              throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");
            }
            var version = $__default["default"].fn.jquery.split(" ")[0].split(".");
            var minMajor = 1;
            var ltMajor = 2;
            var minMinor = 9;
            var minPatch = 1;
            var maxMajor = 4;
            if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
              throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0");
            }
          }
        };
        Util2.jQueryDetection();
        setTransitionEndSupport();
        return Util2;
      });
    }
  });

  // node_modules/bootstrap/js/dist/alert.js
  var require_alert = __commonJS({
    "node_modules/bootstrap/js/dist/alert.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Alert = factory(global2.jQuery, global2.Util));
      })(exports, function($2, Util2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        var NAME = "alert";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.alert";
        var EVENT_KEY = "." + DATA_KEY;
        var DATA_API_KEY = ".data-api";
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var CLASS_NAME_ALERT = "alert";
        var CLASS_NAME_FADE = "fade";
        var CLASS_NAME_SHOW = "show";
        var EVENT_CLOSE = "close" + EVENT_KEY;
        var EVENT_CLOSED = "closed" + EVENT_KEY;
        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
        var SELECTOR_DISMISS = '[data-dismiss="alert"]';
        var Alert2 = /* @__PURE__ */ function() {
          function Alert3(element) {
            this._element = element;
          }
          var _proto = Alert3.prototype;
          _proto.close = function close(element) {
            var rootElement = this._element;
            if (element) {
              rootElement = this._getRootElement(element);
            }
            var customEvent = this._triggerCloseEvent(rootElement);
            if (customEvent.isDefaultPrevented()) {
              return;
            }
            this._removeElement(rootElement);
          };
          _proto.dispose = function dispose() {
            $__default["default"].removeData(this._element, DATA_KEY);
            this._element = null;
          };
          _proto._getRootElement = function _getRootElement(element) {
            var selector = Util__default["default"].getSelectorFromElement(element);
            var parent = false;
            if (selector) {
              parent = document.querySelector(selector);
            }
            if (!parent) {
              parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0];
            }
            return parent;
          };
          _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
            var closeEvent = $__default["default"].Event(EVENT_CLOSE);
            $__default["default"](element).trigger(closeEvent);
            return closeEvent;
          };
          _proto._removeElement = function _removeElement(element) {
            var _this = this;
            $__default["default"](element).removeClass(CLASS_NAME_SHOW);
            if (!$__default["default"](element).hasClass(CLASS_NAME_FADE)) {
              this._destroyElement(element);
              return;
            }
            var transitionDuration = Util__default["default"].getTransitionDurationFromElement(element);
            $__default["default"](element).one(Util__default["default"].TRANSITION_END, function(event) {
              return _this._destroyElement(element, event);
            }).emulateTransitionEnd(transitionDuration);
          };
          _proto._destroyElement = function _destroyElement(element) {
            $__default["default"](element).detach().trigger(EVENT_CLOSED).remove();
          };
          Alert3._jQueryInterface = function _jQueryInterface(config) {
            return this.each(function() {
              var $element = $__default["default"](this);
              var data = $element.data(DATA_KEY);
              if (!data) {
                data = new Alert3(this);
                $element.data(DATA_KEY, data);
              }
              if (config === "close") {
                data[config](this);
              }
            });
          };
          Alert3._handleDismiss = function _handleDismiss(alertInstance) {
            return function(event) {
              if (event) {
                event.preventDefault();
              }
              alertInstance.close(this);
            };
          };
          _createClass(Alert3, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }]);
          return Alert3;
        }();
        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert2._handleDismiss(new Alert2()));
        $__default["default"].fn[NAME] = Alert2._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Alert2;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Alert2._jQueryInterface;
        };
        return Alert2;
      });
    }
  });

  // node_modules/bootstrap/js/dist/button.js
  var require_button = __commonJS({
    "node_modules/bootstrap/js/dist/button.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery()) : typeof define === "function" && define.amd ? define(["jquery"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Button = factory(global2.jQuery));
      })(exports, function($2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        var NAME = "button";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.button";
        var EVENT_KEY = "." + DATA_KEY;
        var DATA_API_KEY = ".data-api";
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var CLASS_NAME_ACTIVE = "active";
        var CLASS_NAME_BUTTON = "btn";
        var CLASS_NAME_FOCUS = "focus";
        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
        var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY);
        var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
        var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]';
        var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]';
        var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]';
        var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn';
        var SELECTOR_INPUT = 'input:not([type="hidden"])';
        var SELECTOR_ACTIVE = ".active";
        var SELECTOR_BUTTON = ".btn";
        var Button2 = /* @__PURE__ */ function() {
          function Button3(element) {
            this._element = element;
            this.shouldAvoidTriggerChange = false;
          }
          var _proto = Button3.prototype;
          _proto.toggle = function toggle() {
            var triggerChangeEvent = true;
            var addAriaPressed = true;
            var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];
            if (rootElement) {
              var input = this._element.querySelector(SELECTOR_INPUT);
              if (input) {
                if (input.type === "radio") {
                  if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
                    triggerChangeEvent = false;
                  } else {
                    var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);
                    if (activeElement) {
                      $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
                    }
                  }
                }
                if (triggerChangeEvent) {
                  if (input.type === "checkbox" || input.type === "radio") {
                    input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);
                  }
                  if (!this.shouldAvoidTriggerChange) {
                    $__default["default"](input).trigger("change");
                  }
                }
                input.focus();
                addAriaPressed = false;
              }
            }
            if (!(this._element.hasAttribute("disabled") || this._element.classList.contains("disabled"))) {
              if (addAriaPressed) {
                this._element.setAttribute("aria-pressed", !this._element.classList.contains(CLASS_NAME_ACTIVE));
              }
              if (triggerChangeEvent) {
                $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE);
              }
            }
          };
          _proto.dispose = function dispose() {
            $__default["default"].removeData(this._element, DATA_KEY);
            this._element = null;
          };
          Button3._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {
            return this.each(function() {
              var $element = $__default["default"](this);
              var data = $element.data(DATA_KEY);
              if (!data) {
                data = new Button3(this);
                $element.data(DATA_KEY, data);
              }
              data.shouldAvoidTriggerChange = avoidTriggerChange;
              if (config === "toggle") {
                data[config]();
              }
            });
          };
          _createClass(Button3, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }]);
          return Button3;
        }();
        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function(event) {
          var button = event.target;
          var initialButton = button;
          if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) {
            button = $__default["default"](button).closest(SELECTOR_BUTTON)[0];
          }
          if (!button || button.hasAttribute("disabled") || button.classList.contains("disabled")) {
            event.preventDefault();
          } else {
            var inputBtn = button.querySelector(SELECTOR_INPUT);
            if (inputBtn && (inputBtn.hasAttribute("disabled") || inputBtn.classList.contains("disabled"))) {
              event.preventDefault();
              return;
            }
            if (initialButton.tagName === "INPUT" || button.tagName !== "LABEL") {
              Button2._jQueryInterface.call($__default["default"](button), "toggle", initialButton.tagName === "INPUT");
            }
          }
        }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function(event) {
          var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0];
          $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));
        });
        $__default["default"](window).on(EVENT_LOAD_DATA_API, function() {
          var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));
          for (var i2 = 0, len = buttons.length; i2 < len; i2++) {
            var button = buttons[i2];
            var input = button.querySelector(SELECTOR_INPUT);
            if (input.checked || input.hasAttribute("checked")) {
              button.classList.add(CLASS_NAME_ACTIVE);
            } else {
              button.classList.remove(CLASS_NAME_ACTIVE);
            }
          }
          buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
          for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
            var _button = buttons[_i];
            if (_button.getAttribute("aria-pressed") === "true") {
              _button.classList.add(CLASS_NAME_ACTIVE);
            } else {
              _button.classList.remove(CLASS_NAME_ACTIVE);
            }
          }
        });
        $__default["default"].fn[NAME] = Button2._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Button2;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Button2._jQueryInterface;
        };
        return Button2;
      });
    }
  });

  // node_modules/bootstrap/js/dist/carousel.js
  var require_carousel = __commonJS({
    "node_modules/bootstrap/js/dist/carousel.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Carousel = factory(global2.jQuery, global2.Util));
      })(exports, function($2, Util2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        function _extends() {
          _extends = Object.assign ? Object.assign.bind() : function(target) {
            for (var i2 = 1; i2 < arguments.length; i2++) {
              var source = arguments[i2];
              for (var key in source) {
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                  target[key] = source[key];
                }
              }
            }
            return target;
          };
          return _extends.apply(this, arguments);
        }
        var NAME = "carousel";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.carousel";
        var EVENT_KEY = "." + DATA_KEY;
        var DATA_API_KEY = ".data-api";
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var ARROW_LEFT_KEYCODE = 37;
        var ARROW_RIGHT_KEYCODE = 39;
        var TOUCHEVENT_COMPAT_WAIT = 500;
        var SWIPE_THRESHOLD = 40;
        var CLASS_NAME_CAROUSEL = "carousel";
        var CLASS_NAME_ACTIVE = "active";
        var CLASS_NAME_SLIDE = "slide";
        var CLASS_NAME_RIGHT = "carousel-item-right";
        var CLASS_NAME_LEFT = "carousel-item-left";
        var CLASS_NAME_NEXT = "carousel-item-next";
        var CLASS_NAME_PREV = "carousel-item-prev";
        var CLASS_NAME_POINTER_EVENT = "pointer-event";
        var DIRECTION_NEXT = "next";
        var DIRECTION_PREV = "prev";
        var DIRECTION_LEFT = "left";
        var DIRECTION_RIGHT = "right";
        var EVENT_SLIDE = "slide" + EVENT_KEY;
        var EVENT_SLID = "slid" + EVENT_KEY;
        var EVENT_KEYDOWN = "keydown" + EVENT_KEY;
        var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY;
        var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY;
        var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY;
        var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY;
        var EVENT_TOUCHEND = "touchend" + EVENT_KEY;
        var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY;
        var EVENT_POINTERUP = "pointerup" + EVENT_KEY;
        var EVENT_DRAG_START = "dragstart" + EVENT_KEY;
        var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
        var SELECTOR_ACTIVE = ".active";
        var SELECTOR_ACTIVE_ITEM = ".active.carousel-item";
        var SELECTOR_ITEM = ".carousel-item";
        var SELECTOR_ITEM_IMG = ".carousel-item img";
        var SELECTOR_NEXT_PREV = ".carousel-item-next, .carousel-item-prev";
        var SELECTOR_INDICATORS = ".carousel-indicators";
        var SELECTOR_DATA_SLIDE = "[data-slide], [data-slide-to]";
        var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
        var Default = {
          interval: 5e3,
          keyboard: true,
          slide: false,
          pause: "hover",
          wrap: true,
          touch: true
        };
        var DefaultType = {
          interval: "(number|boolean)",
          keyboard: "boolean",
          slide: "(boolean|string)",
          pause: "(string|boolean)",
          wrap: "boolean",
          touch: "boolean"
        };
        var PointerType = {
          TOUCH: "touch",
          PEN: "pen"
        };
        var Carousel2 = /* @__PURE__ */ function() {
          function Carousel3(element, config) {
            this._items = null;
            this._interval = null;
            this._activeElement = null;
            this._isPaused = false;
            this._isSliding = false;
            this.touchTimeout = null;
            this.touchStartX = 0;
            this.touchDeltaX = 0;
            this._config = this._getConfig(config);
            this._element = element;
            this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);
            this._touchSupported = "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0;
            this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
            this._addEventListeners();
          }
          var _proto = Carousel3.prototype;
          _proto.next = function next() {
            if (!this._isSliding) {
              this._slide(DIRECTION_NEXT);
            }
          };
          _proto.nextWhenVisible = function nextWhenVisible() {
            var $element = $__default["default"](this._element);
            if (!document.hidden && $element.is(":visible") && $element.css("visibility") !== "hidden") {
              this.next();
            }
          };
          _proto.prev = function prev2() {
            if (!this._isSliding) {
              this._slide(DIRECTION_PREV);
            }
          };
          _proto.pause = function pause(event) {
            if (!event) {
              this._isPaused = true;
            }
            if (this._element.querySelector(SELECTOR_NEXT_PREV)) {
              Util__default["default"].triggerTransitionEnd(this._element);
              this.cycle(true);
            }
            clearInterval(this._interval);
            this._interval = null;
          };
          _proto.cycle = function cycle(event) {
            if (!event) {
              this._isPaused = false;
            }
            if (this._interval) {
              clearInterval(this._interval);
              this._interval = null;
            }
            if (this._config.interval && !this._isPaused) {
              this._updateInterval();
              this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
            }
          };
          _proto.to = function to(index) {
            var _this = this;
            this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
            var activeIndex = this._getItemIndex(this._activeElement);
            if (index > this._items.length - 1 || index < 0) {
              return;
            }
            if (this._isSliding) {
              $__default["default"](this._element).one(EVENT_SLID, function() {
                return _this.to(index);
              });
              return;
            }
            if (activeIndex === index) {
              this.pause();
              this.cycle();
              return;
            }
            var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
            this._slide(direction, this._items[index]);
          };
          _proto.dispose = function dispose() {
            $__default["default"](this._element).off(EVENT_KEY);
            $__default["default"].removeData(this._element, DATA_KEY);
            this._items = null;
            this._config = null;
            this._element = null;
            this._interval = null;
            this._isPaused = null;
            this._isSliding = null;
            this._activeElement = null;
            this._indicatorsElement = null;
          };
          _proto._getConfig = function _getConfig(config) {
            config = _extends({}, Default, config);
            Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
            return config;
          };
          _proto._handleSwipe = function _handleSwipe() {
            var absDeltax = Math.abs(this.touchDeltaX);
            if (absDeltax <= SWIPE_THRESHOLD) {
              return;
            }
            var direction = absDeltax / this.touchDeltaX;
            this.touchDeltaX = 0;
            if (direction > 0) {
              this.prev();
            }
            if (direction < 0) {
              this.next();
            }
          };
          _proto._addEventListeners = function _addEventListeners() {
            var _this2 = this;
            if (this._config.keyboard) {
              $__default["default"](this._element).on(EVENT_KEYDOWN, function(event) {
                return _this2._keydown(event);
              });
            }
            if (this._config.pause === "hover") {
              $__default["default"](this._element).on(EVENT_MOUSEENTER, function(event) {
                return _this2.pause(event);
              }).on(EVENT_MOUSELEAVE, function(event) {
                return _this2.cycle(event);
              });
            }
            if (this._config.touch) {
              this._addTouchEventListeners();
            }
          };
          _proto._addTouchEventListeners = function _addTouchEventListeners() {
            var _this3 = this;
            if (!this._touchSupported) {
              return;
            }
            var start = function start2(event) {
              if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
                _this3.touchStartX = event.originalEvent.clientX;
              } else if (!_this3._pointerEvent) {
                _this3.touchStartX = event.originalEvent.touches[0].clientX;
              }
            };
            var move = function move2(event) {
              _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;
            };
            var end = function end2(event) {
              if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
                _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
              }
              _this3._handleSwipe();
              if (_this3._config.pause === "hover") {
                _this3.pause();
                if (_this3.touchTimeout) {
                  clearTimeout(_this3.touchTimeout);
                }
                _this3.touchTimeout = setTimeout(function(event2) {
                  return _this3.cycle(event2);
                }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
              }
            };
            $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function(e) {
              return e.preventDefault();
            });
            if (this._pointerEvent) {
              $__default["default"](this._element).on(EVENT_POINTERDOWN, function(event) {
                return start(event);
              });
              $__default["default"](this._element).on(EVENT_POINTERUP, function(event) {
                return end(event);
              });
              this._element.classList.add(CLASS_NAME_POINTER_EVENT);
            } else {
              $__default["default"](this._element).on(EVENT_TOUCHSTART, function(event) {
                return start(event);
              });
              $__default["default"](this._element).on(EVENT_TOUCHMOVE, function(event) {
                return move(event);
              });
              $__default["default"](this._element).on(EVENT_TOUCHEND, function(event) {
                return end(event);
              });
            }
          };
          _proto._keydown = function _keydown(event) {
            if (/input|textarea/i.test(event.target.tagName)) {
              return;
            }
            switch (event.which) {
              case ARROW_LEFT_KEYCODE:
                event.preventDefault();
                this.prev();
                break;
              case ARROW_RIGHT_KEYCODE:
                event.preventDefault();
                this.next();
                break;
            }
          };
          _proto._getItemIndex = function _getItemIndex(element) {
            this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
            return this._items.indexOf(element);
          };
          _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
            var isNextDirection = direction === DIRECTION_NEXT;
            var isPrevDirection = direction === DIRECTION_PREV;
            var activeIndex = this._getItemIndex(activeElement);
            var lastItemIndex = this._items.length - 1;
            var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
            if (isGoingToWrap && !this._config.wrap) {
              return activeElement;
            }
            var delta = direction === DIRECTION_PREV ? -1 : 1;
            var itemIndex = (activeIndex + delta) % this._items.length;
            return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
          };
          _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
            var targetIndex = this._getItemIndex(relatedTarget);
            var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
            var slideEvent = $__default["default"].Event(EVENT_SLIDE, {
              relatedTarget,
              direction: eventDirectionName,
              from: fromIndex,
              to: targetIndex
            });
            $__default["default"](this._element).trigger(slideEvent);
            return slideEvent;
          };
          _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
            if (this._indicatorsElement) {
              var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE));
              $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE);
              var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
              if (nextIndicator) {
                $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE);
              }
            }
          };
          _proto._updateInterval = function _updateInterval() {
            var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);
            if (!element) {
              return;
            }
            var elementInterval = parseInt(element.getAttribute("data-interval"), 10);
            if (elementInterval) {
              this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
              this._config.interval = elementInterval;
            } else {
              this._config.interval = this._config.defaultInterval || this._config.interval;
            }
          };
          _proto._slide = function _slide(direction, element) {
            var _this4 = this;
            var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
            var activeElementIndex = this._getItemIndex(activeElement);
            var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
            var nextElementIndex = this._getItemIndex(nextElement);
            var isCycling = Boolean(this._interval);
            var directionalClassName;
            var orderClassName;
            var eventDirectionName;
            if (direction === DIRECTION_NEXT) {
              directionalClassName = CLASS_NAME_LEFT;
              orderClassName = CLASS_NAME_NEXT;
              eventDirectionName = DIRECTION_LEFT;
            } else {
              directionalClassName = CLASS_NAME_RIGHT;
              orderClassName = CLASS_NAME_PREV;
              eventDirectionName = DIRECTION_RIGHT;
            }
            if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE)) {
              this._isSliding = false;
              return;
            }
            var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
            if (slideEvent.isDefaultPrevented()) {
              return;
            }
            if (!activeElement || !nextElement) {
              return;
            }
            this._isSliding = true;
            if (isCycling) {
              this.pause();
            }
            this._setActiveIndicatorElement(nextElement);
            this._activeElement = nextElement;
            var slidEvent = $__default["default"].Event(EVENT_SLID, {
              relatedTarget: nextElement,
              direction: eventDirectionName,
              from: activeElementIndex,
              to: nextElementIndex
            });
            if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) {
              $__default["default"](nextElement).addClass(orderClassName);
              Util__default["default"].reflow(nextElement);
              $__default["default"](activeElement).addClass(directionalClassName);
              $__default["default"](nextElement).addClass(directionalClassName);
              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(activeElement);
              $__default["default"](activeElement).one(Util__default["default"].TRANSITION_END, function() {
                $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE);
                $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE + " " + orderClassName + " " + directionalClassName);
                _this4._isSliding = false;
                setTimeout(function() {
                  return $__default["default"](_this4._element).trigger(slidEvent);
                }, 0);
              }).emulateTransitionEnd(transitionDuration);
            } else {
              $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
              $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE);
              this._isSliding = false;
              $__default["default"](this._element).trigger(slidEvent);
            }
            if (isCycling) {
              this.cycle();
            }
          };
          Carousel3._jQueryInterface = function _jQueryInterface(config) {
            return this.each(function() {
              var data = $__default["default"](this).data(DATA_KEY);
              var _config = _extends({}, Default, $__default["default"](this).data());
              if (typeof config === "object") {
                _config = _extends({}, _config, config);
              }
              var action = typeof config === "string" ? config : _config.slide;
              if (!data) {
                data = new Carousel3(this, _config);
                $__default["default"](this).data(DATA_KEY, data);
              }
              if (typeof config === "number") {
                data.to(config);
              } else if (typeof action === "string") {
                if (typeof data[action] === "undefined") {
                  throw new TypeError('No method named "' + action + '"');
                }
                data[action]();
              } else if (_config.interval && _config.ride) {
                data.pause();
                data.cycle();
              }
            });
          };
          Carousel3._dataApiClickHandler = function _dataApiClickHandler(event) {
            var selector = Util__default["default"].getSelectorFromElement(this);
            if (!selector) {
              return;
            }
            var target = $__default["default"](selector)[0];
            if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) {
              return;
            }
            var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
            var slideIndex = this.getAttribute("data-slide-to");
            if (slideIndex) {
              config.interval = false;
            }
            Carousel3._jQueryInterface.call($__default["default"](target), config);
            if (slideIndex) {
              $__default["default"](target).data(DATA_KEY).to(slideIndex);
            }
            event.preventDefault();
          };
          _createClass(Carousel3, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }, {
            key: "Default",
            get: function get() {
              return Default;
            }
          }]);
          return Carousel3;
        }();
        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel2._dataApiClickHandler);
        $__default["default"](window).on(EVENT_LOAD_DATA_API, function() {
          var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));
          for (var i2 = 0, len = carousels.length; i2 < len; i2++) {
            var $carousel = $__default["default"](carousels[i2]);
            Carousel2._jQueryInterface.call($carousel, $carousel.data());
          }
        });
        $__default["default"].fn[NAME] = Carousel2._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Carousel2;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Carousel2._jQueryInterface;
        };
        return Carousel2;
      });
    }
  });

  // node_modules/bootstrap/js/dist/collapse.js
  var require_collapse = __commonJS({
    "node_modules/bootstrap/js/dist/collapse.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Collapse = factory(global2.jQuery, global2.Util));
      })(exports, function($2, Util2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        function _extends() {
          _extends = Object.assign ? Object.assign.bind() : function(target) {
            for (var i2 = 1; i2 < arguments.length; i2++) {
              var source = arguments[i2];
              for (var key in source) {
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                  target[key] = source[key];
                }
              }
            }
            return target;
          };
          return _extends.apply(this, arguments);
        }
        var NAME = "collapse";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.collapse";
        var EVENT_KEY = "." + DATA_KEY;
        var DATA_API_KEY = ".data-api";
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var CLASS_NAME_SHOW = "show";
        var CLASS_NAME_COLLAPSE = "collapse";
        var CLASS_NAME_COLLAPSING = "collapsing";
        var CLASS_NAME_COLLAPSED = "collapsed";
        var DIMENSION_WIDTH = "width";
        var DIMENSION_HEIGHT = "height";
        var EVENT_SHOW = "show" + EVENT_KEY;
        var EVENT_SHOWN = "shown" + EVENT_KEY;
        var EVENT_HIDE = "hide" + EVENT_KEY;
        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
        var SELECTOR_ACTIVES = ".show, .collapsing";
        var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
        var Default = {
          toggle: true,
          parent: ""
        };
        var DefaultType = {
          toggle: "boolean",
          parent: "(string|element)"
        };
        var Collapse2 = /* @__PURE__ */ function() {
          function Collapse3(element, config) {
            this._isTransitioning = false;
            this._element = element;
            this._config = this._getConfig(config);
            this._triggerArray = [].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
            var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
            for (var i2 = 0, len = toggleList.length; i2 < len; i2++) {
              var elem = toggleList[i2];
              var selector = Util__default["default"].getSelectorFromElement(elem);
              var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function(foundElem) {
                return foundElem === element;
              });
              if (selector !== null && filterElement.length > 0) {
                this._selector = selector;
                this._triggerArray.push(elem);
              }
            }
            this._parent = this._config.parent ? this._getParent() : null;
            if (!this._config.parent) {
              this._addAriaAndCollapsedClass(this._element, this._triggerArray);
            }
            if (this._config.toggle) {
              this.toggle();
            }
          }
          var _proto = Collapse3.prototype;
          _proto.toggle = function toggle() {
            if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
              this.hide();
            } else {
              this.show();
            }
          };
          _proto.show = function show() {
            var _this = this;
            if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
              return;
            }
            var actives;
            var activesData;
            if (this._parent) {
              actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function(elem) {
                if (typeof _this._config.parent === "string") {
                  return elem.getAttribute("data-parent") === _this._config.parent;
                }
                return elem.classList.contains(CLASS_NAME_COLLAPSE);
              });
              if (actives.length === 0) {
                actives = null;
              }
            }
            if (actives) {
              activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY);
              if (activesData && activesData._isTransitioning) {
                return;
              }
            }
            var startEvent = $__default["default"].Event(EVENT_SHOW);
            $__default["default"](this._element).trigger(startEvent);
            if (startEvent.isDefaultPrevented()) {
              return;
            }
            if (actives) {
              Collapse3._jQueryInterface.call($__default["default"](actives).not(this._selector), "hide");
              if (!activesData) {
                $__default["default"](actives).data(DATA_KEY, null);
              }
            }
            var dimension = this._getDimension();
            $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
            this._element.style[dimension] = 0;
            if (this._triggerArray.length) {
              $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr("aria-expanded", true);
            }
            this.setTransitioning(true);
            var complete = function complete2() {
              $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
              _this._element.style[dimension] = "";
              _this.setTransitioning(false);
              $__default["default"](_this._element).trigger(EVENT_SHOWN);
            };
            var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
            var scrollSize = "scroll" + capitalizedDimension;
            var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
            $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
            this._element.style[dimension] = this._element[scrollSize] + "px";
          };
          _proto.hide = function hide() {
            var _this2 = this;
            if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
              return;
            }
            var startEvent = $__default["default"].Event(EVENT_HIDE);
            $__default["default"](this._element).trigger(startEvent);
            if (startEvent.isDefaultPrevented()) {
              return;
            }
            var dimension = this._getDimension();
            this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
            Util__default["default"].reflow(this._element);
            $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
            var triggerArrayLength = this._triggerArray.length;
            if (triggerArrayLength > 0) {
              for (var i2 = 0; i2 < triggerArrayLength; i2++) {
                var trigger = this._triggerArray[i2];
                var selector = Util__default["default"].getSelectorFromElement(trigger);
                if (selector !== null) {
                  var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector)));
                  if (!$elem.hasClass(CLASS_NAME_SHOW)) {
                    $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr("aria-expanded", false);
                  }
                }
              }
            }
            this.setTransitioning(true);
            var complete = function complete2() {
              _this2.setTransitioning(false);
              $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);
            };
            this._element.style[dimension] = "";
            var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
            $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
          };
          _proto.setTransitioning = function setTransitioning(isTransitioning) {
            this._isTransitioning = isTransitioning;
          };
          _proto.dispose = function dispose() {
            $__default["default"].removeData(this._element, DATA_KEY);
            this._config = null;
            this._parent = null;
            this._element = null;
            this._triggerArray = null;
            this._isTransitioning = null;
          };
          _proto._getConfig = function _getConfig(config) {
            config = _extends({}, Default, config);
            config.toggle = Boolean(config.toggle);
            Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
            return config;
          };
          _proto._getDimension = function _getDimension() {
            var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH);
            return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
          };
          _proto._getParent = function _getParent() {
            var _this3 = this;
            var parent;
            if (Util__default["default"].isElement(this._config.parent)) {
              parent = this._config.parent;
              if (typeof this._config.parent.jquery !== "undefined") {
                parent = this._config.parent[0];
              }
            } else {
              parent = document.querySelector(this._config.parent);
            }
            var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]';
            var children = [].slice.call(parent.querySelectorAll(selector));
            $__default["default"](children).each(function(i2, element) {
              _this3._addAriaAndCollapsedClass(Collapse3._getTargetFromElement(element), [element]);
            });
            return parent;
          };
          _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
            var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW);
            if (triggerArray.length) {
              $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr("aria-expanded", isOpen);
            }
          };
          Collapse3._getTargetFromElement = function _getTargetFromElement(element) {
            var selector = Util__default["default"].getSelectorFromElement(element);
            return selector ? document.querySelector(selector) : null;
          };
          Collapse3._jQueryInterface = function _jQueryInterface(config) {
            return this.each(function() {
              var $element = $__default["default"](this);
              var data = $element.data(DATA_KEY);
              var _config = _extends({}, Default, $element.data(), typeof config === "object" && config ? config : {});
              if (!data && _config.toggle && typeof config === "string" && /show|hide/.test(config)) {
                _config.toggle = false;
              }
              if (!data) {
                data = new Collapse3(this, _config);
                $element.data(DATA_KEY, data);
              }
              if (typeof config === "string") {
                if (typeof data[config] === "undefined") {
                  throw new TypeError('No method named "' + config + '"');
                }
                data[config]();
              }
            });
          };
          _createClass(Collapse3, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }, {
            key: "Default",
            get: function get() {
              return Default;
            }
          }]);
          return Collapse3;
        }();
        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
          if (event.currentTarget.tagName === "A") {
            event.preventDefault();
          }
          var $trigger = $__default["default"](this);
          var selector = Util__default["default"].getSelectorFromElement(this);
          var selectors = [].slice.call(document.querySelectorAll(selector));
          $__default["default"](selectors).each(function() {
            var $target = $__default["default"](this);
            var data = $target.data(DATA_KEY);
            var config = data ? "toggle" : $trigger.data();
            Collapse2._jQueryInterface.call($target, config);
          });
        });
        $__default["default"].fn[NAME] = Collapse2._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Collapse2;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Collapse2._jQueryInterface;
        };
        return Collapse2;
      });
    }
  });

  // node_modules/popper.js/dist/umd/popper.js
  var require_popper = __commonJS({
    "node_modules/popper.js/dist/umd/popper.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.Popper = factory();
      })(exports, function() {
        "use strict";
        var isBrowser = typeof window !== "undefined" && typeof document !== "undefined" && typeof navigator !== "undefined";
        var timeoutDuration = function() {
          var longerTimeoutBrowsers = ["Edge", "Trident", "Firefox"];
          for (var i2 = 0; i2 < longerTimeoutBrowsers.length; i2 += 1) {
            if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i2]) >= 0) {
              return 1;
            }
          }
          return 0;
        }();
        function microtaskDebounce(fn) {
          var called = false;
          return function() {
            if (called) {
              return;
            }
            called = true;
            window.Promise.resolve().then(function() {
              called = false;
              fn();
            });
          };
        }
        function taskDebounce(fn) {
          var scheduled = false;
          return function() {
            if (!scheduled) {
              scheduled = true;
              setTimeout(function() {
                scheduled = false;
                fn();
              }, timeoutDuration);
            }
          };
        }
        var supportsMicroTasks = isBrowser && window.Promise;
        var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;
        function isFunction(functionToCheck) {
          var getType = {};
          return functionToCheck && getType.toString.call(functionToCheck) === "[object Function]";
        }
        function getStyleComputedProperty(element, property) {
          if (element.nodeType !== 1) {
            return [];
          }
          var window2 = element.ownerDocument.defaultView;
          var css = window2.getComputedStyle(element, null);
          return property ? css[property] : css;
        }
        function getParentNode(element) {
          if (element.nodeName === "HTML") {
            return element;
          }
          return element.parentNode || element.host;
        }
        function getScrollParent(element) {
          if (!element) {
            return document.body;
          }
          switch (element.nodeName) {
            case "HTML":
            case "BODY":
              return element.ownerDocument.body;
            case "#document":
              return element.body;
          }
          var _getStyleComputedProp = getStyleComputedProperty(element), overflow = _getStyleComputedProp.overflow, overflowX = _getStyleComputedProp.overflowX, overflowY = _getStyleComputedProp.overflowY;
          if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {
            return element;
          }
          return getScrollParent(getParentNode(element));
        }
        function getReferenceNode(reference) {
          return reference && reference.referenceNode ? reference.referenceNode : reference;
        }
        var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);
        var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);
        function isIE(version) {
          if (version === 11) {
            return isIE11;
          }
          if (version === 10) {
            return isIE10;
          }
          return isIE11 || isIE10;
        }
        function getOffsetParent(element) {
          if (!element) {
            return document.documentElement;
          }
          var noOffsetParent = isIE(10) ? document.body : null;
          var offsetParent = element.offsetParent || null;
          while (offsetParent === noOffsetParent && element.nextElementSibling) {
            offsetParent = (element = element.nextElementSibling).offsetParent;
          }
          var nodeName = offsetParent && offsetParent.nodeName;
          if (!nodeName || nodeName === "BODY" || nodeName === "HTML") {
            return element ? element.ownerDocument.documentElement : document.documentElement;
          }
          if (["TH", "TD", "TABLE"].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, "position") === "static") {
            return getOffsetParent(offsetParent);
          }
          return offsetParent;
        }
        function isOffsetContainer(element) {
          var nodeName = element.nodeName;
          if (nodeName === "BODY") {
            return false;
          }
          return nodeName === "HTML" || getOffsetParent(element.firstElementChild) === element;
        }
        function getRoot(node) {
          if (node.parentNode !== null) {
            return getRoot(node.parentNode);
          }
          return node;
        }
        function findCommonOffsetParent(element1, element2) {
          if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
            return document.documentElement;
          }
          var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
          var start = order ? element1 : element2;
          var end = order ? element2 : element1;
          var range = document.createRange();
          range.setStart(start, 0);
          range.setEnd(end, 0);
          var commonAncestorContainer = range.commonAncestorContainer;
          if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {
            if (isOffsetContainer(commonAncestorContainer)) {
              return commonAncestorContainer;
            }
            return getOffsetParent(commonAncestorContainer);
          }
          var element1root = getRoot(element1);
          if (element1root.host) {
            return findCommonOffsetParent(element1root.host, element2);
          } else {
            return findCommonOffsetParent(element1, getRoot(element2).host);
          }
        }
        function getScroll(element) {
          var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "top";
          var upperSide = side === "top" ? "scrollTop" : "scrollLeft";
          var nodeName = element.nodeName;
          if (nodeName === "BODY" || nodeName === "HTML") {
            var html = element.ownerDocument.documentElement;
            var scrollingElement = element.ownerDocument.scrollingElement || html;
            return scrollingElement[upperSide];
          }
          return element[upperSide];
        }
        function includeScroll(rect, element) {
          var subtract = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
          var scrollTop = getScroll(element, "top");
          var scrollLeft = getScroll(element, "left");
          var modifier = subtract ? -1 : 1;
          rect.top += scrollTop * modifier;
          rect.bottom += scrollTop * modifier;
          rect.left += scrollLeft * modifier;
          rect.right += scrollLeft * modifier;
          return rect;
        }
        function getBordersSize(styles, axis) {
          var sideA = axis === "x" ? "Left" : "Top";
          var sideB = sideA === "Left" ? "Right" : "Bottom";
          return parseFloat(styles["border" + sideA + "Width"]) + parseFloat(styles["border" + sideB + "Width"]);
        }
        function getSize(axis, body, html, computedStyle) {
          return Math.max(body["offset" + axis], body["scroll" + axis], html["client" + axis], html["offset" + axis], html["scroll" + axis], isIE(10) ? parseInt(html["offset" + axis]) + parseInt(computedStyle["margin" + (axis === "Height" ? "Top" : "Left")]) + parseInt(computedStyle["margin" + (axis === "Height" ? "Bottom" : "Right")]) : 0);
        }
        function getWindowSizes(document2) {
          var body = document2.body;
          var html = document2.documentElement;
          var computedStyle = isIE(10) && getComputedStyle(html);
          return {
            height: getSize("Height", body, html, computedStyle),
            width: getSize("Width", body, html, computedStyle)
          };
        }
        var classCallCheck = function(instance, Constructor) {
          if (!(instance instanceof Constructor)) {
            throw new TypeError("Cannot call a class as a function");
          }
        };
        var createClass = function() {
          function defineProperties(target, props) {
            for (var i2 = 0; i2 < props.length; i2++) {
              var descriptor = props[i2];
              descriptor.enumerable = descriptor.enumerable || false;
              descriptor.configurable = true;
              if ("value" in descriptor)
                descriptor.writable = true;
              Object.defineProperty(target, descriptor.key, descriptor);
            }
          }
          return function(Constructor, protoProps, staticProps) {
            if (protoProps)
              defineProperties(Constructor.prototype, protoProps);
            if (staticProps)
              defineProperties(Constructor, staticProps);
            return Constructor;
          };
        }();
        var defineProperty = function(obj, key, value2) {
          if (key in obj) {
            Object.defineProperty(obj, key, {
              value: value2,
              enumerable: true,
              configurable: true,
              writable: true
            });
          } else {
            obj[key] = value2;
          }
          return obj;
        };
        var _extends = Object.assign || function(target) {
          for (var i2 = 1; i2 < arguments.length; i2++) {
            var source = arguments[i2];
            for (var key in source) {
              if (Object.prototype.hasOwnProperty.call(source, key)) {
                target[key] = source[key];
              }
            }
          }
          return target;
        };
        function getClientRect(offsets) {
          return _extends({}, offsets, {
            right: offsets.left + offsets.width,
            bottom: offsets.top + offsets.height
          });
        }
        function getBoundingClientRect(element) {
          var rect = {};
          try {
            if (isIE(10)) {
              rect = element.getBoundingClientRect();
              var scrollTop = getScroll(element, "top");
              var scrollLeft = getScroll(element, "left");
              rect.top += scrollTop;
              rect.left += scrollLeft;
              rect.bottom += scrollTop;
              rect.right += scrollLeft;
            } else {
              rect = element.getBoundingClientRect();
            }
          } catch (e) {
          }
          var result = {
            left: rect.left,
            top: rect.top,
            width: rect.right - rect.left,
            height: rect.bottom - rect.top
          };
          var sizes = element.nodeName === "HTML" ? getWindowSizes(element.ownerDocument) : {};
          var width = sizes.width || element.clientWidth || result.width;
          var height = sizes.height || element.clientHeight || result.height;
          var horizScrollbar = element.offsetWidth - width;
          var vertScrollbar = element.offsetHeight - height;
          if (horizScrollbar || vertScrollbar) {
            var styles = getStyleComputedProperty(element);
            horizScrollbar -= getBordersSize(styles, "x");
            vertScrollbar -= getBordersSize(styles, "y");
            result.width -= horizScrollbar;
            result.height -= vertScrollbar;
          }
          return getClientRect(result);
        }
        function getOffsetRectRelativeToArbitraryNode(children, parent) {
          var fixedPosition = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
          var isIE102 = isIE(10);
          var isHTML = parent.nodeName === "HTML";
          var childrenRect = getBoundingClientRect(children);
          var parentRect = getBoundingClientRect(parent);
          var scrollParent = getScrollParent(children);
          var styles = getStyleComputedProperty(parent);
          var borderTopWidth = parseFloat(styles.borderTopWidth);
          var borderLeftWidth = parseFloat(styles.borderLeftWidth);
          if (fixedPosition && isHTML) {
            parentRect.top = Math.max(parentRect.top, 0);
            parentRect.left = Math.max(parentRect.left, 0);
          }
          var offsets = getClientRect({
            top: childrenRect.top - parentRect.top - borderTopWidth,
            left: childrenRect.left - parentRect.left - borderLeftWidth,
            width: childrenRect.width,
            height: childrenRect.height
          });
          offsets.marginTop = 0;
          offsets.marginLeft = 0;
          if (!isIE102 && isHTML) {
            var marginTop = parseFloat(styles.marginTop);
            var marginLeft = parseFloat(styles.marginLeft);
            offsets.top -= borderTopWidth - marginTop;
            offsets.bottom -= borderTopWidth - marginTop;
            offsets.left -= borderLeftWidth - marginLeft;
            offsets.right -= borderLeftWidth - marginLeft;
            offsets.marginTop = marginTop;
            offsets.marginLeft = marginLeft;
          }
          if (isIE102 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== "BODY") {
            offsets = includeScroll(offsets, parent);
          }
          return offsets;
        }
        function getViewportOffsetRectRelativeToArtbitraryNode(element) {
          var excludeScroll = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
          var html = element.ownerDocument.documentElement;
          var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
          var width = Math.max(html.clientWidth, window.innerWidth || 0);
          var height = Math.max(html.clientHeight, window.innerHeight || 0);
          var scrollTop = !excludeScroll ? getScroll(html) : 0;
          var scrollLeft = !excludeScroll ? getScroll(html, "left") : 0;
          var offset2 = {
            top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
            left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
            width,
            height
          };
          return getClientRect(offset2);
        }
        function isFixed(element) {
          var nodeName = element.nodeName;
          if (nodeName === "BODY" || nodeName === "HTML") {
            return false;
          }
          if (getStyleComputedProperty(element, "position") === "fixed") {
            return true;
          }
          var parentNode = getParentNode(element);
          if (!parentNode) {
            return false;
          }
          return isFixed(parentNode);
        }
        function getFixedPositionOffsetParent(element) {
          if (!element || !element.parentElement || isIE()) {
            return document.documentElement;
          }
          var el = element.parentElement;
          while (el && getStyleComputedProperty(el, "transform") === "none") {
            el = el.parentElement;
          }
          return el || document.documentElement;
        }
        function getBoundaries(popper, reference, padding, boundariesElement) {
          var fixedPosition = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
          var boundaries = { top: 0, left: 0 };
          var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
          if (boundariesElement === "viewport") {
            boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);
          } else {
            var boundariesNode = void 0;
            if (boundariesElement === "scrollParent") {
              boundariesNode = getScrollParent(getParentNode(reference));
              if (boundariesNode.nodeName === "BODY") {
                boundariesNode = popper.ownerDocument.documentElement;
              }
            } else if (boundariesElement === "window") {
              boundariesNode = popper.ownerDocument.documentElement;
            } else {
              boundariesNode = boundariesElement;
            }
            var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);
            if (boundariesNode.nodeName === "HTML" && !isFixed(offsetParent)) {
              var _getWindowSizes = getWindowSizes(popper.ownerDocument), height = _getWindowSizes.height, width = _getWindowSizes.width;
              boundaries.top += offsets.top - offsets.marginTop;
              boundaries.bottom = height + offsets.top;
              boundaries.left += offsets.left - offsets.marginLeft;
              boundaries.right = width + offsets.left;
            } else {
              boundaries = offsets;
            }
          }
          padding = padding || 0;
          var isPaddingNumber = typeof padding === "number";
          boundaries.left += isPaddingNumber ? padding : padding.left || 0;
          boundaries.top += isPaddingNumber ? padding : padding.top || 0;
          boundaries.right -= isPaddingNumber ? padding : padding.right || 0;
          boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;
          return boundaries;
        }
        function getArea(_ref) {
          var width = _ref.width, height = _ref.height;
          return width * height;
        }
        function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
          var padding = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : 0;
          if (placement.indexOf("auto") === -1) {
            return placement;
          }
          var boundaries = getBoundaries(popper, reference, padding, boundariesElement);
          var rects = {
            top: {
              width: boundaries.width,
              height: refRect.top - boundaries.top
            },
            right: {
              width: boundaries.right - refRect.right,
              height: boundaries.height
            },
            bottom: {
              width: boundaries.width,
              height: boundaries.bottom - refRect.bottom
            },
            left: {
              width: refRect.left - boundaries.left,
              height: boundaries.height
            }
          };
          var sortedAreas = Object.keys(rects).map(function(key) {
            return _extends({
              key
            }, rects[key], {
              area: getArea(rects[key])
            });
          }).sort(function(a, b) {
            return b.area - a.area;
          });
          var filteredAreas = sortedAreas.filter(function(_ref2) {
            var width = _ref2.width, height = _ref2.height;
            return width >= popper.clientWidth && height >= popper.clientHeight;
          });
          var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;
          var variation = placement.split("-")[1];
          return computedPlacement + (variation ? "-" + variation : "");
        }
        function getReferenceOffsets(state, popper, reference) {
          var fixedPosition = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;
          var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
          return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);
        }
        function getOuterSizes(element) {
          var window2 = element.ownerDocument.defaultView;
          var styles = window2.getComputedStyle(element);
          var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);
          var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);
          var result = {
            width: element.offsetWidth + y,
            height: element.offsetHeight + x
          };
          return result;
        }
        function getOppositePlacement(placement) {
          var hash = { left: "right", right: "left", bottom: "top", top: "bottom" };
          return placement.replace(/left|right|bottom|top/g, function(matched) {
            return hash[matched];
          });
        }
        function getPopperOffsets(popper, referenceOffsets, placement) {
          placement = placement.split("-")[0];
          var popperRect = getOuterSizes(popper);
          var popperOffsets = {
            width: popperRect.width,
            height: popperRect.height
          };
          var isHoriz = ["right", "left"].indexOf(placement) !== -1;
          var mainSide = isHoriz ? "top" : "left";
          var secondarySide = isHoriz ? "left" : "top";
          var measurement = isHoriz ? "height" : "width";
          var secondaryMeasurement = !isHoriz ? "height" : "width";
          popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
          if (placement === secondarySide) {
            popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
          } else {
            popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
          }
          return popperOffsets;
        }
        function find(arr, check) {
          if (Array.prototype.find) {
            return arr.find(check);
          }
          return arr.filter(check)[0];
        }
        function findIndex(arr, prop, value2) {
          if (Array.prototype.findIndex) {
            return arr.findIndex(function(cur) {
              return cur[prop] === value2;
            });
          }
          var match = find(arr, function(obj) {
            return obj[prop] === value2;
          });
          return arr.indexOf(match);
        }
        function runModifiers(modifiers2, data, ends) {
          var modifiersToRun = ends === void 0 ? modifiers2 : modifiers2.slice(0, findIndex(modifiers2, "name", ends));
          modifiersToRun.forEach(function(modifier) {
            if (modifier["function"]) {
              console.warn("`modifier.function` is deprecated, use `modifier.fn`!");
            }
            var fn = modifier["function"] || modifier.fn;
            if (modifier.enabled && isFunction(fn)) {
              data.offsets.popper = getClientRect(data.offsets.popper);
              data.offsets.reference = getClientRect(data.offsets.reference);
              data = fn(data, modifier);
            }
          });
          return data;
        }
        function update() {
          if (this.state.isDestroyed) {
            return;
          }
          var data = {
            instance: this,
            styles: {},
            arrowStyles: {},
            attributes: {},
            flipped: false,
            offsets: {}
          };
          data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);
          data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);
          data.originalPlacement = data.placement;
          data.positionFixed = this.options.positionFixed;
          data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);
          data.offsets.popper.position = this.options.positionFixed ? "fixed" : "absolute";
          data = runModifiers(this.modifiers, data);
          if (!this.state.isCreated) {
            this.state.isCreated = true;
            this.options.onCreate(data);
          } else {
            this.options.onUpdate(data);
          }
        }
        function isModifierEnabled(modifiers2, modifierName) {
          return modifiers2.some(function(_ref) {
            var name2 = _ref.name, enabled = _ref.enabled;
            return enabled && name2 === modifierName;
          });
        }
        function getSupportedPropertyName(property) {
          var prefixes = [false, "ms", "Webkit", "Moz", "O"];
          var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
          for (var i2 = 0; i2 < prefixes.length; i2++) {
            var prefix = prefixes[i2];
            var toCheck = prefix ? "" + prefix + upperProp : property;
            if (typeof document.body.style[toCheck] !== "undefined") {
              return toCheck;
            }
          }
          return null;
        }
        function destroy() {
          this.state.isDestroyed = true;
          if (isModifierEnabled(this.modifiers, "applyStyle")) {
            this.popper.removeAttribute("x-placement");
            this.popper.style.position = "";
            this.popper.style.top = "";
            this.popper.style.left = "";
            this.popper.style.right = "";
            this.popper.style.bottom = "";
            this.popper.style.willChange = "";
            this.popper.style[getSupportedPropertyName("transform")] = "";
          }
          this.disableEventListeners();
          if (this.options.removeOnDestroy) {
            this.popper.parentNode.removeChild(this.popper);
          }
          return this;
        }
        function getWindow(element) {
          var ownerDocument = element.ownerDocument;
          return ownerDocument ? ownerDocument.defaultView : window;
        }
        function attachToScrollParents(scrollParent, event, callback, scrollParents) {
          var isBody = scrollParent.nodeName === "BODY";
          var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;
          target.addEventListener(event, callback, { passive: true });
          if (!isBody) {
            attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
          }
          scrollParents.push(target);
        }
        function setupEventListeners(reference, options, state, updateBound) {
          state.updateBound = updateBound;
          getWindow(reference).addEventListener("resize", state.updateBound, { passive: true });
          var scrollElement = getScrollParent(reference);
          attachToScrollParents(scrollElement, "scroll", state.updateBound, state.scrollParents);
          state.scrollElement = scrollElement;
          state.eventsEnabled = true;
          return state;
        }
        function enableEventListeners() {
          if (!this.state.eventsEnabled) {
            this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
          }
        }
        function removeEventListeners(reference, state) {
          getWindow(reference).removeEventListener("resize", state.updateBound);
          state.scrollParents.forEach(function(target) {
            target.removeEventListener("scroll", state.updateBound);
          });
          state.updateBound = null;
          state.scrollParents = [];
          state.scrollElement = null;
          state.eventsEnabled = false;
          return state;
        }
        function disableEventListeners() {
          if (this.state.eventsEnabled) {
            cancelAnimationFrame(this.scheduleUpdate);
            this.state = removeEventListeners(this.reference, this.state);
          }
        }
        function isNumeric(n) {
          return n !== "" && !isNaN(parseFloat(n)) && isFinite(n);
        }
        function setStyles(element, styles) {
          Object.keys(styles).forEach(function(prop) {
            var unit = "";
            if (["width", "height", "top", "right", "bottom", "left"].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
              unit = "px";
            }
            element.style[prop] = styles[prop] + unit;
          });
        }
        function setAttributes(element, attributes) {
          Object.keys(attributes).forEach(function(prop) {
            var value2 = attributes[prop];
            if (value2 !== false) {
              element.setAttribute(prop, attributes[prop]);
            } else {
              element.removeAttribute(prop);
            }
          });
        }
        function applyStyle(data) {
          setStyles(data.instance.popper, data.styles);
          setAttributes(data.instance.popper, data.attributes);
          if (data.arrowElement && Object.keys(data.arrowStyles).length) {
            setStyles(data.arrowElement, data.arrowStyles);
          }
          return data;
        }
        function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
          var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);
          var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);
          popper.setAttribute("x-placement", placement);
          setStyles(popper, { position: options.positionFixed ? "fixed" : "absolute" });
          return options;
        }
        function getRoundedOffsets(data, shouldRound) {
          var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
          var round = Math.round, floor = Math.floor;
          var noRound = function noRound2(v) {
            return v;
          };
          var referenceWidth = round(reference.width);
          var popperWidth = round(popper.width);
          var isVertical = ["left", "right"].indexOf(data.placement) !== -1;
          var isVariation = data.placement.indexOf("-") !== -1;
          var sameWidthParity = referenceWidth % 2 === popperWidth % 2;
          var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;
          var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;
          var verticalToInteger = !shouldRound ? noRound : round;
          return {
            left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
            top: verticalToInteger(popper.top),
            bottom: verticalToInteger(popper.bottom),
            right: horizontalToInteger(popper.right)
          };
        }
        var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);
        function computeStyle(data, options) {
          var x = options.x, y = options.y;
          var popper = data.offsets.popper;
          var legacyGpuAccelerationOption = find(data.instance.modifiers, function(modifier) {
            return modifier.name === "applyStyle";
          }).gpuAcceleration;
          if (legacyGpuAccelerationOption !== void 0) {
            console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");
          }
          var gpuAcceleration = legacyGpuAccelerationOption !== void 0 ? legacyGpuAccelerationOption : options.gpuAcceleration;
          var offsetParent = getOffsetParent(data.instance.popper);
          var offsetParentRect = getBoundingClientRect(offsetParent);
          var styles = {
            position: popper.position
          };
          var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);
          var sideA = x === "bottom" ? "top" : "bottom";
          var sideB = y === "right" ? "left" : "right";
          var prefixedProperty = getSupportedPropertyName("transform");
          var left = void 0, top = void 0;
          if (sideA === "bottom") {
            if (offsetParent.nodeName === "HTML") {
              top = -offsetParent.clientHeight + offsets.bottom;
            } else {
              top = -offsetParentRect.height + offsets.bottom;
            }
          } else {
            top = offsets.top;
          }
          if (sideB === "right") {
            if (offsetParent.nodeName === "HTML") {
              left = -offsetParent.clientWidth + offsets.right;
            } else {
              left = -offsetParentRect.width + offsets.right;
            }
          } else {
            left = offsets.left;
          }
          if (gpuAcceleration && prefixedProperty) {
            styles[prefixedProperty] = "translate3d(" + left + "px, " + top + "px, 0)";
            styles[sideA] = 0;
            styles[sideB] = 0;
            styles.willChange = "transform";
          } else {
            var invertTop = sideA === "bottom" ? -1 : 1;
            var invertLeft = sideB === "right" ? -1 : 1;
            styles[sideA] = top * invertTop;
            styles[sideB] = left * invertLeft;
            styles.willChange = sideA + ", " + sideB;
          }
          var attributes = {
            "x-placement": data.placement
          };
          data.attributes = _extends({}, attributes, data.attributes);
          data.styles = _extends({}, styles, data.styles);
          data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);
          return data;
        }
        function isModifierRequired(modifiers2, requestingName, requestedName) {
          var requesting = find(modifiers2, function(_ref) {
            var name2 = _ref.name;
            return name2 === requestingName;
          });
          var isRequired = !!requesting && modifiers2.some(function(modifier) {
            return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
          });
          if (!isRequired) {
            var _requesting = "`" + requestingName + "`";
            var requested = "`" + requestedName + "`";
            console.warn(requested + " modifier is required by " + _requesting + " modifier in order to work, be sure to include it before " + _requesting + "!");
          }
          return isRequired;
        }
        function arrow(data, options) {
          var _data$offsets$arrow;
          if (!isModifierRequired(data.instance.modifiers, "arrow", "keepTogether")) {
            return data;
          }
          var arrowElement = options.element;
          if (typeof arrowElement === "string") {
            arrowElement = data.instance.popper.querySelector(arrowElement);
            if (!arrowElement) {
              return data;
            }
          } else {
            if (!data.instance.popper.contains(arrowElement)) {
              console.warn("WARNING: `arrow.element` must be child of its popper element!");
              return data;
            }
          }
          var placement = data.placement.split("-")[0];
          var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
          var isVertical = ["left", "right"].indexOf(placement) !== -1;
          var len = isVertical ? "height" : "width";
          var sideCapitalized = isVertical ? "Top" : "Left";
          var side = sideCapitalized.toLowerCase();
          var altSide = isVertical ? "left" : "top";
          var opSide = isVertical ? "bottom" : "right";
          var arrowElementSize = getOuterSizes(arrowElement)[len];
          if (reference[opSide] - arrowElementSize < popper[side]) {
            data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
          }
          if (reference[side] + arrowElementSize > popper[opSide]) {
            data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
          }
          data.offsets.popper = getClientRect(data.offsets.popper);
          var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
          var css = getStyleComputedProperty(data.instance.popper);
          var popperMarginSide = parseFloat(css["margin" + sideCapitalized]);
          var popperBorderSide = parseFloat(css["border" + sideCapitalized + "Width"]);
          var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;
          sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
          data.arrowElement = arrowElement;
          data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ""), _data$offsets$arrow);
          return data;
        }
        function getOppositeVariation(variation) {
          if (variation === "end") {
            return "start";
          } else if (variation === "start") {
            return "end";
          }
          return variation;
        }
        var placements = ["auto-start", "auto", "auto-end", "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-end", "bottom", "bottom-start", "left-end", "left", "left-start"];
        var validPlacements = placements.slice(3);
        function clockwise(placement) {
          var counter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
          var index = validPlacements.indexOf(placement);
          var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
          return counter ? arr.reverse() : arr;
        }
        var BEHAVIORS = {
          FLIP: "flip",
          CLOCKWISE: "clockwise",
          COUNTERCLOCKWISE: "counterclockwise"
        };
        function flip(data, options) {
          if (isModifierEnabled(data.instance.modifiers, "inner")) {
            return data;
          }
          if (data.flipped && data.placement === data.originalPlacement) {
            return data;
          }
          var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);
          var placement = data.placement.split("-")[0];
          var placementOpposite = getOppositePlacement(placement);
          var variation = data.placement.split("-")[1] || "";
          var flipOrder = [];
          switch (options.behavior) {
            case BEHAVIORS.FLIP:
              flipOrder = [placement, placementOpposite];
              break;
            case BEHAVIORS.CLOCKWISE:
              flipOrder = clockwise(placement);
              break;
            case BEHAVIORS.COUNTERCLOCKWISE:
              flipOrder = clockwise(placement, true);
              break;
            default:
              flipOrder = options.behavior;
          }
          flipOrder.forEach(function(step, index) {
            if (placement !== step || flipOrder.length === index + 1) {
              return data;
            }
            placement = data.placement.split("-")[0];
            placementOpposite = getOppositePlacement(placement);
            var popperOffsets = data.offsets.popper;
            var refOffsets = data.offsets.reference;
            var floor = Math.floor;
            var overlapsRef = placement === "left" && floor(popperOffsets.right) > floor(refOffsets.left) || placement === "right" && floor(popperOffsets.left) < floor(refOffsets.right) || placement === "top" && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === "bottom" && floor(popperOffsets.top) < floor(refOffsets.bottom);
            var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
            var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
            var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
            var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);
            var overflowsBoundaries = placement === "left" && overflowsLeft || placement === "right" && overflowsRight || placement === "top" && overflowsTop || placement === "bottom" && overflowsBottom;
            var isVertical = ["top", "bottom"].indexOf(placement) !== -1;
            var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === "start" && overflowsLeft || isVertical && variation === "end" && overflowsRight || !isVertical && variation === "start" && overflowsTop || !isVertical && variation === "end" && overflowsBottom);
            var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === "start" && overflowsRight || isVertical && variation === "end" && overflowsLeft || !isVertical && variation === "start" && overflowsBottom || !isVertical && variation === "end" && overflowsTop);
            var flippedVariation = flippedVariationByRef || flippedVariationByContent;
            if (overlapsRef || overflowsBoundaries || flippedVariation) {
              data.flipped = true;
              if (overlapsRef || overflowsBoundaries) {
                placement = flipOrder[index + 1];
              }
              if (flippedVariation) {
                variation = getOppositeVariation(variation);
              }
              data.placement = placement + (variation ? "-" + variation : "");
              data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));
              data = runModifiers(data.instance.modifiers, data, "flip");
            }
          });
          return data;
        }
        function keepTogether(data) {
          var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
          var placement = data.placement.split("-")[0];
          var floor = Math.floor;
          var isVertical = ["top", "bottom"].indexOf(placement) !== -1;
          var side = isVertical ? "right" : "bottom";
          var opSide = isVertical ? "left" : "top";
          var measurement = isVertical ? "width" : "height";
          if (popper[side] < floor(reference[opSide])) {
            data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
          }
          if (popper[opSide] > floor(reference[side])) {
            data.offsets.popper[opSide] = floor(reference[side]);
          }
          return data;
        }
        function toValue(str, measurement, popperOffsets, referenceOffsets) {
          var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
          var value2 = +split[1];
          var unit = split[2];
          if (!value2) {
            return str;
          }
          if (unit.indexOf("%") === 0) {
            var element = void 0;
            switch (unit) {
              case "%p":
                element = popperOffsets;
                break;
              case "%":
              case "%r":
              default:
                element = referenceOffsets;
            }
            var rect = getClientRect(element);
            return rect[measurement] / 100 * value2;
          } else if (unit === "vh" || unit === "vw") {
            var size = void 0;
            if (unit === "vh") {
              size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
            } else {
              size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
            }
            return size / 100 * value2;
          } else {
            return value2;
          }
        }
        function parseOffset(offset2, popperOffsets, referenceOffsets, basePlacement) {
          var offsets = [0, 0];
          var useHeight = ["right", "left"].indexOf(basePlacement) !== -1;
          var fragments = offset2.split(/(\+|\-)/).map(function(frag) {
            return frag.trim();
          });
          var divider = fragments.indexOf(find(fragments, function(frag) {
            return frag.search(/,|\s/) !== -1;
          }));
          if (fragments[divider] && fragments[divider].indexOf(",") === -1) {
            console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");
          }
          var splitRegex = /\s*,\s*|\s+/;
          var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];
          ops = ops.map(function(op, index) {
            var measurement = (index === 1 ? !useHeight : useHeight) ? "height" : "width";
            var mergeWithPrevious = false;
            return op.reduce(function(a, b) {
              if (a[a.length - 1] === "" && ["+", "-"].indexOf(b) !== -1) {
                a[a.length - 1] = b;
                mergeWithPrevious = true;
                return a;
              } else if (mergeWithPrevious) {
                a[a.length - 1] += b;
                mergeWithPrevious = false;
                return a;
              } else {
                return a.concat(b);
              }
            }, []).map(function(str) {
              return toValue(str, measurement, popperOffsets, referenceOffsets);
            });
          });
          ops.forEach(function(op, index) {
            op.forEach(function(frag, index2) {
              if (isNumeric(frag)) {
                offsets[index] += frag * (op[index2 - 1] === "-" ? -1 : 1);
              }
            });
          });
          return offsets;
        }
        function offset(data, _ref) {
          var offset2 = _ref.offset;
          var placement = data.placement, _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
          var basePlacement = placement.split("-")[0];
          var offsets = void 0;
          if (isNumeric(+offset2)) {
            offsets = [+offset2, 0];
          } else {
            offsets = parseOffset(offset2, popper, reference, basePlacement);
          }
          if (basePlacement === "left") {
            popper.top += offsets[0];
            popper.left -= offsets[1];
          } else if (basePlacement === "right") {
            popper.top += offsets[0];
            popper.left += offsets[1];
          } else if (basePlacement === "top") {
            popper.left += offsets[0];
            popper.top -= offsets[1];
          } else if (basePlacement === "bottom") {
            popper.left += offsets[0];
            popper.top += offsets[1];
          }
          data.popper = popper;
          return data;
        }
        function preventOverflow(data, options) {
          var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);
          if (data.instance.reference === boundariesElement) {
            boundariesElement = getOffsetParent(boundariesElement);
          }
          var transformProp = getSupportedPropertyName("transform");
          var popperStyles = data.instance.popper.style;
          var top = popperStyles.top, left = popperStyles.left, transform = popperStyles[transformProp];
          popperStyles.top = "";
          popperStyles.left = "";
          popperStyles[transformProp] = "";
          var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);
          popperStyles.top = top;
          popperStyles.left = left;
          popperStyles[transformProp] = transform;
          options.boundaries = boundaries;
          var order = options.priority;
          var popper = data.offsets.popper;
          var check = {
            primary: function primary(placement) {
              var value2 = popper[placement];
              if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
                value2 = Math.max(popper[placement], boundaries[placement]);
              }
              return defineProperty({}, placement, value2);
            },
            secondary: function secondary(placement) {
              var mainSide = placement === "right" ? "left" : "top";
              var value2 = popper[mainSide];
              if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
                value2 = Math.min(popper[mainSide], boundaries[placement] - (placement === "right" ? popper.width : popper.height));
              }
              return defineProperty({}, mainSide, value2);
            }
          };
          order.forEach(function(placement) {
            var side = ["left", "top"].indexOf(placement) !== -1 ? "primary" : "secondary";
            popper = _extends({}, popper, check[side](placement));
          });
          data.offsets.popper = popper;
          return data;
        }
        function shift(data) {
          var placement = data.placement;
          var basePlacement = placement.split("-")[0];
          var shiftvariation = placement.split("-")[1];
          if (shiftvariation) {
            var _data$offsets = data.offsets, reference = _data$offsets.reference, popper = _data$offsets.popper;
            var isVertical = ["bottom", "top"].indexOf(basePlacement) !== -1;
            var side = isVertical ? "left" : "top";
            var measurement = isVertical ? "width" : "height";
            var shiftOffsets = {
              start: defineProperty({}, side, reference[side]),
              end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
            };
            data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);
          }
          return data;
        }
        function hide(data) {
          if (!isModifierRequired(data.instance.modifiers, "hide", "preventOverflow")) {
            return data;
          }
          var refRect = data.offsets.reference;
          var bound = find(data.instance.modifiers, function(modifier) {
            return modifier.name === "preventOverflow";
          }).boundaries;
          if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
            if (data.hide === true) {
              return data;
            }
            data.hide = true;
            data.attributes["x-out-of-boundaries"] = "";
          } else {
            if (data.hide === false) {
              return data;
            }
            data.hide = false;
            data.attributes["x-out-of-boundaries"] = false;
          }
          return data;
        }
        function inner(data) {
          var placement = data.placement;
          var basePlacement = placement.split("-")[0];
          var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
          var isHoriz = ["left", "right"].indexOf(basePlacement) !== -1;
          var subtractLength = ["top", "left"].indexOf(basePlacement) === -1;
          popper[isHoriz ? "left" : "top"] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? "width" : "height"] : 0);
          data.placement = getOppositePlacement(placement);
          data.offsets.popper = getClientRect(popper);
          return data;
        }
        var modifiers = {
          shift: {
            order: 100,
            enabled: true,
            fn: shift
          },
          offset: {
            order: 200,
            enabled: true,
            fn: offset,
            offset: 0
          },
          preventOverflow: {
            order: 300,
            enabled: true,
            fn: preventOverflow,
            priority: ["left", "right", "top", "bottom"],
            padding: 5,
            boundariesElement: "scrollParent"
          },
          keepTogether: {
            order: 400,
            enabled: true,
            fn: keepTogether
          },
          arrow: {
            order: 500,
            enabled: true,
            fn: arrow,
            element: "[x-arrow]"
          },
          flip: {
            order: 600,
            enabled: true,
            fn: flip,
            behavior: "flip",
            padding: 5,
            boundariesElement: "viewport",
            flipVariations: false,
            flipVariationsByContent: false
          },
          inner: {
            order: 700,
            enabled: false,
            fn: inner
          },
          hide: {
            order: 800,
            enabled: true,
            fn: hide
          },
          computeStyle: {
            order: 850,
            enabled: true,
            fn: computeStyle,
            gpuAcceleration: true,
            x: "bottom",
            y: "right"
          },
          applyStyle: {
            order: 900,
            enabled: true,
            fn: applyStyle,
            onLoad: applyStyleOnLoad,
            gpuAcceleration: void 0
          }
        };
        var Defaults = {
          placement: "bottom",
          positionFixed: false,
          eventsEnabled: true,
          removeOnDestroy: false,
          onCreate: function onCreate() {
          },
          onUpdate: function onUpdate() {
          },
          modifiers
        };
        var Popper = function() {
          function Popper2(reference, popper) {
            var _this = this;
            var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
            classCallCheck(this, Popper2);
            this.scheduleUpdate = function() {
              return requestAnimationFrame(_this.update);
            };
            this.update = debounce(this.update.bind(this));
            this.options = _extends({}, Popper2.Defaults, options);
            this.state = {
              isDestroyed: false,
              isCreated: false,
              scrollParents: []
            };
            this.reference = reference && reference.jquery ? reference[0] : reference;
            this.popper = popper && popper.jquery ? popper[0] : popper;
            this.options.modifiers = {};
            Object.keys(_extends({}, Popper2.Defaults.modifiers, options.modifiers)).forEach(function(name2) {
              _this.options.modifiers[name2] = _extends({}, Popper2.Defaults.modifiers[name2] || {}, options.modifiers ? options.modifiers[name2] : {});
            });
            this.modifiers = Object.keys(this.options.modifiers).map(function(name2) {
              return _extends({
                name: name2
              }, _this.options.modifiers[name2]);
            }).sort(function(a, b) {
              return a.order - b.order;
            });
            this.modifiers.forEach(function(modifierOptions) {
              if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
                modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
              }
            });
            this.update();
            var eventsEnabled = this.options.eventsEnabled;
            if (eventsEnabled) {
              this.enableEventListeners();
            }
            this.state.eventsEnabled = eventsEnabled;
          }
          createClass(Popper2, [{
            key: "update",
            value: function update$$1() {
              return update.call(this);
            }
          }, {
            key: "destroy",
            value: function destroy$$1() {
              return destroy.call(this);
            }
          }, {
            key: "enableEventListeners",
            value: function enableEventListeners$$1() {
              return enableEventListeners.call(this);
            }
          }, {
            key: "disableEventListeners",
            value: function disableEventListeners$$1() {
              return disableEventListeners.call(this);
            }
          }]);
          return Popper2;
        }();
        Popper.Utils = (typeof window !== "undefined" ? window : global).PopperUtils;
        Popper.placements = placements;
        Popper.Defaults = Defaults;
        return Popper;
      });
    }
  });

  // node_modules/bootstrap/js/dist/dropdown.js
  var require_dropdown = __commonJS({
    "node_modules/bootstrap/js/dist/dropdown.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_popper(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "popper.js", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Dropdown = factory(global2.jQuery, global2.Popper, global2.Util));
      })(exports, function($2, Popper, Util2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Popper__default = /* @__PURE__ */ _interopDefaultLegacy(Popper);
        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        function _extends() {
          _extends = Object.assign ? Object.assign.bind() : function(target) {
            for (var i2 = 1; i2 < arguments.length; i2++) {
              var source = arguments[i2];
              for (var key in source) {
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                  target[key] = source[key];
                }
              }
            }
            return target;
          };
          return _extends.apply(this, arguments);
        }
        var NAME = "dropdown";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.dropdown";
        var EVENT_KEY = "." + DATA_KEY;
        var DATA_API_KEY = ".data-api";
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var ESCAPE_KEYCODE = 27;
        var SPACE_KEYCODE = 32;
        var TAB_KEYCODE = 9;
        var ARROW_UP_KEYCODE = 38;
        var ARROW_DOWN_KEYCODE = 40;
        var RIGHT_MOUSE_BUTTON_WHICH = 3;
        var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
        var CLASS_NAME_DISABLED = "disabled";
        var CLASS_NAME_SHOW = "show";
        var CLASS_NAME_DROPUP = "dropup";
        var CLASS_NAME_DROPRIGHT = "dropright";
        var CLASS_NAME_DROPLEFT = "dropleft";
        var CLASS_NAME_MENURIGHT = "dropdown-menu-right";
        var CLASS_NAME_POSITION_STATIC = "position-static";
        var EVENT_HIDE = "hide" + EVENT_KEY;
        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
        var EVENT_SHOW = "show" + EVENT_KEY;
        var EVENT_SHOWN = "shown" + EVENT_KEY;
        var EVENT_CLICK = "click" + EVENT_KEY;
        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
        var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY + DATA_API_KEY;
        var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY + DATA_API_KEY;
        var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]';
        var SELECTOR_FORM_CHILD = ".dropdown form";
        var SELECTOR_MENU = ".dropdown-menu";
        var SELECTOR_NAVBAR_NAV = ".navbar-nav";
        var SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)";
        var PLACEMENT_TOP = "top-start";
        var PLACEMENT_TOPEND = "top-end";
        var PLACEMENT_BOTTOM = "bottom-start";
        var PLACEMENT_BOTTOMEND = "bottom-end";
        var PLACEMENT_RIGHT = "right-start";
        var PLACEMENT_LEFT = "left-start";
        var Default = {
          offset: 0,
          flip: true,
          boundary: "scrollParent",
          reference: "toggle",
          display: "dynamic",
          popperConfig: null
        };
        var DefaultType = {
          offset: "(number|string|function)",
          flip: "boolean",
          boundary: "(string|element)",
          reference: "(string|element)",
          display: "string",
          popperConfig: "(null|object)"
        };
        var Dropdown2 = /* @__PURE__ */ function() {
          function Dropdown3(element, config) {
            this._element = element;
            this._popper = null;
            this._config = this._getConfig(config);
            this._menu = this._getMenuElement();
            this._inNavbar = this._detectNavbar();
            this._addEventListeners();
          }
          var _proto = Dropdown3.prototype;
          _proto.toggle = function toggle() {
            if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED)) {
              return;
            }
            var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW);
            Dropdown3._clearMenus();
            if (isActive) {
              return;
            }
            this.show(true);
          };
          _proto.show = function show(usePopper) {
            if (usePopper === void 0) {
              usePopper = false;
            }
            if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
              return;
            }
            var relatedTarget = {
              relatedTarget: this._element
            };
            var showEvent = $__default["default"].Event(EVENT_SHOW, relatedTarget);
            var parent = Dropdown3._getParentFromElement(this._element);
            $__default["default"](parent).trigger(showEvent);
            if (showEvent.isDefaultPrevented()) {
              return;
            }
            if (!this._inNavbar && usePopper) {
              if (typeof Popper__default["default"] === "undefined") {
                throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
              }
              var referenceElement = this._element;
              if (this._config.reference === "parent") {
                referenceElement = parent;
              } else if (Util__default["default"].isElement(this._config.reference)) {
                referenceElement = this._config.reference;
                if (typeof this._config.reference.jquery !== "undefined") {
                  referenceElement = this._config.reference[0];
                }
              }
              if (this._config.boundary !== "scrollParent") {
                $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC);
              }
              this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());
            }
            if ("ontouchstart" in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
              $__default["default"](document.body).children().on("mouseover", null, $__default["default"].noop);
            }
            this._element.focus();
            this._element.setAttribute("aria-expanded", true);
            $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
            $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_SHOWN, relatedTarget));
          };
          _proto.hide = function hide() {
            if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
              return;
            }
            var relatedTarget = {
              relatedTarget: this._element
            };
            var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
            var parent = Dropdown3._getParentFromElement(this._element);
            $__default["default"](parent).trigger(hideEvent);
            if (hideEvent.isDefaultPrevented()) {
              return;
            }
            if (this._popper) {
              this._popper.destroy();
            }
            $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
            $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
          };
          _proto.dispose = function dispose() {
            $__default["default"].removeData(this._element, DATA_KEY);
            $__default["default"](this._element).off(EVENT_KEY);
            this._element = null;
            this._menu = null;
            if (this._popper !== null) {
              this._popper.destroy();
              this._popper = null;
            }
          };
          _proto.update = function update() {
            this._inNavbar = this._detectNavbar();
            if (this._popper !== null) {
              this._popper.scheduleUpdate();
            }
          };
          _proto._addEventListeners = function _addEventListeners() {
            var _this = this;
            $__default["default"](this._element).on(EVENT_CLICK, function(event) {
              event.preventDefault();
              event.stopPropagation();
              _this.toggle();
            });
          };
          _proto._getConfig = function _getConfig(config) {
            config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config);
            Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
            return config;
          };
          _proto._getMenuElement = function _getMenuElement() {
            if (!this._menu) {
              var parent = Dropdown3._getParentFromElement(this._element);
              if (parent) {
                this._menu = parent.querySelector(SELECTOR_MENU);
              }
            }
            return this._menu;
          };
          _proto._getPlacement = function _getPlacement() {
            var $parentDropdown = $__default["default"](this._element.parentNode);
            var placement = PLACEMENT_BOTTOM;
            if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
              placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
            } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
              placement = PLACEMENT_RIGHT;
            } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
              placement = PLACEMENT_LEFT;
            } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
              placement = PLACEMENT_BOTTOMEND;
            }
            return placement;
          };
          _proto._detectNavbar = function _detectNavbar() {
            return $__default["default"](this._element).closest(".navbar").length > 0;
          };
          _proto._getOffset = function _getOffset() {
            var _this2 = this;
            var offset = {};
            if (typeof this._config.offset === "function") {
              offset.fn = function(data) {
                data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));
                return data;
              };
            } else {
              offset.offset = this._config.offset;
            }
            return offset;
          };
          _proto._getPopperConfig = function _getPopperConfig() {
            var popperConfig = {
              placement: this._getPlacement(),
              modifiers: {
                offset: this._getOffset(),
                flip: {
                  enabled: this._config.flip
                },
                preventOverflow: {
                  boundariesElement: this._config.boundary
                }
              }
            };
            if (this._config.display === "static") {
              popperConfig.modifiers.applyStyle = {
                enabled: false
              };
            }
            return _extends({}, popperConfig, this._config.popperConfig);
          };
          Dropdown3._jQueryInterface = function _jQueryInterface(config) {
            return this.each(function() {
              var data = $__default["default"](this).data(DATA_KEY);
              var _config = typeof config === "object" ? config : null;
              if (!data) {
                data = new Dropdown3(this, _config);
                $__default["default"](this).data(DATA_KEY, data);
              }
              if (typeof config === "string") {
                if (typeof data[config] === "undefined") {
                  throw new TypeError('No method named "' + config + '"');
                }
                data[config]();
              }
            });
          };
          Dropdown3._clearMenus = function _clearMenus(event) {
            if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === "keyup" && event.which !== TAB_KEYCODE)) {
              return;
            }
            var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
            for (var i2 = 0, len = toggles.length; i2 < len; i2++) {
              var parent = Dropdown3._getParentFromElement(toggles[i2]);
              var context = $__default["default"](toggles[i2]).data(DATA_KEY);
              var relatedTarget = {
                relatedTarget: toggles[i2]
              };
              if (event && event.type === "click") {
                relatedTarget.clickEvent = event;
              }
              if (!context) {
                continue;
              }
              var dropdownMenu = context._menu;
              if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW)) {
                continue;
              }
              if (event && (event.type === "click" && /input|textarea/i.test(event.target.tagName) || event.type === "keyup" && event.which === TAB_KEYCODE) && $__default["default"].contains(parent, event.target)) {
                continue;
              }
              var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
              $__default["default"](parent).trigger(hideEvent);
              if (hideEvent.isDefaultPrevented()) {
                continue;
              }
              if ("ontouchstart" in document.documentElement) {
                $__default["default"](document.body).children().off("mouseover", null, $__default["default"].noop);
              }
              toggles[i2].setAttribute("aria-expanded", "false");
              if (context._popper) {
                context._popper.destroy();
              }
              $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW);
              $__default["default"](parent).removeClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
            }
          };
          Dropdown3._getParentFromElement = function _getParentFromElement(element) {
            var parent;
            var selector = Util__default["default"].getSelectorFromElement(element);
            if (selector) {
              parent = document.querySelector(selector);
            }
            return parent || element.parentNode;
          };
          Dropdown3._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
            if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
              return;
            }
            if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED)) {
              return;
            }
            var parent = Dropdown3._getParentFromElement(this);
            var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW);
            if (!isActive && event.which === ESCAPE_KEYCODE) {
              return;
            }
            event.preventDefault();
            event.stopPropagation();
            if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {
              if (event.which === ESCAPE_KEYCODE) {
                $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger("focus");
              }
              $__default["default"](this).trigger("click");
              return;
            }
            var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function(item) {
              return $__default["default"](item).is(":visible");
            });
            if (items.length === 0) {
              return;
            }
            var index = items.indexOf(event.target);
            if (event.which === ARROW_UP_KEYCODE && index > 0) {
              index--;
            }
            if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
              index++;
            }
            if (index < 0) {
              index = 0;
            }
            items[index].focus();
          };
          _createClass(Dropdown3, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }, {
            key: "Default",
            get: function get() {
              return Default;
            }
          }, {
            key: "DefaultType",
            get: function get() {
              return DefaultType;
            }
          }]);
          return Dropdown3;
        }();
        $__default["default"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown2._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown2._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API + " " + EVENT_KEYUP_DATA_API, Dropdown2._clearMenus).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
          event.preventDefault();
          event.stopPropagation();
          Dropdown2._jQueryInterface.call($__default["default"](this), "toggle");
        }).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function(e) {
          e.stopPropagation();
        });
        $__default["default"].fn[NAME] = Dropdown2._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Dropdown2;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Dropdown2._jQueryInterface;
        };
        return Dropdown2;
      });
    }
  });

  // node_modules/bootstrap/js/dist/modal.js
  var require_modal = __commonJS({
    "node_modules/bootstrap/js/dist/modal.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Modal = factory(global2.jQuery, global2.Util));
      })(exports, function($2, Util2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        function _extends() {
          _extends = Object.assign ? Object.assign.bind() : function(target) {
            for (var i2 = 1; i2 < arguments.length; i2++) {
              var source = arguments[i2];
              for (var key in source) {
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                  target[key] = source[key];
                }
              }
            }
            return target;
          };
          return _extends.apply(this, arguments);
        }
        var NAME = "modal";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.modal";
        var EVENT_KEY = "." + DATA_KEY;
        var DATA_API_KEY = ".data-api";
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var ESCAPE_KEYCODE = 27;
        var CLASS_NAME_SCROLLABLE = "modal-dialog-scrollable";
        var CLASS_NAME_SCROLLBAR_MEASURER = "modal-scrollbar-measure";
        var CLASS_NAME_BACKDROP = "modal-backdrop";
        var CLASS_NAME_OPEN = "modal-open";
        var CLASS_NAME_FADE = "fade";
        var CLASS_NAME_SHOW = "show";
        var CLASS_NAME_STATIC = "modal-static";
        var EVENT_HIDE = "hide" + EVENT_KEY;
        var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY;
        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
        var EVENT_SHOW = "show" + EVENT_KEY;
        var EVENT_SHOWN = "shown" + EVENT_KEY;
        var EVENT_FOCUSIN = "focusin" + EVENT_KEY;
        var EVENT_RESIZE = "resize" + EVENT_KEY;
        var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
        var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY;
        var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
        var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
        var SELECTOR_DIALOG = ".modal-dialog";
        var SELECTOR_MODAL_BODY = ".modal-body";
        var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]';
        var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
        var SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top";
        var SELECTOR_STICKY_CONTENT = ".sticky-top";
        var Default = {
          backdrop: true,
          keyboard: true,
          focus: true,
          show: true
        };
        var DefaultType = {
          backdrop: "(boolean|string)",
          keyboard: "boolean",
          focus: "boolean",
          show: "boolean"
        };
        var Modal2 = /* @__PURE__ */ function() {
          function Modal3(element, config) {
            this._config = this._getConfig(config);
            this._element = element;
            this._dialog = element.querySelector(SELECTOR_DIALOG);
            this._backdrop = null;
            this._isShown = false;
            this._isBodyOverflowing = false;
            this._ignoreBackdropClick = false;
            this._isTransitioning = false;
            this._scrollbarWidth = 0;
          }
          var _proto = Modal3.prototype;
          _proto.toggle = function toggle(relatedTarget) {
            return this._isShown ? this.hide() : this.show(relatedTarget);
          };
          _proto.show = function show(relatedTarget) {
            var _this = this;
            if (this._isShown || this._isTransitioning) {
              return;
            }
            var showEvent = $__default["default"].Event(EVENT_SHOW, {
              relatedTarget
            });
            $__default["default"](this._element).trigger(showEvent);
            if (showEvent.isDefaultPrevented()) {
              return;
            }
            this._isShown = true;
            if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE)) {
              this._isTransitioning = true;
            }
            this._checkScrollbar();
            this._setScrollbar();
            this._adjustDialog();
            this._setEscapeEvent();
            this._setResizeEvent();
            $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function(event) {
              return _this.hide(event);
            });
            $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function() {
              $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function(event) {
                if ($__default["default"](event.target).is(_this._element)) {
                  _this._ignoreBackdropClick = true;
                }
              });
            });
            this._showBackdrop(function() {
              return _this._showElement(relatedTarget);
            });
          };
          _proto.hide = function hide(event) {
            var _this2 = this;
            if (event) {
              event.preventDefault();
            }
            if (!this._isShown || this._isTransitioning) {
              return;
            }
            var hideEvent = $__default["default"].Event(EVENT_HIDE);
            $__default["default"](this._element).trigger(hideEvent);
            if (!this._isShown || hideEvent.isDefaultPrevented()) {
              return;
            }
            this._isShown = false;
            var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
            if (transition) {
              this._isTransitioning = true;
            }
            this._setEscapeEvent();
            this._setResizeEvent();
            $__default["default"](document).off(EVENT_FOCUSIN);
            $__default["default"](this._element).removeClass(CLASS_NAME_SHOW);
            $__default["default"](this._element).off(EVENT_CLICK_DISMISS);
            $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
            if (transition) {
              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
              $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function(event2) {
                return _this2._hideModal(event2);
              }).emulateTransitionEnd(transitionDuration);
            } else {
              this._hideModal();
            }
          };
          _proto.dispose = function dispose() {
            [window, this._element, this._dialog].forEach(function(htmlElement) {
              return $__default["default"](htmlElement).off(EVENT_KEY);
            });
            $__default["default"](document).off(EVENT_FOCUSIN);
            $__default["default"].removeData(this._element, DATA_KEY);
            this._config = null;
            this._element = null;
            this._dialog = null;
            this._backdrop = null;
            this._isShown = null;
            this._isBodyOverflowing = null;
            this._ignoreBackdropClick = null;
            this._isTransitioning = null;
            this._scrollbarWidth = null;
          };
          _proto.handleUpdate = function handleUpdate() {
            this._adjustDialog();
          };
          _proto._getConfig = function _getConfig(config) {
            config = _extends({}, Default, config);
            Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
            return config;
          };
          _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
            var _this3 = this;
            var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED);
            $__default["default"](this._element).trigger(hideEventPrevented);
            if (hideEventPrevented.isDefaultPrevented()) {
              return;
            }
            var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
            if (!isModalOverflowing) {
              this._element.style.overflowY = "hidden";
            }
            this._element.classList.add(CLASS_NAME_STATIC);
            var modalTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._dialog);
            $__default["default"](this._element).off(Util__default["default"].TRANSITION_END);
            $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function() {
              _this3._element.classList.remove(CLASS_NAME_STATIC);
              if (!isModalOverflowing) {
                $__default["default"](_this3._element).one(Util__default["default"].TRANSITION_END, function() {
                  _this3._element.style.overflowY = "";
                }).emulateTransitionEnd(_this3._element, modalTransitionDuration);
              }
            }).emulateTransitionEnd(modalTransitionDuration);
            this._element.focus();
          };
          _proto._showElement = function _showElement(relatedTarget) {
            var _this4 = this;
            var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
            var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
            if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
              document.body.appendChild(this._element);
            }
            this._element.style.display = "block";
            this._element.removeAttribute("aria-hidden");
            this._element.setAttribute("aria-modal", true);
            this._element.setAttribute("role", "dialog");
            if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {
              modalBody.scrollTop = 0;
            } else {
              this._element.scrollTop = 0;
            }
            if (transition) {
              Util__default["default"].reflow(this._element);
            }
            $__default["default"](this._element).addClass(CLASS_NAME_SHOW);
            if (this._config.focus) {
              this._enforceFocus();
            }
            var shownEvent = $__default["default"].Event(EVENT_SHOWN, {
              relatedTarget
            });
            var transitionComplete = function transitionComplete2() {
              if (_this4._config.focus) {
                _this4._element.focus();
              }
              _this4._isTransitioning = false;
              $__default["default"](_this4._element).trigger(shownEvent);
            };
            if (transition) {
              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._dialog);
              $__default["default"](this._dialog).one(Util__default["default"].TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
            } else {
              transitionComplete();
            }
          };
          _proto._enforceFocus = function _enforceFocus() {
            var _this5 = this;
            $__default["default"](document).off(EVENT_FOCUSIN).on(EVENT_FOCUSIN, function(event) {
              if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) {
                _this5._element.focus();
              }
            });
          };
          _proto._setEscapeEvent = function _setEscapeEvent() {
            var _this6 = this;
            if (this._isShown) {
              $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function(event) {
                if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
                  event.preventDefault();
                  _this6.hide();
                } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
                  _this6._triggerBackdropTransition();
                }
              });
            } else if (!this._isShown) {
              $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS);
            }
          };
          _proto._setResizeEvent = function _setResizeEvent() {
            var _this7 = this;
            if (this._isShown) {
              $__default["default"](window).on(EVENT_RESIZE, function(event) {
                return _this7.handleUpdate(event);
              });
            } else {
              $__default["default"](window).off(EVENT_RESIZE);
            }
          };
          _proto._hideModal = function _hideModal() {
            var _this8 = this;
            this._element.style.display = "none";
            this._element.setAttribute("aria-hidden", true);
            this._element.removeAttribute("aria-modal");
            this._element.removeAttribute("role");
            this._isTransitioning = false;
            this._showBackdrop(function() {
              $__default["default"](document.body).removeClass(CLASS_NAME_OPEN);
              _this8._resetAdjustments();
              _this8._resetScrollbar();
              $__default["default"](_this8._element).trigger(EVENT_HIDDEN);
            });
          };
          _proto._removeBackdrop = function _removeBackdrop() {
            if (this._backdrop) {
              $__default["default"](this._backdrop).remove();
              this._backdrop = null;
            }
          };
          _proto._showBackdrop = function _showBackdrop(callback) {
            var _this9 = this;
            var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : "";
            if (this._isShown && this._config.backdrop) {
              this._backdrop = document.createElement("div");
              this._backdrop.className = CLASS_NAME_BACKDROP;
              if (animate) {
                this._backdrop.classList.add(animate);
              }
              $__default["default"](this._backdrop).appendTo(document.body);
              $__default["default"](this._element).on(EVENT_CLICK_DISMISS, function(event) {
                if (_this9._ignoreBackdropClick) {
                  _this9._ignoreBackdropClick = false;
                  return;
                }
                if (event.target !== event.currentTarget) {
                  return;
                }
                if (_this9._config.backdrop === "static") {
                  _this9._triggerBackdropTransition();
                } else {
                  _this9.hide();
                }
              });
              if (animate) {
                Util__default["default"].reflow(this._backdrop);
              }
              $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW);
              if (!callback) {
                return;
              }
              if (!animate) {
                callback();
                return;
              }
              var backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
              $__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
            } else if (!this._isShown && this._backdrop) {
              $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW);
              var callbackRemove = function callbackRemove2() {
                _this9._removeBackdrop();
                if (callback) {
                  callback();
                }
              };
              if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE)) {
                var _backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
                $__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
              } else {
                callbackRemove();
              }
            } else if (callback) {
              callback();
            }
          };
          _proto._adjustDialog = function _adjustDialog() {
            var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
            if (!this._isBodyOverflowing && isModalOverflowing) {
              this._element.style.paddingLeft = this._scrollbarWidth + "px";
            }
            if (this._isBodyOverflowing && !isModalOverflowing) {
              this._element.style.paddingRight = this._scrollbarWidth + "px";
            }
          };
          _proto._resetAdjustments = function _resetAdjustments() {
            this._element.style.paddingLeft = "";
            this._element.style.paddingRight = "";
          };
          _proto._checkScrollbar = function _checkScrollbar() {
            var rect = document.body.getBoundingClientRect();
            this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
            this._scrollbarWidth = this._getScrollbarWidth();
          };
          _proto._setScrollbar = function _setScrollbar() {
            var _this10 = this;
            if (this._isBodyOverflowing) {
              var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
              var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT));
              $__default["default"](fixedContent).each(function(index, element) {
                var actualPadding2 = element.style.paddingRight;
                var calculatedPadding2 = $__default["default"](element).css("padding-right");
                $__default["default"](element).data("padding-right", actualPadding2).css("padding-right", parseFloat(calculatedPadding2) + _this10._scrollbarWidth + "px");
              });
              $__default["default"](stickyContent).each(function(index, element) {
                var actualMargin = element.style.marginRight;
                var calculatedMargin = $__default["default"](element).css("margin-right");
                $__default["default"](element).data("margin-right", actualMargin).css("margin-right", parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
              });
              var actualPadding = document.body.style.paddingRight;
              var calculatedPadding = $__default["default"](document.body).css("padding-right");
              $__default["default"](document.body).data("padding-right", actualPadding).css("padding-right", parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
            }
            $__default["default"](document.body).addClass(CLASS_NAME_OPEN);
          };
          _proto._resetScrollbar = function _resetScrollbar() {
            var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
            $__default["default"](fixedContent).each(function(index, element) {
              var padding2 = $__default["default"](element).data("padding-right");
              $__default["default"](element).removeData("padding-right");
              element.style.paddingRight = padding2 ? padding2 : "";
            });
            var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
            $__default["default"](elements).each(function(index, element) {
              var margin = $__default["default"](element).data("margin-right");
              if (typeof margin !== "undefined") {
                $__default["default"](element).css("margin-right", margin).removeData("margin-right");
              }
            });
            var padding = $__default["default"](document.body).data("padding-right");
            $__default["default"](document.body).removeData("padding-right");
            document.body.style.paddingRight = padding ? padding : "";
          };
          _proto._getScrollbarWidth = function _getScrollbarWidth() {
            var scrollDiv = document.createElement("div");
            scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
            document.body.appendChild(scrollDiv);
            var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
            document.body.removeChild(scrollDiv);
            return scrollbarWidth;
          };
          Modal3._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
            return this.each(function() {
              var data = $__default["default"](this).data(DATA_KEY);
              var _config = _extends({}, Default, $__default["default"](this).data(), typeof config === "object" && config ? config : {});
              if (!data) {
                data = new Modal3(this, _config);
                $__default["default"](this).data(DATA_KEY, data);
              }
              if (typeof config === "string") {
                if (typeof data[config] === "undefined") {
                  throw new TypeError('No method named "' + config + '"');
                }
                data[config](relatedTarget);
              } else if (_config.show) {
                data.show(relatedTarget);
              }
            });
          };
          _createClass(Modal3, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }, {
            key: "Default",
            get: function get() {
              return Default;
            }
          }]);
          return Modal3;
        }();
        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
          var _this11 = this;
          var target;
          var selector = Util__default["default"].getSelectorFromElement(this);
          if (selector) {
            target = document.querySelector(selector);
          }
          var config = $__default["default"](target).data(DATA_KEY) ? "toggle" : _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
          if (this.tagName === "A" || this.tagName === "AREA") {
            event.preventDefault();
          }
          var $target = $__default["default"](target).one(EVENT_SHOW, function(showEvent) {
            if (showEvent.isDefaultPrevented()) {
              return;
            }
            $target.one(EVENT_HIDDEN, function() {
              if ($__default["default"](_this11).is(":visible")) {
                _this11.focus();
              }
            });
          });
          Modal2._jQueryInterface.call($__default["default"](target), config, this);
        });
        $__default["default"].fn[NAME] = Modal2._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Modal2;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Modal2._jQueryInterface;
        };
        return Modal2;
      });
    }
  });

  // node_modules/bootstrap/js/dist/tooltip.js
  var require_tooltip = __commonJS({
    "node_modules/bootstrap/js/dist/tooltip.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_popper(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "popper.js", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Tooltip = factory(global2.jQuery, global2.Popper, global2.Util));
      })(exports, function($2, Popper, Util2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Popper__default = /* @__PURE__ */ _interopDefaultLegacy(Popper);
        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        function _extends() {
          _extends = Object.assign ? Object.assign.bind() : function(target) {
            for (var i2 = 1; i2 < arguments.length; i2++) {
              var source = arguments[i2];
              for (var key in source) {
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                  target[key] = source[key];
                }
              }
            }
            return target;
          };
          return _extends.apply(this, arguments);
        }
        var uriAttrs = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"];
        var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
        var DefaultWhitelist = {
          "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN],
          a: ["target", "href", "title", "rel"],
          area: [],
          b: [],
          br: [],
          col: [],
          code: [],
          div: [],
          em: [],
          hr: [],
          h1: [],
          h2: [],
          h3: [],
          h4: [],
          h5: [],
          h6: [],
          i: [],
          img: ["src", "srcset", "alt", "title", "width", "height"],
          li: [],
          ol: [],
          p: [],
          pre: [],
          s: [],
          small: [],
          span: [],
          sub: [],
          sup: [],
          strong: [],
          u: [],
          ul: []
        };
        var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
        var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
        function allowedAttribute(attr, allowedAttributeList) {
          var attrName = attr.nodeName.toLowerCase();
          if (allowedAttributeList.indexOf(attrName) !== -1) {
            if (uriAttrs.indexOf(attrName) !== -1) {
              return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));
            }
            return true;
          }
          var regExp = allowedAttributeList.filter(function(attrRegex) {
            return attrRegex instanceof RegExp;
          });
          for (var i2 = 0, len = regExp.length; i2 < len; i2++) {
            if (regExp[i2].test(attrName)) {
              return true;
            }
          }
          return false;
        }
        function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
          if (unsafeHtml.length === 0) {
            return unsafeHtml;
          }
          if (sanitizeFn && typeof sanitizeFn === "function") {
            return sanitizeFn(unsafeHtml);
          }
          var domParser = new window.DOMParser();
          var createdDocument = domParser.parseFromString(unsafeHtml, "text/html");
          var whitelistKeys = Object.keys(whiteList);
          var elements = [].slice.call(createdDocument.body.querySelectorAll("*"));
          var _loop = function _loop2(i3, len2) {
            var el = elements[i3];
            var elName = el.nodeName.toLowerCase();
            if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
              el.parentNode.removeChild(el);
              return "continue";
            }
            var attributeList = [].slice.call(el.attributes);
            var whitelistedAttributes = [].concat(whiteList["*"] || [], whiteList[elName] || []);
            attributeList.forEach(function(attr) {
              if (!allowedAttribute(attr, whitelistedAttributes)) {
                el.removeAttribute(attr.nodeName);
              }
            });
          };
          for (var i2 = 0, len = elements.length; i2 < len; i2++) {
            var _ret = _loop(i2);
            if (_ret === "continue")
              continue;
          }
          return createdDocument.body.innerHTML;
        }
        var NAME = "tooltip";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.tooltip";
        var EVENT_KEY = "." + DATA_KEY;
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var CLASS_PREFIX = "bs-tooltip";
        var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", "g");
        var DISALLOWED_ATTRIBUTES = ["sanitize", "whiteList", "sanitizeFn"];
        var CLASS_NAME_FADE = "fade";
        var CLASS_NAME_SHOW = "show";
        var HOVER_STATE_SHOW = "show";
        var HOVER_STATE_OUT = "out";
        var SELECTOR_TOOLTIP_INNER = ".tooltip-inner";
        var SELECTOR_ARROW = ".arrow";
        var TRIGGER_HOVER = "hover";
        var TRIGGER_FOCUS = "focus";
        var TRIGGER_CLICK = "click";
        var TRIGGER_MANUAL = "manual";
        var AttachmentMap = {
          AUTO: "auto",
          TOP: "top",
          RIGHT: "right",
          BOTTOM: "bottom",
          LEFT: "left"
        };
        var Default = {
          animation: true,
          template: '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',
          trigger: "hover focus",
          title: "",
          delay: 0,
          html: false,
          selector: false,
          placement: "top",
          offset: 0,
          container: false,
          fallbackPlacement: "flip",
          boundary: "scrollParent",
          customClass: "",
          sanitize: true,
          sanitizeFn: null,
          whiteList: DefaultWhitelist,
          popperConfig: null
        };
        var DefaultType = {
          animation: "boolean",
          template: "string",
          title: "(string|element|function)",
          trigger: "string",
          delay: "(number|object)",
          html: "boolean",
          selector: "(string|boolean)",
          placement: "(string|function)",
          offset: "(number|string|function)",
          container: "(string|element|boolean)",
          fallbackPlacement: "(string|array)",
          boundary: "(string|element)",
          customClass: "(string|function)",
          sanitize: "boolean",
          sanitizeFn: "(null|function)",
          whiteList: "object",
          popperConfig: "(null|object)"
        };
        var Event = {
          HIDE: "hide" + EVENT_KEY,
          HIDDEN: "hidden" + EVENT_KEY,
          SHOW: "show" + EVENT_KEY,
          SHOWN: "shown" + EVENT_KEY,
          INSERTED: "inserted" + EVENT_KEY,
          CLICK: "click" + EVENT_KEY,
          FOCUSIN: "focusin" + EVENT_KEY,
          FOCUSOUT: "focusout" + EVENT_KEY,
          MOUSEENTER: "mouseenter" + EVENT_KEY,
          MOUSELEAVE: "mouseleave" + EVENT_KEY
        };
        var Tooltip2 = /* @__PURE__ */ function() {
          function Tooltip3(element, config) {
            if (typeof Popper__default["default"] === "undefined") {
              throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
            }
            this._isEnabled = true;
            this._timeout = 0;
            this._hoverState = "";
            this._activeTrigger = {};
            this._popper = null;
            this.element = element;
            this.config = this._getConfig(config);
            this.tip = null;
            this._setListeners();
          }
          var _proto = Tooltip3.prototype;
          _proto.enable = function enable() {
            this._isEnabled = true;
          };
          _proto.disable = function disable() {
            this._isEnabled = false;
          };
          _proto.toggleEnabled = function toggleEnabled() {
            this._isEnabled = !this._isEnabled;
          };
          _proto.toggle = function toggle(event) {
            if (!this._isEnabled) {
              return;
            }
            if (event) {
              var dataKey = this.constructor.DATA_KEY;
              var context = $__default["default"](event.currentTarget).data(dataKey);
              if (!context) {
                context = new this.constructor(event.currentTarget, this._getDelegateConfig());
                $__default["default"](event.currentTarget).data(dataKey, context);
              }
              context._activeTrigger.click = !context._activeTrigger.click;
              if (context._isWithActiveTrigger()) {
                context._enter(null, context);
              } else {
                context._leave(null, context);
              }
            } else {
              if ($__default["default"](this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {
                this._leave(null, this);
                return;
              }
              this._enter(null, this);
            }
          };
          _proto.dispose = function dispose() {
            clearTimeout(this._timeout);
            $__default["default"].removeData(this.element, this.constructor.DATA_KEY);
            $__default["default"](this.element).off(this.constructor.EVENT_KEY);
            $__default["default"](this.element).closest(".modal").off("hide.bs.modal", this._hideModalHandler);
            if (this.tip) {
              $__default["default"](this.tip).remove();
            }
            this._isEnabled = null;
            this._timeout = null;
            this._hoverState = null;
            this._activeTrigger = null;
            if (this._popper) {
              this._popper.destroy();
            }
            this._popper = null;
            this.element = null;
            this.config = null;
            this.tip = null;
          };
          _proto.show = function show() {
            var _this = this;
            if ($__default["default"](this.element).css("display") === "none") {
              throw new Error("Please use show on visible elements");
            }
            var showEvent = $__default["default"].Event(this.constructor.Event.SHOW);
            if (this.isWithContent() && this._isEnabled) {
              $__default["default"](this.element).trigger(showEvent);
              var shadowRoot = Util__default["default"].findShadowRoot(this.element);
              var isInTheDom = $__default["default"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
              if (showEvent.isDefaultPrevented() || !isInTheDom) {
                return;
              }
              var tip = this.getTipElement();
              var tipId = Util__default["default"].getUID(this.constructor.NAME);
              tip.setAttribute("id", tipId);
              this.element.setAttribute("aria-describedby", tipId);
              this.setContent();
              if (this.config.animation) {
                $__default["default"](tip).addClass(CLASS_NAME_FADE);
              }
              var placement = typeof this.config.placement === "function" ? this.config.placement.call(this, tip, this.element) : this.config.placement;
              var attachment = this._getAttachment(placement);
              this.addAttachmentClass(attachment);
              var container = this._getContainer();
              $__default["default"](tip).data(this.constructor.DATA_KEY, this);
              if (!$__default["default"].contains(this.element.ownerDocument.documentElement, this.tip)) {
                $__default["default"](tip).appendTo(container);
              }
              $__default["default"](this.element).trigger(this.constructor.Event.INSERTED);
              this._popper = new Popper__default["default"](this.element, tip, this._getPopperConfig(attachment));
              $__default["default"](tip).addClass(CLASS_NAME_SHOW);
              $__default["default"](tip).addClass(this.config.customClass);
              if ("ontouchstart" in document.documentElement) {
                $__default["default"](document.body).children().on("mouseover", null, $__default["default"].noop);
              }
              var complete = function complete2() {
                if (_this.config.animation) {
                  _this._fixTransition();
                }
                var prevHoverState = _this._hoverState;
                _this._hoverState = null;
                $__default["default"](_this.element).trigger(_this.constructor.Event.SHOWN);
                if (prevHoverState === HOVER_STATE_OUT) {
                  _this._leave(null, _this);
                }
              };
              if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE)) {
                var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this.tip);
                $__default["default"](this.tip).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
              } else {
                complete();
              }
            }
          };
          _proto.hide = function hide(callback) {
            var _this2 = this;
            var tip = this.getTipElement();
            var hideEvent = $__default["default"].Event(this.constructor.Event.HIDE);
            var complete = function complete2() {
              if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
                tip.parentNode.removeChild(tip);
              }
              _this2._cleanTipClass();
              _this2.element.removeAttribute("aria-describedby");
              $__default["default"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);
              if (_this2._popper !== null) {
                _this2._popper.destroy();
              }
              if (callback) {
                callback();
              }
            };
            $__default["default"](this.element).trigger(hideEvent);
            if (hideEvent.isDefaultPrevented()) {
              return;
            }
            $__default["default"](tip).removeClass(CLASS_NAME_SHOW);
            if ("ontouchstart" in document.documentElement) {
              $__default["default"](document.body).children().off("mouseover", null, $__default["default"].noop);
            }
            this._activeTrigger[TRIGGER_CLICK] = false;
            this._activeTrigger[TRIGGER_FOCUS] = false;
            this._activeTrigger[TRIGGER_HOVER] = false;
            if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE)) {
              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(tip);
              $__default["default"](tip).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
            } else {
              complete();
            }
            this._hoverState = "";
          };
          _proto.update = function update() {
            if (this._popper !== null) {
              this._popper.scheduleUpdate();
            }
          };
          _proto.isWithContent = function isWithContent() {
            return Boolean(this.getTitle());
          };
          _proto.addAttachmentClass = function addAttachmentClass(attachment) {
            $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
          };
          _proto.getTipElement = function getTipElement() {
            this.tip = this.tip || $__default["default"](this.config.template)[0];
            return this.tip;
          };
          _proto.setContent = function setContent() {
            var tip = this.getTipElement();
            this.setElementContent($__default["default"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());
            $__default["default"](tip).removeClass(CLASS_NAME_FADE + " " + CLASS_NAME_SHOW);
          };
          _proto.setElementContent = function setElementContent($element, content) {
            if (typeof content === "object" && (content.nodeType || content.jquery)) {
              if (this.config.html) {
                if (!$__default["default"](content).parent().is($element)) {
                  $element.empty().append(content);
                }
              } else {
                $element.text($__default["default"](content).text());
              }
              return;
            }
            if (this.config.html) {
              if (this.config.sanitize) {
                content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
              }
              $element.html(content);
            } else {
              $element.text(content);
            }
          };
          _proto.getTitle = function getTitle() {
            var title = this.element.getAttribute("data-original-title");
            if (!title) {
              title = typeof this.config.title === "function" ? this.config.title.call(this.element) : this.config.title;
            }
            return title;
          };
          _proto._getPopperConfig = function _getPopperConfig(attachment) {
            var _this3 = this;
            var defaultBsConfig = {
              placement: attachment,
              modifiers: {
                offset: this._getOffset(),
                flip: {
                  behavior: this.config.fallbackPlacement
                },
                arrow: {
                  element: SELECTOR_ARROW
                },
                preventOverflow: {
                  boundariesElement: this.config.boundary
                }
              },
              onCreate: function onCreate(data) {
                if (data.originalPlacement !== data.placement) {
                  _this3._handlePopperPlacementChange(data);
                }
              },
              onUpdate: function onUpdate(data) {
                return _this3._handlePopperPlacementChange(data);
              }
            };
            return _extends({}, defaultBsConfig, this.config.popperConfig);
          };
          _proto._getOffset = function _getOffset() {
            var _this4 = this;
            var offset = {};
            if (typeof this.config.offset === "function") {
              offset.fn = function(data) {
                data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));
                return data;
              };
            } else {
              offset.offset = this.config.offset;
            }
            return offset;
          };
          _proto._getContainer = function _getContainer() {
            if (this.config.container === false) {
              return document.body;
            }
            if (Util__default["default"].isElement(this.config.container)) {
              return $__default["default"](this.config.container);
            }
            return $__default["default"](document).find(this.config.container);
          };
          _proto._getAttachment = function _getAttachment(placement) {
            return AttachmentMap[placement.toUpperCase()];
          };
          _proto._setListeners = function _setListeners() {
            var _this5 = this;
            var triggers = this.config.trigger.split(" ");
            triggers.forEach(function(trigger) {
              if (trigger === "click") {
                $__default["default"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function(event) {
                  return _this5.toggle(event);
                });
              } else if (trigger !== TRIGGER_MANUAL) {
                var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
                var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
                $__default["default"](_this5.element).on(eventIn, _this5.config.selector, function(event) {
                  return _this5._enter(event);
                }).on(eventOut, _this5.config.selector, function(event) {
                  return _this5._leave(event);
                });
              }
            });
            this._hideModalHandler = function() {
              if (_this5.element) {
                _this5.hide();
              }
            };
            $__default["default"](this.element).closest(".modal").on("hide.bs.modal", this._hideModalHandler);
            if (this.config.selector) {
              this.config = _extends({}, this.config, {
                trigger: "manual",
                selector: ""
              });
            } else {
              this._fixTitle();
            }
          };
          _proto._fixTitle = function _fixTitle() {
            var titleType = typeof this.element.getAttribute("data-original-title");
            if (this.element.getAttribute("title") || titleType !== "string") {
              this.element.setAttribute("data-original-title", this.element.getAttribute("title") || "");
              this.element.setAttribute("title", "");
            }
          };
          _proto._enter = function _enter(event, context) {
            var dataKey = this.constructor.DATA_KEY;
            context = context || $__default["default"](event.currentTarget).data(dataKey);
            if (!context) {
              context = new this.constructor(event.currentTarget, this._getDelegateConfig());
              $__default["default"](event.currentTarget).data(dataKey, context);
            }
            if (event) {
              context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
            }
            if ($__default["default"](context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {
              context._hoverState = HOVER_STATE_SHOW;
              return;
            }
            clearTimeout(context._timeout);
            context._hoverState = HOVER_STATE_SHOW;
            if (!context.config.delay || !context.config.delay.show) {
              context.show();
              return;
            }
            context._timeout = setTimeout(function() {
              if (context._hoverState === HOVER_STATE_SHOW) {
                context.show();
              }
            }, context.config.delay.show);
          };
          _proto._leave = function _leave(event, context) {
            var dataKey = this.constructor.DATA_KEY;
            context = context || $__default["default"](event.currentTarget).data(dataKey);
            if (!context) {
              context = new this.constructor(event.currentTarget, this._getDelegateConfig());
              $__default["default"](event.currentTarget).data(dataKey, context);
            }
            if (event) {
              context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
            }
            if (context._isWithActiveTrigger()) {
              return;
            }
            clearTimeout(context._timeout);
            context._hoverState = HOVER_STATE_OUT;
            if (!context.config.delay || !context.config.delay.hide) {
              context.hide();
              return;
            }
            context._timeout = setTimeout(function() {
              if (context._hoverState === HOVER_STATE_OUT) {
                context.hide();
              }
            }, context.config.delay.hide);
          };
          _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
            for (var trigger in this._activeTrigger) {
              if (this._activeTrigger[trigger]) {
                return true;
              }
            }
            return false;
          };
          _proto._getConfig = function _getConfig(config) {
            var dataAttributes = $__default["default"](this.element).data();
            Object.keys(dataAttributes).forEach(function(dataAttr) {
              if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
                delete dataAttributes[dataAttr];
              }
            });
            config = _extends({}, this.constructor.Default, dataAttributes, typeof config === "object" && config ? config : {});
            if (typeof config.delay === "number") {
              config.delay = {
                show: config.delay,
                hide: config.delay
              };
            }
            if (typeof config.title === "number") {
              config.title = config.title.toString();
            }
            if (typeof config.content === "number") {
              config.content = config.content.toString();
            }
            Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
            if (config.sanitize) {
              config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
            }
            return config;
          };
          _proto._getDelegateConfig = function _getDelegateConfig() {
            var config = {};
            if (this.config) {
              for (var key in this.config) {
                if (this.constructor.Default[key] !== this.config[key]) {
                  config[key] = this.config[key];
                }
              }
            }
            return config;
          };
          _proto._cleanTipClass = function _cleanTipClass() {
            var $tip = $__default["default"](this.getTipElement());
            var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX);
            if (tabClass !== null && tabClass.length) {
              $tip.removeClass(tabClass.join(""));
            }
          };
          _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
            this.tip = popperData.instance.popper;
            this._cleanTipClass();
            this.addAttachmentClass(this._getAttachment(popperData.placement));
          };
          _proto._fixTransition = function _fixTransition() {
            var tip = this.getTipElement();
            var initConfigAnimation = this.config.animation;
            if (tip.getAttribute("x-placement") !== null) {
              return;
            }
            $__default["default"](tip).removeClass(CLASS_NAME_FADE);
            this.config.animation = false;
            this.hide();
            this.show();
            this.config.animation = initConfigAnimation;
          };
          Tooltip3._jQueryInterface = function _jQueryInterface(config) {
            return this.each(function() {
              var $element = $__default["default"](this);
              var data = $element.data(DATA_KEY);
              var _config = typeof config === "object" && config;
              if (!data && /dispose|hide/.test(config)) {
                return;
              }
              if (!data) {
                data = new Tooltip3(this, _config);
                $element.data(DATA_KEY, data);
              }
              if (typeof config === "string") {
                if (typeof data[config] === "undefined") {
                  throw new TypeError('No method named "' + config + '"');
                }
                data[config]();
              }
            });
          };
          _createClass(Tooltip3, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }, {
            key: "Default",
            get: function get() {
              return Default;
            }
          }, {
            key: "NAME",
            get: function get() {
              return NAME;
            }
          }, {
            key: "DATA_KEY",
            get: function get() {
              return DATA_KEY;
            }
          }, {
            key: "Event",
            get: function get() {
              return Event;
            }
          }, {
            key: "EVENT_KEY",
            get: function get() {
              return EVENT_KEY;
            }
          }, {
            key: "DefaultType",
            get: function get() {
              return DefaultType;
            }
          }]);
          return Tooltip3;
        }();
        $__default["default"].fn[NAME] = Tooltip2._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Tooltip2;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Tooltip2._jQueryInterface;
        };
        return Tooltip2;
      });
    }
  });

  // node_modules/bootstrap/js/dist/popover.js
  var require_popover = __commonJS({
    "node_modules/bootstrap/js/dist/popover.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_tooltip()) : typeof define === "function" && define.amd ? define(["jquery", "./tooltip"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Popover = factory(global2.jQuery, global2.Tooltip));
      })(exports, function($2, Tooltip2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Tooltip__default = /* @__PURE__ */ _interopDefaultLegacy(Tooltip2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        function _extends() {
          _extends = Object.assign ? Object.assign.bind() : function(target) {
            for (var i2 = 1; i2 < arguments.length; i2++) {
              var source = arguments[i2];
              for (var key in source) {
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                  target[key] = source[key];
                }
              }
            }
            return target;
          };
          return _extends.apply(this, arguments);
        }
        function _inheritsLoose(subClass, superClass) {
          subClass.prototype = Object.create(superClass.prototype);
          subClass.prototype.constructor = subClass;
          _setPrototypeOf(subClass, superClass);
        }
        function _setPrototypeOf(o, p) {
          _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
            o2.__proto__ = p2;
            return o2;
          };
          return _setPrototypeOf(o, p);
        }
        var NAME = "popover";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.popover";
        var EVENT_KEY = "." + DATA_KEY;
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var CLASS_PREFIX = "bs-popover";
        var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", "g");
        var CLASS_NAME_FADE = "fade";
        var CLASS_NAME_SHOW = "show";
        var SELECTOR_TITLE = ".popover-header";
        var SELECTOR_CONTENT = ".popover-body";
        var Default = _extends({}, Tooltip__default["default"].Default, {
          placement: "right",
          trigger: "click",
          content: "",
          template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'
        });
        var DefaultType = _extends({}, Tooltip__default["default"].DefaultType, {
          content: "(string|element|function)"
        });
        var Event = {
          HIDE: "hide" + EVENT_KEY,
          HIDDEN: "hidden" + EVENT_KEY,
          SHOW: "show" + EVENT_KEY,
          SHOWN: "shown" + EVENT_KEY,
          INSERTED: "inserted" + EVENT_KEY,
          CLICK: "click" + EVENT_KEY,
          FOCUSIN: "focusin" + EVENT_KEY,
          FOCUSOUT: "focusout" + EVENT_KEY,
          MOUSEENTER: "mouseenter" + EVENT_KEY,
          MOUSELEAVE: "mouseleave" + EVENT_KEY
        };
        var Popover2 = /* @__PURE__ */ function(_Tooltip) {
          _inheritsLoose(Popover3, _Tooltip);
          function Popover3() {
            return _Tooltip.apply(this, arguments) || this;
          }
          var _proto = Popover3.prototype;
          _proto.isWithContent = function isWithContent() {
            return this.getTitle() || this._getContent();
          };
          _proto.addAttachmentClass = function addAttachmentClass(attachment) {
            $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
          };
          _proto.getTipElement = function getTipElement() {
            this.tip = this.tip || $__default["default"](this.config.template)[0];
            return this.tip;
          };
          _proto.setContent = function setContent() {
            var $tip = $__default["default"](this.getTipElement());
            this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());
            var content = this._getContent();
            if (typeof content === "function") {
              content = content.call(this.element);
            }
            this.setElementContent($tip.find(SELECTOR_CONTENT), content);
            $tip.removeClass(CLASS_NAME_FADE + " " + CLASS_NAME_SHOW);
          };
          _proto._getContent = function _getContent() {
            return this.element.getAttribute("data-content") || this.config.content;
          };
          _proto._cleanTipClass = function _cleanTipClass() {
            var $tip = $__default["default"](this.getTipElement());
            var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX);
            if (tabClass !== null && tabClass.length > 0) {
              $tip.removeClass(tabClass.join(""));
            }
          };
          Popover3._jQueryInterface = function _jQueryInterface(config) {
            return this.each(function() {
              var data = $__default["default"](this).data(DATA_KEY);
              var _config = typeof config === "object" ? config : null;
              if (!data && /dispose|hide/.test(config)) {
                return;
              }
              if (!data) {
                data = new Popover3(this, _config);
                $__default["default"](this).data(DATA_KEY, data);
              }
              if (typeof config === "string") {
                if (typeof data[config] === "undefined") {
                  throw new TypeError('No method named "' + config + '"');
                }
                data[config]();
              }
            });
          };
          _createClass(Popover3, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }, {
            key: "Default",
            get: function get() {
              return Default;
            }
          }, {
            key: "NAME",
            get: function get() {
              return NAME;
            }
          }, {
            key: "DATA_KEY",
            get: function get() {
              return DATA_KEY;
            }
          }, {
            key: "Event",
            get: function get() {
              return Event;
            }
          }, {
            key: "EVENT_KEY",
            get: function get() {
              return EVENT_KEY;
            }
          }, {
            key: "DefaultType",
            get: function get() {
              return DefaultType;
            }
          }]);
          return Popover3;
        }(Tooltip__default["default"]);
        $__default["default"].fn[NAME] = Popover2._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Popover2;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Popover2._jQueryInterface;
        };
        return Popover2;
      });
    }
  });

  // node_modules/bootstrap/js/dist/scrollspy.js
  var require_scrollspy = __commonJS({
    "node_modules/bootstrap/js/dist/scrollspy.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.ScrollSpy = factory(global2.jQuery, global2.Util));
      })(exports, function($2, Util2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        function _extends() {
          _extends = Object.assign ? Object.assign.bind() : function(target) {
            for (var i2 = 1; i2 < arguments.length; i2++) {
              var source = arguments[i2];
              for (var key in source) {
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                  target[key] = source[key];
                }
              }
            }
            return target;
          };
          return _extends.apply(this, arguments);
        }
        var NAME = "scrollspy";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.scrollspy";
        var EVENT_KEY = "." + DATA_KEY;
        var DATA_API_KEY = ".data-api";
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var CLASS_NAME_DROPDOWN_ITEM = "dropdown-item";
        var CLASS_NAME_ACTIVE = "active";
        var EVENT_ACTIVATE = "activate" + EVENT_KEY;
        var EVENT_SCROLL = "scroll" + EVENT_KEY;
        var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
        var METHOD_OFFSET = "offset";
        var METHOD_POSITION = "position";
        var SELECTOR_DATA_SPY = '[data-spy="scroll"]';
        var SELECTOR_NAV_LIST_GROUP = ".nav, .list-group";
        var SELECTOR_NAV_LINKS = ".nav-link";
        var SELECTOR_NAV_ITEMS = ".nav-item";
        var SELECTOR_LIST_ITEMS = ".list-group-item";
        var SELECTOR_DROPDOWN = ".dropdown";
        var SELECTOR_DROPDOWN_ITEMS = ".dropdown-item";
        var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
        var Default = {
          offset: 10,
          method: "auto",
          target: ""
        };
        var DefaultType = {
          offset: "number",
          method: "string",
          target: "(string|element)"
        };
        var ScrollSpy = /* @__PURE__ */ function() {
          function ScrollSpy2(element, config) {
            var _this = this;
            this._element = element;
            this._scrollElement = element.tagName === "BODY" ? window : element;
            this._config = this._getConfig(config);
            this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS);
            this._offsets = [];
            this._targets = [];
            this._activeTarget = null;
            this._scrollHeight = 0;
            $__default["default"](this._scrollElement).on(EVENT_SCROLL, function(event) {
              return _this._process(event);
            });
            this.refresh();
            this._process();
          }
          var _proto = ScrollSpy2.prototype;
          _proto.refresh = function refresh() {
            var _this2 = this;
            var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
            var offsetMethod = this._config.method === "auto" ? autoMethod : this._config.method;
            var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
            this._offsets = [];
            this._targets = [];
            this._scrollHeight = this._getScrollHeight();
            var targets = [].slice.call(document.querySelectorAll(this._selector));
            targets.map(function(element) {
              var target;
              var targetSelector = Util__default["default"].getSelectorFromElement(element);
              if (targetSelector) {
                target = document.querySelector(targetSelector);
              }
              if (target) {
                var targetBCR = target.getBoundingClientRect();
                if (targetBCR.width || targetBCR.height) {
                  return [$__default["default"](target)[offsetMethod]().top + offsetBase, targetSelector];
                }
              }
              return null;
            }).filter(Boolean).sort(function(a, b) {
              return a[0] - b[0];
            }).forEach(function(item) {
              _this2._offsets.push(item[0]);
              _this2._targets.push(item[1]);
            });
          };
          _proto.dispose = function dispose() {
            $__default["default"].removeData(this._element, DATA_KEY);
            $__default["default"](this._scrollElement).off(EVENT_KEY);
            this._element = null;
            this._scrollElement = null;
            this._config = null;
            this._selector = null;
            this._offsets = null;
            this._targets = null;
            this._activeTarget = null;
            this._scrollHeight = null;
          };
          _proto._getConfig = function _getConfig(config) {
            config = _extends({}, Default, typeof config === "object" && config ? config : {});
            if (typeof config.target !== "string" && Util__default["default"].isElement(config.target)) {
              var id = $__default["default"](config.target).attr("id");
              if (!id) {
                id = Util__default["default"].getUID(NAME);
                $__default["default"](config.target).attr("id", id);
              }
              config.target = "#" + id;
            }
            Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
            return config;
          };
          _proto._getScrollTop = function _getScrollTop() {
            return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
          };
          _proto._getScrollHeight = function _getScrollHeight() {
            return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
          };
          _proto._getOffsetHeight = function _getOffsetHeight() {
            return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
          };
          _proto._process = function _process() {
            var scrollTop = this._getScrollTop() + this._config.offset;
            var scrollHeight = this._getScrollHeight();
            var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
            if (this._scrollHeight !== scrollHeight) {
              this.refresh();
            }
            if (scrollTop >= maxScroll) {
              var target = this._targets[this._targets.length - 1];
              if (this._activeTarget !== target) {
                this._activate(target);
              }
              return;
            }
            if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
              this._activeTarget = null;
              this._clear();
              return;
            }
            for (var i2 = this._offsets.length; i2--; ) {
              var isActiveTarget = this._activeTarget !== this._targets[i2] && scrollTop >= this._offsets[i2] && (typeof this._offsets[i2 + 1] === "undefined" || scrollTop < this._offsets[i2 + 1]);
              if (isActiveTarget) {
                this._activate(this._targets[i2]);
              }
            }
          };
          _proto._activate = function _activate(target) {
            this._activeTarget = target;
            this._clear();
            var queries = this._selector.split(",").map(function(selector) {
              return selector + '[data-target="' + target + '"],' + selector + '[href="' + target + '"]';
            });
            var $link = $__default["default"]([].slice.call(document.querySelectorAll(queries.join(","))));
            if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {
              $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE);
              $link.addClass(CLASS_NAME_ACTIVE);
            } else {
              $link.addClass(CLASS_NAME_ACTIVE);
              $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE);
              $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE);
            }
            $__default["default"](this._scrollElement).trigger(EVENT_ACTIVATE, {
              relatedTarget: target
            });
          };
          _proto._clear = function _clear() {
            [].slice.call(document.querySelectorAll(this._selector)).filter(function(node) {
              return node.classList.contains(CLASS_NAME_ACTIVE);
            }).forEach(function(node) {
              return node.classList.remove(CLASS_NAME_ACTIVE);
            });
          };
          ScrollSpy2._jQueryInterface = function _jQueryInterface(config) {
            return this.each(function() {
              var data = $__default["default"](this).data(DATA_KEY);
              var _config = typeof config === "object" && config;
              if (!data) {
                data = new ScrollSpy2(this, _config);
                $__default["default"](this).data(DATA_KEY, data);
              }
              if (typeof config === "string") {
                if (typeof data[config] === "undefined") {
                  throw new TypeError('No method named "' + config + '"');
                }
                data[config]();
              }
            });
          };
          _createClass(ScrollSpy2, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }, {
            key: "Default",
            get: function get() {
              return Default;
            }
          }]);
          return ScrollSpy2;
        }();
        $__default["default"](window).on(EVENT_LOAD_DATA_API, function() {
          var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));
          var scrollSpysLength = scrollSpys.length;
          for (var i2 = scrollSpysLength; i2--; ) {
            var $spy = $__default["default"](scrollSpys[i2]);
            ScrollSpy._jQueryInterface.call($spy, $spy.data());
          }
        });
        $__default["default"].fn[NAME] = ScrollSpy._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = ScrollSpy;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return ScrollSpy._jQueryInterface;
        };
        return ScrollSpy;
      });
    }
  });

  // node_modules/bootstrap/js/dist/tab.js
  var require_tab = __commonJS({
    "node_modules/bootstrap/js/dist/tab.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Tab = factory(global2.jQuery, global2.Util));
      })(exports, function($2, Util2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        var NAME = "tab";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.tab";
        var EVENT_KEY = "." + DATA_KEY;
        var DATA_API_KEY = ".data-api";
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var CLASS_NAME_DROPDOWN_MENU = "dropdown-menu";
        var CLASS_NAME_ACTIVE = "active";
        var CLASS_NAME_DISABLED = "disabled";
        var CLASS_NAME_FADE = "fade";
        var CLASS_NAME_SHOW = "show";
        var EVENT_HIDE = "hide" + EVENT_KEY;
        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
        var EVENT_SHOW = "show" + EVENT_KEY;
        var EVENT_SHOWN = "shown" + EVENT_KEY;
        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
        var SELECTOR_DROPDOWN = ".dropdown";
        var SELECTOR_NAV_LIST_GROUP = ".nav, .list-group";
        var SELECTOR_ACTIVE = ".active";
        var SELECTOR_ACTIVE_UL = "> li > .active";
        var SELECTOR_DATA_TOGGLE = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]';
        var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
        var SELECTOR_DROPDOWN_ACTIVE_CHILD = "> .dropdown-menu .active";
        var Tab3 = /* @__PURE__ */ function() {
          function Tab4(element) {
            this._element = element;
          }
          var _proto = Tab4.prototype;
          _proto.show = function show() {
            var _this = this;
            if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default["default"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute("disabled")) {
              return;
            }
            var target;
            var previous;
            var listElement = $__default["default"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];
            var selector = Util__default["default"].getSelectorFromElement(this._element);
            if (listElement) {
              var itemSelector = listElement.nodeName === "UL" || listElement.nodeName === "OL" ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
              previous = $__default["default"].makeArray($__default["default"](listElement).find(itemSelector));
              previous = previous[previous.length - 1];
            }
            var hideEvent = $__default["default"].Event(EVENT_HIDE, {
              relatedTarget: this._element
            });
            var showEvent = $__default["default"].Event(EVENT_SHOW, {
              relatedTarget: previous
            });
            if (previous) {
              $__default["default"](previous).trigger(hideEvent);
            }
            $__default["default"](this._element).trigger(showEvent);
            if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
              return;
            }
            if (selector) {
              target = document.querySelector(selector);
            }
            this._activate(this._element, listElement);
            var complete = function complete2() {
              var hiddenEvent = $__default["default"].Event(EVENT_HIDDEN, {
                relatedTarget: _this._element
              });
              var shownEvent = $__default["default"].Event(EVENT_SHOWN, {
                relatedTarget: previous
              });
              $__default["default"](previous).trigger(hiddenEvent);
              $__default["default"](_this._element).trigger(shownEvent);
            };
            if (target) {
              this._activate(target, target.parentNode, complete);
            } else {
              complete();
            }
          };
          _proto.dispose = function dispose() {
            $__default["default"].removeData(this._element, DATA_KEY);
            this._element = null;
          };
          _proto._activate = function _activate(element, container, callback) {
            var _this2 = this;
            var activeElements = container && (container.nodeName === "UL" || container.nodeName === "OL") ? $__default["default"](container).find(SELECTOR_ACTIVE_UL) : $__default["default"](container).children(SELECTOR_ACTIVE);
            var active = activeElements[0];
            var isTransitioning = callback && active && $__default["default"](active).hasClass(CLASS_NAME_FADE);
            var complete = function complete2() {
              return _this2._transitionComplete(element, active, callback);
            };
            if (active && isTransitioning) {
              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(active);
              $__default["default"](active).removeClass(CLASS_NAME_SHOW).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
            } else {
              complete();
            }
          };
          _proto._transitionComplete = function _transitionComplete(element, active, callback) {
            if (active) {
              $__default["default"](active).removeClass(CLASS_NAME_ACTIVE);
              var dropdownChild = $__default["default"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];
              if (dropdownChild) {
                $__default["default"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);
              }
              if (active.getAttribute("role") === "tab") {
                active.setAttribute("aria-selected", false);
              }
            }
            $__default["default"](element).addClass(CLASS_NAME_ACTIVE);
            if (element.getAttribute("role") === "tab") {
              element.setAttribute("aria-selected", true);
            }
            Util__default["default"].reflow(element);
            if (element.classList.contains(CLASS_NAME_FADE)) {
              element.classList.add(CLASS_NAME_SHOW);
            }
            var parent = element.parentNode;
            if (parent && parent.nodeName === "LI") {
              parent = parent.parentNode;
            }
            if (parent && $__default["default"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {
              var dropdownElement = $__default["default"](element).closest(SELECTOR_DROPDOWN)[0];
              if (dropdownElement) {
                var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));
                $__default["default"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);
              }
              element.setAttribute("aria-expanded", true);
            }
            if (callback) {
              callback();
            }
          };
          Tab4._jQueryInterface = function _jQueryInterface(config) {
            return this.each(function() {
              var $this = $__default["default"](this);
              var data = $this.data(DATA_KEY);
              if (!data) {
                data = new Tab4(this);
                $this.data(DATA_KEY, data);
              }
              if (typeof config === "string") {
                if (typeof data[config] === "undefined") {
                  throw new TypeError('No method named "' + config + '"');
                }
                data[config]();
              }
            });
          };
          _createClass(Tab4, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }]);
          return Tab4;
        }();
        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
          event.preventDefault();
          Tab3._jQueryInterface.call($__default["default"](this), "show");
        });
        $__default["default"].fn[NAME] = Tab3._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Tab3;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Tab3._jQueryInterface;
        };
        return Tab3;
      });
    }
  });

  // node_modules/bootstrap/js/dist/toast.js
  var require_toast = __commonJS({
    "node_modules/bootstrap/js/dist/toast.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Toast = factory(global2.jQuery, global2.Util));
      })(exports, function($2, Util2) {
        "use strict";
        function _interopDefaultLegacy(e) {
          return e && typeof e === "object" && "default" in e ? e : { "default": e };
        }
        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
        function _defineProperties(target, props) {
          for (var i2 = 0; i2 < props.length; i2++) {
            var descriptor = props[i2];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor)
              descriptor.writable = true;
            Object.defineProperty(target, descriptor.key, descriptor);
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps)
            _defineProperties(Constructor.prototype, protoProps);
          if (staticProps)
            _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false
          });
          return Constructor;
        }
        function _extends() {
          _extends = Object.assign ? Object.assign.bind() : function(target) {
            for (var i2 = 1; i2 < arguments.length; i2++) {
              var source = arguments[i2];
              for (var key in source) {
                if (Object.prototype.hasOwnProperty.call(source, key)) {
                  target[key] = source[key];
                }
              }
            }
            return target;
          };
          return _extends.apply(this, arguments);
        }
        var NAME = "toast";
        var VERSION = "4.6.2";
        var DATA_KEY = "bs.toast";
        var EVENT_KEY = "." + DATA_KEY;
        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
        var CLASS_NAME_FADE = "fade";
        var CLASS_NAME_HIDE = "hide";
        var CLASS_NAME_SHOW = "show";
        var CLASS_NAME_SHOWING = "showing";
        var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
        var EVENT_HIDE = "hide" + EVENT_KEY;
        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
        var EVENT_SHOW = "show" + EVENT_KEY;
        var EVENT_SHOWN = "shown" + EVENT_KEY;
        var SELECTOR_DATA_DISMISS = '[data-dismiss="toast"]';
        var Default = {
          animation: true,
          autohide: true,
          delay: 500
        };
        var DefaultType = {
          animation: "boolean",
          autohide: "boolean",
          delay: "number"
        };
        var Toast2 = /* @__PURE__ */ function() {
          function Toast3(element, config) {
            this._element = element;
            this._config = this._getConfig(config);
            this._timeout = null;
            this._setListeners();
          }
          var _proto = Toast3.prototype;
          _proto.show = function show() {
            var _this = this;
            var showEvent = $__default["default"].Event(EVENT_SHOW);
            $__default["default"](this._element).trigger(showEvent);
            if (showEvent.isDefaultPrevented()) {
              return;
            }
            this._clearTimeout();
            if (this._config.animation) {
              this._element.classList.add(CLASS_NAME_FADE);
            }
            var complete = function complete2() {
              _this._element.classList.remove(CLASS_NAME_SHOWING);
              _this._element.classList.add(CLASS_NAME_SHOW);
              $__default["default"](_this._element).trigger(EVENT_SHOWN);
              if (_this._config.autohide) {
                _this._timeout = setTimeout(function() {
                  _this.hide();
                }, _this._config.delay);
              }
            };
            this._element.classList.remove(CLASS_NAME_HIDE);
            Util__default["default"].reflow(this._element);
            this._element.classList.add(CLASS_NAME_SHOWING);
            if (this._config.animation) {
              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
              $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
            } else {
              complete();
            }
          };
          _proto.hide = function hide() {
            if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
              return;
            }
            var hideEvent = $__default["default"].Event(EVENT_HIDE);
            $__default["default"](this._element).trigger(hideEvent);
            if (hideEvent.isDefaultPrevented()) {
              return;
            }
            this._close();
          };
          _proto.dispose = function dispose() {
            this._clearTimeout();
            if (this._element.classList.contains(CLASS_NAME_SHOW)) {
              this._element.classList.remove(CLASS_NAME_SHOW);
            }
            $__default["default"](this._element).off(EVENT_CLICK_DISMISS);
            $__default["default"].removeData(this._element, DATA_KEY);
            this._element = null;
            this._config = null;
          };
          _proto._getConfig = function _getConfig(config) {
            config = _extends({}, Default, $__default["default"](this._element).data(), typeof config === "object" && config ? config : {});
            Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
            return config;
          };
          _proto._setListeners = function _setListeners() {
            var _this2 = this;
            $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function() {
              return _this2.hide();
            });
          };
          _proto._close = function _close() {
            var _this3 = this;
            var complete = function complete2() {
              _this3._element.classList.add(CLASS_NAME_HIDE);
              $__default["default"](_this3._element).trigger(EVENT_HIDDEN);
            };
            this._element.classList.remove(CLASS_NAME_SHOW);
            if (this._config.animation) {
              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
              $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
            } else {
              complete();
            }
          };
          _proto._clearTimeout = function _clearTimeout() {
            clearTimeout(this._timeout);
            this._timeout = null;
          };
          Toast3._jQueryInterface = function _jQueryInterface(config) {
            return this.each(function() {
              var $element = $__default["default"](this);
              var data = $element.data(DATA_KEY);
              var _config = typeof config === "object" && config;
              if (!data) {
                data = new Toast3(this, _config);
                $element.data(DATA_KEY, data);
              }
              if (typeof config === "string") {
                if (typeof data[config] === "undefined") {
                  throw new TypeError('No method named "' + config + '"');
                }
                data[config](this);
              }
            });
          };
          _createClass(Toast3, null, [{
            key: "VERSION",
            get: function get() {
              return VERSION;
            }
          }, {
            key: "DefaultType",
            get: function get() {
              return DefaultType;
            }
          }, {
            key: "Default",
            get: function get() {
              return Default;
            }
          }]);
          return Toast3;
        }();
        $__default["default"].fn[NAME] = Toast2._jQueryInterface;
        $__default["default"].fn[NAME].Constructor = Toast2;
        $__default["default"].fn[NAME].noConflict = function() {
          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
          return Toast2._jQueryInterface;
        };
        return Toast2;
      });
    }
  });

  // node_modules/moment/moment.js
  var require_moment = __commonJS({
    "node_modules/moment/moment.js"(exports, module) {
      (function(global2, factory) {
        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.moment = factory();
      })(exports, function() {
        "use strict";
        var hookCallback;
        function hooks() {
          return hookCallback.apply(null, arguments);
        }
        function setHookCallback(callback) {
          hookCallback = callback;
        }
        function isArray(input) {
          return input instanceof Array || Object.prototype.toString.call(input) === "[object Array]";
        }
        function isObject2(input) {
          return input != null && Object.prototype.toString.call(input) === "[object Object]";
        }
        function hasOwnProp(a, b) {
          return Object.prototype.hasOwnProperty.call(a, b);
        }
        function isObjectEmpty(obj) {
          if (Object.getOwnPropertyNames) {
            return Object.getOwnPropertyNames(obj).length === 0;
          } else {
            var k;
            for (k in obj) {
              if (hasOwnProp(obj, k)) {
                return false;
              }
            }
            return true;
          }
        }
        function isUndefined(input) {
          return input === void 0;
        }
        function isNumber(input) {
          return typeof input === "number" || Object.prototype.toString.call(input) === "[object Number]";
        }
        function isDate(input) {
          return input instanceof Date || Object.prototype.toString.call(input) === "[object Date]";
        }
        function map2(arr, fn) {
          var res = [], i2, arrLen = arr.length;
          for (i2 = 0; i2 < arrLen; ++i2) {
            res.push(fn(arr[i2], i2));
          }
          return res;
        }
        function extend(a, b) {
          for (var i2 in b) {
            if (hasOwnProp(b, i2)) {
              a[i2] = b[i2];
            }
          }
          if (hasOwnProp(b, "toString")) {
            a.toString = b.toString;
          }
          if (hasOwnProp(b, "valueOf")) {
            a.valueOf = b.valueOf;
          }
          return a;
        }
        function createUTC(input, format3, locale2, strict) {
          return createLocalOrUTC(input, format3, locale2, strict, true).utc();
        }
        function defaultParsingFlags() {
          return {
            empty: false,
            unusedTokens: [],
            unusedInput: [],
            overflow: -2,
            charsLeftOver: 0,
            nullInput: false,
            invalidEra: null,
            invalidMonth: null,
            invalidFormat: false,
            userInvalidated: false,
            iso: false,
            parsedDateParts: [],
            era: null,
            meridiem: null,
            rfc2822: false,
            weekdayMismatch: false
          };
        }
        function getParsingFlags(m) {
          if (m._pf == null) {
            m._pf = defaultParsingFlags();
          }
          return m._pf;
        }
        var some;
        if (Array.prototype.some) {
          some = Array.prototype.some;
        } else {
          some = function(fun) {
            var t = Object(this), len = t.length >>> 0, i2;
            for (i2 = 0; i2 < len; i2++) {
              if (i2 in t && fun.call(this, t[i2], i2, t)) {
                return true;
              }
            }
            return false;
          };
        }
        function isValid(m) {
          if (m._isValid == null) {
            var flags = getParsingFlags(m), parsedParts = some.call(flags.parsedDateParts, function(i2) {
              return i2 != null;
            }), isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);
            if (m._strict) {
              isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === void 0;
            }
            if (Object.isFrozen == null || !Object.isFrozen(m)) {
              m._isValid = isNowValid;
            } else {
              return isNowValid;
            }
          }
          return m._isValid;
        }
        function createInvalid(flags) {
          var m = createUTC(NaN);
          if (flags != null) {
            extend(getParsingFlags(m), flags);
          } else {
            getParsingFlags(m).userInvalidated = true;
          }
          return m;
        }
        var momentProperties = hooks.momentProperties = [], updateInProgress = false;
        function copyConfig(to2, from2) {
          var i2, prop, val, momentPropertiesLen = momentProperties.length;
          if (!isUndefined(from2._isAMomentObject)) {
            to2._isAMomentObject = from2._isAMomentObject;
          }
          if (!isUndefined(from2._i)) {
            to2._i = from2._i;
          }
          if (!isUndefined(from2._f)) {
            to2._f = from2._f;
          }
          if (!isUndefined(from2._l)) {
            to2._l = from2._l;
          }
          if (!isUndefined(from2._strict)) {
            to2._strict = from2._strict;
          }
          if (!isUndefined(from2._tzm)) {
            to2._tzm = from2._tzm;
          }
          if (!isUndefined(from2._isUTC)) {
            to2._isUTC = from2._isUTC;
          }
          if (!isUndefined(from2._offset)) {
            to2._offset = from2._offset;
          }
          if (!isUndefined(from2._pf)) {
            to2._pf = getParsingFlags(from2);
          }
          if (!isUndefined(from2._locale)) {
            to2._locale = from2._locale;
          }
          if (momentPropertiesLen > 0) {
            for (i2 = 0; i2 < momentPropertiesLen; i2++) {
              prop = momentProperties[i2];
              val = from2[prop];
              if (!isUndefined(val)) {
                to2[prop] = val;
              }
            }
          }
          return to2;
        }
        function Moment(config) {
          copyConfig(this, config);
          this._d = new Date(config._d != null ? config._d.getTime() : NaN);
          if (!this.isValid()) {
            this._d = new Date(NaN);
          }
          if (updateInProgress === false) {
            updateInProgress = true;
            hooks.updateOffset(this);
            updateInProgress = false;
          }
        }
        function isMoment(obj) {
          return obj instanceof Moment || obj != null && obj._isAMomentObject != null;
        }
        function warn(msg) {
          if (hooks.suppressDeprecationWarnings === false && typeof console !== "undefined" && console.warn) {
            console.warn("Deprecation warning: " + msg);
          }
        }
        function deprecate(msg, fn) {
          var firstTime = true;
          return extend(function() {
            if (hooks.deprecationHandler != null) {
              hooks.deprecationHandler(null, msg);
            }
            if (firstTime) {
              var args = [], arg, i2, key, argLen = arguments.length;
              for (i2 = 0; i2 < argLen; i2++) {
                arg = "";
                if (typeof arguments[i2] === "object") {
                  arg += "\n[" + i2 + "] ";
                  for (key in arguments[0]) {
                    if (hasOwnProp(arguments[0], key)) {
                      arg += key + ": " + arguments[0][key] + ", ";
                    }
                  }
                  arg = arg.slice(0, -2);
                } else {
                  arg = arguments[i2];
                }
                args.push(arg);
              }
              warn(
                msg + "\nArguments: " + Array.prototype.slice.call(args).join("") + "\n" + new Error().stack
              );
              firstTime = false;
            }
            return fn.apply(this, arguments);
          }, fn);
        }
        var deprecations = {};
        function deprecateSimple(name2, msg) {
          if (hooks.deprecationHandler != null) {
            hooks.deprecationHandler(name2, msg);
          }
          if (!deprecations[name2]) {
            warn(msg);
            deprecations[name2] = true;
          }
        }
        hooks.suppressDeprecationWarnings = false;
        hooks.deprecationHandler = null;
        function isFunction(input) {
          return typeof Function !== "undefined" && input instanceof Function || Object.prototype.toString.call(input) === "[object Function]";
        }
        function set(config) {
          var prop, i2;
          for (i2 in config) {
            if (hasOwnProp(config, i2)) {
              prop = config[i2];
              if (isFunction(prop)) {
                this[i2] = prop;
              } else {
                this["_" + i2] = prop;
              }
            }
          }
          this._config = config;
          this._dayOfMonthOrdinalParseLenient = new RegExp(
            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source
          );
        }
        function mergeConfigs(parentConfig, childConfig) {
          var res = extend({}, parentConfig), prop;
          for (prop in childConfig) {
            if (hasOwnProp(childConfig, prop)) {
              if (isObject2(parentConfig[prop]) && isObject2(childConfig[prop])) {
                res[prop] = {};
                extend(res[prop], parentConfig[prop]);
                extend(res[prop], childConfig[prop]);
              } else if (childConfig[prop] != null) {
                res[prop] = childConfig[prop];
              } else {
                delete res[prop];
              }
            }
          }
          for (prop in parentConfig) {
            if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject2(parentConfig[prop])) {
              res[prop] = extend({}, res[prop]);
            }
          }
          return res;
        }
        function Locale(config) {
          if (config != null) {
            this.set(config);
          }
        }
        var keys;
        if (Object.keys) {
          keys = Object.keys;
        } else {
          keys = function(obj) {
            var i2, res = [];
            for (i2 in obj) {
              if (hasOwnProp(obj, i2)) {
                res.push(i2);
              }
            }
            return res;
          };
        }
        var defaultCalendar = {
          sameDay: "[Today at] LT",
          nextDay: "[Tomorrow at] LT",
          nextWeek: "dddd [at] LT",
          lastDay: "[Yesterday at] LT",
          lastWeek: "[Last] dddd [at] LT",
          sameElse: "L"
        };
        function calendar(key, mom, now2) {
          var output = this._calendar[key] || this._calendar["sameElse"];
          return isFunction(output) ? output.call(mom, now2) : output;
        }
        function zeroFill(number, targetLength, forceSign) {
          var absNumber = "" + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign2 = number >= 0;
          return (sign2 ? forceSign ? "+" : "" : "-") + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
        }
        var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, formatFunctions = {}, formatTokenFunctions = {};
        function addFormatToken(token2, padded, ordinal2, callback) {
          var func = callback;
          if (typeof callback === "string") {
            func = function() {
              return this[callback]();
            };
          }
          if (token2) {
            formatTokenFunctions[token2] = func;
          }
          if (padded) {
            formatTokenFunctions[padded[0]] = function() {
              return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
            };
          }
          if (ordinal2) {
            formatTokenFunctions[ordinal2] = function() {
              return this.localeData().ordinal(
                func.apply(this, arguments),
                token2
              );
            };
          }
        }
        function removeFormattingTokens(input) {
          if (input.match(/\[[\s\S]/)) {
            return input.replace(/^\[|\]$/g, "");
          }
          return input.replace(/\\/g, "");
        }
        function makeFormatFunction(format3) {
          var array = format3.match(formattingTokens), i2, length2;
          for (i2 = 0, length2 = array.length; i2 < length2; i2++) {
            if (formatTokenFunctions[array[i2]]) {
              array[i2] = formatTokenFunctions[array[i2]];
            } else {
              array[i2] = removeFormattingTokens(array[i2]);
            }
          }
          return function(mom) {
            var output = "", i3;
            for (i3 = 0; i3 < length2; i3++) {
              output += isFunction(array[i3]) ? array[i3].call(mom, format3) : array[i3];
            }
            return output;
          };
        }
        function formatMoment(m, format3) {
          if (!m.isValid()) {
            return m.localeData().invalidDate();
          }
          format3 = expandFormat(format3, m.localeData());
          formatFunctions[format3] = formatFunctions[format3] || makeFormatFunction(format3);
          return formatFunctions[format3](m);
        }
        function expandFormat(format3, locale2) {
          var i2 = 5;
          function replaceLongDateFormatTokens(input) {
            return locale2.longDateFormat(input) || input;
          }
          localFormattingTokens.lastIndex = 0;
          while (i2 >= 0 && localFormattingTokens.test(format3)) {
            format3 = format3.replace(
              localFormattingTokens,
              replaceLongDateFormatTokens
            );
            localFormattingTokens.lastIndex = 0;
            i2 -= 1;
          }
          return format3;
        }
        var defaultLongDateFormat = {
          LTS: "h:mm:ss A",
          LT: "h:mm A",
          L: "MM/DD/YYYY",
          LL: "MMMM D, YYYY",
          LLL: "MMMM D, YYYY h:mm A",
          LLLL: "dddd, MMMM D, YYYY h:mm A"
        };
        function longDateFormat(key) {
          var format3 = this._longDateFormat[key], formatUpper = this._longDateFormat[key.toUpperCase()];
          if (format3 || !formatUpper) {
            return format3;
          }
          this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function(tok) {
            if (tok === "MMMM" || tok === "MM" || tok === "DD" || tok === "dddd") {
              return tok.slice(1);
            }
            return tok;
          }).join("");
          return this._longDateFormat[key];
        }
        var defaultInvalidDate = "Invalid date";
        function invalidDate() {
          return this._invalidDate;
        }
        var defaultOrdinal = "%d", defaultDayOfMonthOrdinalParse = /\d{1,2}/;
        function ordinal(number) {
          return this._ordinal.replace("%d", number);
        }
        var defaultRelativeTime = {
          future: "in %s",
          past: "%s ago",
          s: "a few seconds",
          ss: "%d seconds",
          m: "a minute",
          mm: "%d minutes",
          h: "an hour",
          hh: "%d hours",
          d: "a day",
          dd: "%d days",
          w: "a week",
          ww: "%d weeks",
          M: "a month",
          MM: "%d months",
          y: "a year",
          yy: "%d years"
        };
        function relativeTime(number, withoutSuffix, string, isFuture) {
          var output = this._relativeTime[string];
          return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);
        }
        function pastFuture(diff2, output) {
          var format3 = this._relativeTime[diff2 > 0 ? "future" : "past"];
          return isFunction(format3) ? format3(output) : format3.replace(/%s/i, output);
        }
        var aliases = {};
        function addUnitAlias(unit, shorthand) {
          var lowerCase = unit.toLowerCase();
          aliases[lowerCase] = aliases[lowerCase + "s"] = aliases[shorthand] = unit;
        }
        function normalizeUnits(units) {
          return typeof units === "string" ? aliases[units] || aliases[units.toLowerCase()] : void 0;
        }
        function normalizeObjectUnits(inputObject) {
          var normalizedInput = {}, normalizedProp, prop;
          for (prop in inputObject) {
            if (hasOwnProp(inputObject, prop)) {
              normalizedProp = normalizeUnits(prop);
              if (normalizedProp) {
                normalizedInput[normalizedProp] = inputObject[prop];
              }
            }
          }
          return normalizedInput;
        }
        var priorities = {};
        function addUnitPriority(unit, priority) {
          priorities[unit] = priority;
        }
        function getPrioritizedUnits(unitsObj) {
          var units = [], u;
          for (u in unitsObj) {
            if (hasOwnProp(unitsObj, u)) {
              units.push({ unit: u, priority: priorities[u] });
            }
          }
          units.sort(function(a, b) {
            return a.priority - b.priority;
          });
          return units;
        }
        function isLeapYear(year) {
          return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
        }
        function absFloor(number) {
          if (number < 0) {
            return Math.ceil(number) || 0;
          } else {
            return Math.floor(number);
          }
        }
        function toInt(argumentForCoercion) {
          var coercedNumber = +argumentForCoercion, value2 = 0;
          if (coercedNumber !== 0 && isFinite(coercedNumber)) {
            value2 = absFloor(coercedNumber);
          }
          return value2;
        }
        function makeGetSet(unit, keepTime) {
          return function(value2) {
            if (value2 != null) {
              set$1(this, unit, value2);
              hooks.updateOffset(this, keepTime);
              return this;
            } else {
              return get(this, unit);
            }
          };
        }
        function get(mom, unit) {
          return mom.isValid() ? mom._d["get" + (mom._isUTC ? "UTC" : "") + unit]() : NaN;
        }
        function set$1(mom, unit, value2) {
          if (mom.isValid() && !isNaN(value2)) {
            if (unit === "FullYear" && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
              value2 = toInt(value2);
              mom._d["set" + (mom._isUTC ? "UTC" : "") + unit](
                value2,
                mom.month(),
                daysInMonth(value2, mom.month())
              );
            } else {
              mom._d["set" + (mom._isUTC ? "UTC" : "") + unit](value2);
            }
          }
        }
        function stringGet(units) {
          units = normalizeUnits(units);
          if (isFunction(this[units])) {
            return this[units]();
          }
          return this;
        }
        function stringSet(units, value2) {
          if (typeof units === "object") {
            units = normalizeObjectUnits(units);
            var prioritized = getPrioritizedUnits(units), i2, prioritizedLen = prioritized.length;
            for (i2 = 0; i2 < prioritizedLen; i2++) {
              this[prioritized[i2].unit](units[prioritized[i2].unit]);
            }
          } else {
            units = normalizeUnits(units);
            if (isFunction(this[units])) {
              return this[units](value2);
            }
          }
          return this;
        }
        var match1 = /\d/, match2 = /\d\d/, match3 = /\d{3}/, match4 = /\d{4}/, match6 = /[+-]?\d{6}/, match1to2 = /\d\d?/, match3to4 = /\d\d\d\d?/, match5to6 = /\d\d\d\d\d\d?/, match1to3 = /\d{1,3}/, match1to4 = /\d{1,4}/, match1to6 = /[+-]?\d{1,6}/, matchUnsigned = /\d+/, matchSigned = /[+-]?\d+/, matchOffset = /Z|[+-]\d\d:?\d\d/gi, matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, regexes;
        regexes = {};
        function addRegexToken(token2, regex, strictRegex) {
          regexes[token2] = isFunction(regex) ? regex : function(isStrict, localeData2) {
            return isStrict && strictRegex ? strictRegex : regex;
          };
        }
        function getParseRegexForToken(token2, config) {
          if (!hasOwnProp(regexes, token2)) {
            return new RegExp(unescapeFormat(token2));
          }
          return regexes[token2](config._strict, config._locale);
        }
        function unescapeFormat(s) {
          return regexEscape(
            s.replace("\\", "").replace(
              /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
              function(matched, p1, p2, p3, p4) {
                return p1 || p2 || p3 || p4;
              }
            )
          );
        }
        function regexEscape(s) {
          return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
        }
        var tokens = {};
        function addParseToken(token2, callback) {
          var i2, func = callback, tokenLen;
          if (typeof token2 === "string") {
            token2 = [token2];
          }
          if (isNumber(callback)) {
            func = function(input, array) {
              array[callback] = toInt(input);
            };
          }
          tokenLen = token2.length;
          for (i2 = 0; i2 < tokenLen; i2++) {
            tokens[token2[i2]] = func;
          }
        }
        function addWeekParseToken(token2, callback) {
          addParseToken(token2, function(input, array, config, token3) {
            config._w = config._w || {};
            callback(input, config._w, config, token3);
          });
        }
        function addTimeToArrayFromToken(token2, input, config) {
          if (input != null && hasOwnProp(tokens, token2)) {
            tokens[token2](input, config._a, config, token2);
          }
        }
        var YEAR = 0, MONTH = 1, DATE = 2, HOUR = 3, MINUTE = 4, SECOND = 5, MILLISECOND = 6, WEEK = 7, WEEKDAY = 8;
        function mod(n, x) {
          return (n % x + x) % x;
        }
        var indexOf;
        if (Array.prototype.indexOf) {
          indexOf = Array.prototype.indexOf;
        } else {
          indexOf = function(o) {
            var i2;
            for (i2 = 0; i2 < this.length; ++i2) {
              if (this[i2] === o) {
                return i2;
              }
            }
            return -1;
          };
        }
        function daysInMonth(year, month) {
          if (isNaN(year) || isNaN(month)) {
            return NaN;
          }
          var modMonth = mod(month, 12);
          year += (month - modMonth) / 12;
          return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;
        }
        addFormatToken("M", ["MM", 2], "Mo", function() {
          return this.month() + 1;
        });
        addFormatToken("MMM", 0, 0, function(format3) {
          return this.localeData().monthsShort(this, format3);
        });
        addFormatToken("MMMM", 0, 0, function(format3) {
          return this.localeData().months(this, format3);
        });
        addUnitAlias("month", "M");
        addUnitPriority("month", 8);
        addRegexToken("M", match1to2);
        addRegexToken("MM", match1to2, match2);
        addRegexToken("MMM", function(isStrict, locale2) {
          return locale2.monthsShortRegex(isStrict);
        });
        addRegexToken("MMMM", function(isStrict, locale2) {
          return locale2.monthsRegex(isStrict);
        });
        addParseToken(["M", "MM"], function(input, array) {
          array[MONTH] = toInt(input) - 1;
        });
        addParseToken(["MMM", "MMMM"], function(input, array, config, token2) {
          var month = config._locale.monthsParse(input, token2, config._strict);
          if (month != null) {
            array[MONTH] = month;
          } else {
            getParsingFlags(config).invalidMonth = input;
          }
        });
        var defaultLocaleMonths = "January_February_March_April_May_June_July_August_September_October_November_December".split(
          "_"
        ), defaultLocaleMonthsShort = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, defaultMonthsShortRegex = matchWord, defaultMonthsRegex = matchWord;
        function localeMonths(m, format3) {
          if (!m) {
            return isArray(this._months) ? this._months : this._months["standalone"];
          }
          return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format3) ? "format" : "standalone"][m.month()];
        }
        function localeMonthsShort(m, format3) {
          if (!m) {
            return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort["standalone"];
          }
          return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format3) ? "format" : "standalone"][m.month()];
        }
        function handleStrictParse(monthName, format3, strict) {
          var i2, ii, mom, llc = monthName.toLocaleLowerCase();
          if (!this._monthsParse) {
            this._monthsParse = [];
            this._longMonthsParse = [];
            this._shortMonthsParse = [];
            for (i2 = 0; i2 < 12; ++i2) {
              mom = createUTC([2e3, i2]);
              this._shortMonthsParse[i2] = this.monthsShort(
                mom,
                ""
              ).toLocaleLowerCase();
              this._longMonthsParse[i2] = this.months(mom, "").toLocaleLowerCase();
            }
          }
          if (strict) {
            if (format3 === "MMM") {
              ii = indexOf.call(this._shortMonthsParse, llc);
              return ii !== -1 ? ii : null;
            } else {
              ii = indexOf.call(this._longMonthsParse, llc);
              return ii !== -1 ? ii : null;
            }
          } else {
            if (format3 === "MMM") {
              ii = indexOf.call(this._shortMonthsParse, llc);
              if (ii !== -1) {
                return ii;
              }
              ii = indexOf.call(this._longMonthsParse, llc);
              return ii !== -1 ? ii : null;
            } else {
              ii = indexOf.call(this._longMonthsParse, llc);
              if (ii !== -1) {
                return ii;
              }
              ii = indexOf.call(this._shortMonthsParse, llc);
              return ii !== -1 ? ii : null;
            }
          }
        }
        function localeMonthsParse(monthName, format3, strict) {
          var i2, mom, regex;
          if (this._monthsParseExact) {
            return handleStrictParse.call(this, monthName, format3, strict);
          }
          if (!this._monthsParse) {
            this._monthsParse = [];
            this._longMonthsParse = [];
            this._shortMonthsParse = [];
          }
          for (i2 = 0; i2 < 12; i2++) {
            mom = createUTC([2e3, i2]);
            if (strict && !this._longMonthsParse[i2]) {
              this._longMonthsParse[i2] = new RegExp(
                "^" + this.months(mom, "").replace(".", "") + "$",
                "i"
              );
              this._shortMonthsParse[i2] = new RegExp(
                "^" + this.monthsShort(mom, "").replace(".", "") + "$",
                "i"
              );
            }
            if (!strict && !this._monthsParse[i2]) {
              regex = "^" + this.months(mom, "") + "|^" + this.monthsShort(mom, "");
              this._monthsParse[i2] = new RegExp(regex.replace(".", ""), "i");
            }
            if (strict && format3 === "MMMM" && this._longMonthsParse[i2].test(monthName)) {
              return i2;
            } else if (strict && format3 === "MMM" && this._shortMonthsParse[i2].test(monthName)) {
              return i2;
            } else if (!strict && this._monthsParse[i2].test(monthName)) {
              return i2;
            }
          }
        }
        function setMonth(mom, value2) {
          var dayOfMonth;
          if (!mom.isValid()) {
            return mom;
          }
          if (typeof value2 === "string") {
            if (/^\d+$/.test(value2)) {
              value2 = toInt(value2);
            } else {
              value2 = mom.localeData().monthsParse(value2);
              if (!isNumber(value2)) {
                return mom;
              }
            }
          }
          dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value2));
          mom._d["set" + (mom._isUTC ? "UTC" : "") + "Month"](value2, dayOfMonth);
          return mom;
        }
        function getSetMonth(value2) {
          if (value2 != null) {
            setMonth(this, value2);
            hooks.updateOffset(this, true);
            return this;
          } else {
            return get(this, "Month");
          }
        }
        function getDaysInMonth() {
          return daysInMonth(this.year(), this.month());
        }
        function monthsShortRegex(isStrict) {
          if (this._monthsParseExact) {
            if (!hasOwnProp(this, "_monthsRegex")) {
              computeMonthsParse.call(this);
            }
            if (isStrict) {
              return this._monthsShortStrictRegex;
            } else {
              return this._monthsShortRegex;
            }
          } else {
            if (!hasOwnProp(this, "_monthsShortRegex")) {
              this._monthsShortRegex = defaultMonthsShortRegex;
            }
            return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;
          }
        }
        function monthsRegex(isStrict) {
          if (this._monthsParseExact) {
            if (!hasOwnProp(this, "_monthsRegex")) {
              computeMonthsParse.call(this);
            }
            if (isStrict) {
              return this._monthsStrictRegex;
            } else {
              return this._monthsRegex;
            }
          } else {
            if (!hasOwnProp(this, "_monthsRegex")) {
              this._monthsRegex = defaultMonthsRegex;
            }
            return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;
          }
        }
        function computeMonthsParse() {
          function cmpLenRev(a, b) {
            return b.length - a.length;
          }
          var shortPieces = [], longPieces = [], mixedPieces = [], i2, mom;
          for (i2 = 0; i2 < 12; i2++) {
            mom = createUTC([2e3, i2]);
            shortPieces.push(this.monthsShort(mom, ""));
            longPieces.push(this.months(mom, ""));
            mixedPieces.push(this.months(mom, ""));
            mixedPieces.push(this.monthsShort(mom, ""));
          }
          shortPieces.sort(cmpLenRev);
          longPieces.sort(cmpLenRev);
          mixedPieces.sort(cmpLenRev);
          for (i2 = 0; i2 < 12; i2++) {
            shortPieces[i2] = regexEscape(shortPieces[i2]);
            longPieces[i2] = regexEscape(longPieces[i2]);
          }
          for (i2 = 0; i2 < 24; i2++) {
            mixedPieces[i2] = regexEscape(mixedPieces[i2]);
          }
          this._monthsRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i");
          this._monthsShortRegex = this._monthsRegex;
          this._monthsStrictRegex = new RegExp(
            "^(" + longPieces.join("|") + ")",
            "i"
          );
          this._monthsShortStrictRegex = new RegExp(
            "^(" + shortPieces.join("|") + ")",
            "i"
          );
        }
        addFormatToken("Y", 0, 0, function() {
          var y = this.year();
          return y <= 9999 ? zeroFill(y, 4) : "+" + y;
        });
        addFormatToken(0, ["YY", 2], 0, function() {
          return this.year() % 100;
        });
        addFormatToken(0, ["YYYY", 4], 0, "year");
        addFormatToken(0, ["YYYYY", 5], 0, "year");
        addFormatToken(0, ["YYYYYY", 6, true], 0, "year");
        addUnitAlias("year", "y");
        addUnitPriority("year", 1);
        addRegexToken("Y", matchSigned);
        addRegexToken("YY", match1to2, match2);
        addRegexToken("YYYY", match1to4, match4);
        addRegexToken("YYYYY", match1to6, match6);
        addRegexToken("YYYYYY", match1to6, match6);
        addParseToken(["YYYYY", "YYYYYY"], YEAR);
        addParseToken("YYYY", function(input, array) {
          array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
        });
        addParseToken("YY", function(input, array) {
          array[YEAR] = hooks.parseTwoDigitYear(input);
        });
        addParseToken("Y", function(input, array) {
          array[YEAR] = parseInt(input, 10);
        });
        function daysInYear(year) {
          return isLeapYear(year) ? 366 : 365;
        }
        hooks.parseTwoDigitYear = function(input) {
          return toInt(input) + (toInt(input) > 68 ? 1900 : 2e3);
        };
        var getSetYear = makeGetSet("FullYear", true);
        function getIsLeapYear() {
          return isLeapYear(this.year());
        }
        function createDate(y, m, d, h, M, s, ms) {
          var date;
          if (y < 100 && y >= 0) {
            date = new Date(y + 400, m, d, h, M, s, ms);
            if (isFinite(date.getFullYear())) {
              date.setFullYear(y);
            }
          } else {
            date = new Date(y, m, d, h, M, s, ms);
          }
          return date;
        }
        function createUTCDate(y) {
          var date, args;
          if (y < 100 && y >= 0) {
            args = Array.prototype.slice.call(arguments);
            args[0] = y + 400;
            date = new Date(Date.UTC.apply(null, args));
            if (isFinite(date.getUTCFullYear())) {
              date.setUTCFullYear(y);
            }
          } else {
            date = new Date(Date.UTC.apply(null, arguments));
          }
          return date;
        }
        function firstWeekOffset(year, dow, doy) {
          var fwd = 7 + dow - doy, fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
          return -fwdlw + fwd - 1;
        }
        function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
          var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, resYear, resDayOfYear;
          if (dayOfYear <= 0) {
            resYear = year - 1;
            resDayOfYear = daysInYear(resYear) + dayOfYear;
          } else if (dayOfYear > daysInYear(year)) {
            resYear = year + 1;
            resDayOfYear = dayOfYear - daysInYear(year);
          } else {
            resYear = year;
            resDayOfYear = dayOfYear;
          }
          return {
            year: resYear,
            dayOfYear: resDayOfYear
          };
        }
        function weekOfYear(mom, dow, doy) {
          var weekOffset = firstWeekOffset(mom.year(), dow, doy), week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, resWeek, resYear;
          if (week < 1) {
            resYear = mom.year() - 1;
            resWeek = week + weeksInYear(resYear, dow, doy);
          } else if (week > weeksInYear(mom.year(), dow, doy)) {
            resWeek = week - weeksInYear(mom.year(), dow, doy);
            resYear = mom.year() + 1;
          } else {
            resYear = mom.year();
            resWeek = week;
          }
          return {
            week: resWeek,
            year: resYear
          };
        }
        function weeksInYear(year, dow, doy) {
          var weekOffset = firstWeekOffset(year, dow, doy), weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
          return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
        }
        addFormatToken("w", ["ww", 2], "wo", "week");
        addFormatToken("W", ["WW", 2], "Wo", "isoWeek");
        addUnitAlias("week", "w");
        addUnitAlias("isoWeek", "W");
        addUnitPriority("week", 5);
        addUnitPriority("isoWeek", 5);
        addRegexToken("w", match1to2);
        addRegexToken("ww", match1to2, match2);
        addRegexToken("W", match1to2);
        addRegexToken("WW", match1to2, match2);
        addWeekParseToken(
          ["w", "ww", "W", "WW"],
          function(input, week, config, token2) {
            week[token2.substr(0, 1)] = toInt(input);
          }
        );
        function localeWeek(mom) {
          return weekOfYear(mom, this._week.dow, this._week.doy).week;
        }
        var defaultLocaleWeek = {
          dow: 0,
          doy: 6
        };
        function localeFirstDayOfWeek() {
          return this._week.dow;
        }
        function localeFirstDayOfYear() {
          return this._week.doy;
        }
        function getSetWeek(input) {
          var week = this.localeData().week(this);
          return input == null ? week : this.add((input - week) * 7, "d");
        }
        function getSetISOWeek(input) {
          var week = weekOfYear(this, 1, 4).week;
          return input == null ? week : this.add((input - week) * 7, "d");
        }
        addFormatToken("d", 0, "do", "day");
        addFormatToken("dd", 0, 0, function(format3) {
          return this.localeData().weekdaysMin(this, format3);
        });
        addFormatToken("ddd", 0, 0, function(format3) {
          return this.localeData().weekdaysShort(this, format3);
        });
        addFormatToken("dddd", 0, 0, function(format3) {
          return this.localeData().weekdays(this, format3);
        });
        addFormatToken("e", 0, 0, "weekday");
        addFormatToken("E", 0, 0, "isoWeekday");
        addUnitAlias("day", "d");
        addUnitAlias("weekday", "e");
        addUnitAlias("isoWeekday", "E");
        addUnitPriority("day", 11);
        addUnitPriority("weekday", 11);
        addUnitPriority("isoWeekday", 11);
        addRegexToken("d", match1to2);
        addRegexToken("e", match1to2);
        addRegexToken("E", match1to2);
        addRegexToken("dd", function(isStrict, locale2) {
          return locale2.weekdaysMinRegex(isStrict);
        });
        addRegexToken("ddd", function(isStrict, locale2) {
          return locale2.weekdaysShortRegex(isStrict);
        });
        addRegexToken("dddd", function(isStrict, locale2) {
          return locale2.weekdaysRegex(isStrict);
        });
        addWeekParseToken(["dd", "ddd", "dddd"], function(input, week, config, token2) {
          var weekday = config._locale.weekdaysParse(input, token2, config._strict);
          if (weekday != null) {
            week.d = weekday;
          } else {
            getParsingFlags(config).invalidWeekday = input;
          }
        });
        addWeekParseToken(["d", "e", "E"], function(input, week, config, token2) {
          week[token2] = toInt(input);
        });
        function parseWeekday(input, locale2) {
          if (typeof input !== "string") {
            return input;
          }
          if (!isNaN(input)) {
            return parseInt(input, 10);
          }
          input = locale2.weekdaysParse(input);
          if (typeof input === "number") {
            return input;
          }
          return null;
        }
        function parseIsoWeekday(input, locale2) {
          if (typeof input === "string") {
            return locale2.weekdaysParse(input) % 7 || 7;
          }
          return isNaN(input) ? null : input;
        }
        function shiftWeekdays(ws, n) {
          return ws.slice(n, 7).concat(ws.slice(0, n));
        }
        var defaultLocaleWeekdays = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), defaultLocaleWeekdaysShort = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), defaultLocaleWeekdaysMin = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), defaultWeekdaysRegex = matchWord, defaultWeekdaysShortRegex = matchWord, defaultWeekdaysMinRegex = matchWord;
        function localeWeekdays(m, format3) {
          var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format3) ? "format" : "standalone"];
          return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;
        }
        function localeWeekdaysShort(m) {
          return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;
        }
        function localeWeekdaysMin(m) {
          return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;
        }
        function handleStrictParse$1(weekdayName, format3, strict) {
          var i2, ii, mom, llc = weekdayName.toLocaleLowerCase();
          if (!this._weekdaysParse) {
            this._weekdaysParse = [];
            this._shortWeekdaysParse = [];
            this._minWeekdaysParse = [];
            for (i2 = 0; i2 < 7; ++i2) {
              mom = createUTC([2e3, 1]).day(i2);
              this._minWeekdaysParse[i2] = this.weekdaysMin(
                mom,
                ""
              ).toLocaleLowerCase();
              this._shortWeekdaysParse[i2] = this.weekdaysShort(
                mom,
                ""
              ).toLocaleLowerCase();
              this._weekdaysParse[i2] = this.weekdays(mom, "").toLocaleLowerCase();
            }
          }
          if (strict) {
            if (format3 === "dddd") {
              ii = indexOf.call(this._weekdaysParse, llc);
              return ii !== -1 ? ii : null;
            } else if (format3 === "ddd") {
              ii = indexOf.call(this._shortWeekdaysParse, llc);
              return ii !== -1 ? ii : null;
            } else {
              ii = indexOf.call(this._minWeekdaysParse, llc);
              return ii !== -1 ? ii : null;
            }
          } else {
            if (format3 === "dddd") {
              ii = indexOf.call(this._weekdaysParse, llc);
              if (ii !== -1) {
                return ii;
              }
              ii = indexOf.call(this._shortWeekdaysParse, llc);
              if (ii !== -1) {
                return ii;
              }
              ii = indexOf.call(this._minWeekdaysParse, llc);
              return ii !== -1 ? ii : null;
            } else if (format3 === "ddd") {
              ii = indexOf.call(this._shortWeekdaysParse, llc);
              if (ii !== -1) {
                return ii;
              }
              ii = indexOf.call(this._weekdaysParse, llc);
              if (ii !== -1) {
                return ii;
              }
              ii = indexOf.call(this._minWeekdaysParse, llc);
              return ii !== -1 ? ii : null;
            } else {
              ii = indexOf.call(this._minWeekdaysParse, llc);
              if (ii !== -1) {
                return ii;
              }
              ii = indexOf.call(this._weekdaysParse, llc);
              if (ii !== -1) {
                return ii;
              }
              ii = indexOf.call(this._shortWeekdaysParse, llc);
              return ii !== -1 ? ii : null;
            }
          }
        }
        function localeWeekdaysParse(weekdayName, format3, strict) {
          var i2, mom, regex;
          if (this._weekdaysParseExact) {
            return handleStrictParse$1.call(this, weekdayName, format3, strict);
          }
          if (!this._weekdaysParse) {
            this._weekdaysParse = [];
            this._minWeekdaysParse = [];
            this._shortWeekdaysParse = [];
            this._fullWeekdaysParse = [];
          }
          for (i2 = 0; i2 < 7; i2++) {
            mom = createUTC([2e3, 1]).day(i2);
            if (strict && !this._fullWeekdaysParse[i2]) {
              this._fullWeekdaysParse[i2] = new RegExp(
                "^" + this.weekdays(mom, "").replace(".", "\\.?") + "$",
                "i"
              );
              this._shortWeekdaysParse[i2] = new RegExp(
                "^" + this.weekdaysShort(mom, "").replace(".", "\\.?") + "$",
                "i"
              );
              this._minWeekdaysParse[i2] = new RegExp(
                "^" + this.weekdaysMin(mom, "").replace(".", "\\.?") + "$",
                "i"
              );
            }
            if (!this._weekdaysParse[i2]) {
              regex = "^" + this.weekdays(mom, "") + "|^" + this.weekdaysShort(mom, "") + "|^" + this.weekdaysMin(mom, "");
              this._weekdaysParse[i2] = new RegExp(regex.replace(".", ""), "i");
            }
            if (strict && format3 === "dddd" && this._fullWeekdaysParse[i2].test(weekdayName)) {
              return i2;
            } else if (strict && format3 === "ddd" && this._shortWeekdaysParse[i2].test(weekdayName)) {
              return i2;
            } else if (strict && format3 === "dd" && this._minWeekdaysParse[i2].test(weekdayName)) {
              return i2;
            } else if (!strict && this._weekdaysParse[i2].test(weekdayName)) {
              return i2;
            }
          }
        }
        function getSetDayOfWeek(input) {
          if (!this.isValid()) {
            return input != null ? this : NaN;
          }
          var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
          if (input != null) {
            input = parseWeekday(input, this.localeData());
            return this.add(input - day, "d");
          } else {
            return day;
          }
        }
        function getSetLocaleDayOfWeek(input) {
          if (!this.isValid()) {
            return input != null ? this : NaN;
          }
          var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
          return input == null ? weekday : this.add(input - weekday, "d");
        }
        function getSetISODayOfWeek(input) {
          if (!this.isValid()) {
            return input != null ? this : NaN;
          }
          if (input != null) {
            var weekday = parseIsoWeekday(input, this.localeData());
            return this.day(this.day() % 7 ? weekday : weekday - 7);
          } else {
            return this.day() || 7;
          }
        }
        function weekdaysRegex(isStrict) {
          if (this._weekdaysParseExact) {
            if (!hasOwnProp(this, "_weekdaysRegex")) {
              computeWeekdaysParse.call(this);
            }
            if (isStrict) {
              return this._weekdaysStrictRegex;
            } else {
              return this._weekdaysRegex;
            }
          } else {
            if (!hasOwnProp(this, "_weekdaysRegex")) {
              this._weekdaysRegex = defaultWeekdaysRegex;
            }
            return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;
          }
        }
        function weekdaysShortRegex(isStrict) {
          if (this._weekdaysParseExact) {
            if (!hasOwnProp(this, "_weekdaysRegex")) {
              computeWeekdaysParse.call(this);
            }
            if (isStrict) {
              return this._weekdaysShortStrictRegex;
            } else {
              return this._weekdaysShortRegex;
            }
          } else {
            if (!hasOwnProp(this, "_weekdaysShortRegex")) {
              this._weekdaysShortRegex = defaultWeekdaysShortRegex;
            }
            return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
          }
        }
        function weekdaysMinRegex(isStrict) {
          if (this._weekdaysParseExact) {
            if (!hasOwnProp(this, "_weekdaysRegex")) {
              computeWeekdaysParse.call(this);
            }
            if (isStrict) {
              return this._weekdaysMinStrictRegex;
            } else {
              return this._weekdaysMinRegex;
            }
          } else {
            if (!hasOwnProp(this, "_weekdaysMinRegex")) {
              this._weekdaysMinRegex = defaultWeekdaysMinRegex;
            }
            return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
          }
        }
        function computeWeekdaysParse() {
          function cmpLenRev(a, b) {
            return b.length - a.length;
          }
          var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], i2, mom, minp, shortp, longp;
          for (i2 = 0; i2 < 7; i2++) {
            mom = createUTC([2e3, 1]).day(i2);
            minp = regexEscape(this.weekdaysMin(mom, ""));
            shortp = regexEscape(this.weekdaysShort(mom, ""));
            longp = regexEscape(this.weekdays(mom, ""));
            minPieces.push(minp);
            shortPieces.push(shortp);
            longPieces.push(longp);
            mixedPieces.push(minp);
            mixedPieces.push(shortp);
            mixedPieces.push(longp);
          }
          minPieces.sort(cmpLenRev);
          shortPieces.sort(cmpLenRev);
          longPieces.sort(cmpLenRev);
          mixedPieces.sort(cmpLenRev);
          this._weekdaysRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i");
          this._weekdaysShortRegex = this._weekdaysRegex;
          this._weekdaysMinRegex = this._weekdaysRegex;
          this._weekdaysStrictRegex = new RegExp(
            "^(" + longPieces.join("|") + ")",
            "i"
          );
          this._weekdaysShortStrictRegex = new RegExp(
            "^(" + shortPieces.join("|") + ")",
            "i"
          );
          this._weekdaysMinStrictRegex = new RegExp(
            "^(" + minPieces.join("|") + ")",
            "i"
          );
        }
        function hFormat() {
          return this.hours() % 12 || 12;
        }
        function kFormat() {
          return this.hours() || 24;
        }
        addFormatToken("H", ["HH", 2], 0, "hour");
        addFormatToken("h", ["hh", 2], 0, hFormat);
        addFormatToken("k", ["kk", 2], 0, kFormat);
        addFormatToken("hmm", 0, 0, function() {
          return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2);
        });
        addFormatToken("hmmss", 0, 0, function() {
          return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);
        });
        addFormatToken("Hmm", 0, 0, function() {
          return "" + this.hours() + zeroFill(this.minutes(), 2);
        });
        addFormatToken("Hmmss", 0, 0, function() {
          return "" + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);
        });
        function meridiem(token2, lowercase) {
          addFormatToken(token2, 0, 0, function() {
            return this.localeData().meridiem(
              this.hours(),
              this.minutes(),
              lowercase
            );
          });
        }
        meridiem("a", true);
        meridiem("A", false);
        addUnitAlias("hour", "h");
        addUnitPriority("hour", 13);
        function matchMeridiem(isStrict, locale2) {
          return locale2._meridiemParse;
        }
        addRegexToken("a", matchMeridiem);
        addRegexToken("A", matchMeridiem);
        addRegexToken("H", match1to2);
        addRegexToken("h", match1to2);
        addRegexToken("k", match1to2);
        addRegexToken("HH", match1to2, match2);
        addRegexToken("hh", match1to2, match2);
        addRegexToken("kk", match1to2, match2);
        addRegexToken("hmm", match3to4);
        addRegexToken("hmmss", match5to6);
        addRegexToken("Hmm", match3to4);
        addRegexToken("Hmmss", match5to6);
        addParseToken(["H", "HH"], HOUR);
        addParseToken(["k", "kk"], function(input, array, config) {
          var kInput = toInt(input);
          array[HOUR] = kInput === 24 ? 0 : kInput;
        });
        addParseToken(["a", "A"], function(input, array, config) {
          config._isPm = config._locale.isPM(input);
          config._meridiem = input;
        });
        addParseToken(["h", "hh"], function(input, array, config) {
          array[HOUR] = toInt(input);
          getParsingFlags(config).bigHour = true;
        });
        addParseToken("hmm", function(input, array, config) {
          var pos = input.length - 2;
          array[HOUR] = toInt(input.substr(0, pos));
          array[MINUTE] = toInt(input.substr(pos));
          getParsingFlags(config).bigHour = true;
        });
        addParseToken("hmmss", function(input, array, config) {
          var pos1 = input.length - 4, pos2 = input.length - 2;
          array[HOUR] = toInt(input.substr(0, pos1));
          array[MINUTE] = toInt(input.substr(pos1, 2));
          array[SECOND] = toInt(input.substr(pos2));
          getParsingFlags(config).bigHour = true;
        });
        addParseToken("Hmm", function(input, array, config) {
          var pos = input.length - 2;
          array[HOUR] = toInt(input.substr(0, pos));
          array[MINUTE] = toInt(input.substr(pos));
        });
        addParseToken("Hmmss", function(input, array, config) {
          var pos1 = input.length - 4, pos2 = input.length - 2;
          array[HOUR] = toInt(input.substr(0, pos1));
          array[MINUTE] = toInt(input.substr(pos1, 2));
          array[SECOND] = toInt(input.substr(pos2));
        });
        function localeIsPM(input) {
          return (input + "").toLowerCase().charAt(0) === "p";
        }
        var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, getSetHour = makeGetSet("Hours", true);
        function localeMeridiem(hours2, minutes2, isLower) {
          if (hours2 > 11) {
            return isLower ? "pm" : "PM";
          } else {
            return isLower ? "am" : "AM";
          }
        }
        var baseConfig = {
          calendar: defaultCalendar,
          longDateFormat: defaultLongDateFormat,
          invalidDate: defaultInvalidDate,
          ordinal: defaultOrdinal,
          dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
          relativeTime: defaultRelativeTime,
          months: defaultLocaleMonths,
          monthsShort: defaultLocaleMonthsShort,
          week: defaultLocaleWeek,
          weekdays: defaultLocaleWeekdays,
          weekdaysMin: defaultLocaleWeekdaysMin,
          weekdaysShort: defaultLocaleWeekdaysShort,
          meridiemParse: defaultLocaleMeridiemParse
        };
        var locales = {}, localeFamilies = {}, globalLocale;
        function commonPrefix(arr1, arr2) {
          var i2, minl = Math.min(arr1.length, arr2.length);
          for (i2 = 0; i2 < minl; i2 += 1) {
            if (arr1[i2] !== arr2[i2]) {
              return i2;
            }
          }
          return minl;
        }
        function normalizeLocale(key) {
          return key ? key.toLowerCase().replace("_", "-") : key;
        }
        function chooseLocale(names) {
          var i2 = 0, j, next, locale2, split;
          while (i2 < names.length) {
            split = normalizeLocale(names[i2]).split("-");
            j = split.length;
            next = normalizeLocale(names[i2 + 1]);
            next = next ? next.split("-") : null;
            while (j > 0) {
              locale2 = loadLocale(split.slice(0, j).join("-"));
              if (locale2) {
                return locale2;
              }
              if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {
                break;
              }
              j--;
            }
            i2++;
          }
          return globalLocale;
        }
        function isLocaleNameSane(name2) {
          return name2.match("^[^/\\\\]*$") != null;
        }
        function loadLocale(name2) {
          var oldLocale = null, aliasedRequire;
          if (locales[name2] === void 0 && typeof module !== "undefined" && module && module.exports && isLocaleNameSane(name2)) {
            try {
              oldLocale = globalLocale._abbr;
              aliasedRequire = __require;
              aliasedRequire("./locale/" + name2);
              getSetGlobalLocale(oldLocale);
            } catch (e) {
              locales[name2] = null;
            }
          }
          return locales[name2];
        }
        function getSetGlobalLocale(key, values) {
          var data;
          if (key) {
            if (isUndefined(values)) {
              data = getLocale(key);
            } else {
              data = defineLocale(key, values);
            }
            if (data) {
              globalLocale = data;
            } else {
              if (typeof console !== "undefined" && console.warn) {
                console.warn(
                  "Locale " + key + " not found. Did you forget to load it?"
                );
              }
            }
          }
          return globalLocale._abbr;
        }
        function defineLocale(name2, config) {
          if (config !== null) {
            var locale2, parentConfig = baseConfig;
            config.abbr = name2;
            if (locales[name2] != null) {
              deprecateSimple(
                "defineLocaleOverride",
                "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."
              );
              parentConfig = locales[name2]._config;
            } else if (config.parentLocale != null) {
              if (locales[config.parentLocale] != null) {
                parentConfig = locales[config.parentLocale]._config;
              } else {
                locale2 = loadLocale(config.parentLocale);
                if (locale2 != null) {
                  parentConfig = locale2._config;
                } else {
                  if (!localeFamilies[config.parentLocale]) {
                    localeFamilies[config.parentLocale] = [];
                  }
                  localeFamilies[config.parentLocale].push({
                    name: name2,
                    config
                  });
                  return null;
                }
              }
            }
            locales[name2] = new Locale(mergeConfigs(parentConfig, config));
            if (localeFamilies[name2]) {
              localeFamilies[name2].forEach(function(x) {
                defineLocale(x.name, x.config);
              });
            }
            getSetGlobalLocale(name2);
            return locales[name2];
          } else {
            delete locales[name2];
            return null;
          }
        }
        function updateLocale(name2, config) {
          if (config != null) {
            var locale2, tmpLocale, parentConfig = baseConfig;
            if (locales[name2] != null && locales[name2].parentLocale != null) {
              locales[name2].set(mergeConfigs(locales[name2]._config, config));
            } else {
              tmpLocale = loadLocale(name2);
              if (tmpLocale != null) {
                parentConfig = tmpLocale._config;
              }
              config = mergeConfigs(parentConfig, config);
              if (tmpLocale == null) {
                config.abbr = name2;
              }
              locale2 = new Locale(config);
              locale2.parentLocale = locales[name2];
              locales[name2] = locale2;
            }
            getSetGlobalLocale(name2);
          } else {
            if (locales[name2] != null) {
              if (locales[name2].parentLocale != null) {
                locales[name2] = locales[name2].parentLocale;
                if (name2 === getSetGlobalLocale()) {
                  getSetGlobalLocale(name2);
                }
              } else if (locales[name2] != null) {
                delete locales[name2];
              }
            }
          }
          return locales[name2];
        }
        function getLocale(key) {
          var locale2;
          if (key && key._locale && key._locale._abbr) {
            key = key._locale._abbr;
          }
          if (!key) {
            return globalLocale;
          }
          if (!isArray(key)) {
            locale2 = loadLocale(key);
            if (locale2) {
              return locale2;
            }
            key = [key];
          }
          return chooseLocale(key);
        }
        function listLocales() {
          return keys(locales);
        }
        function checkOverflow(m) {
          var overflow, a = m._a;
          if (a && getParsingFlags(m).overflow === -2) {
            overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;
            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
              overflow = DATE;
            }
            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
              overflow = WEEK;
            }
            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
              overflow = WEEKDAY;
            }
            getParsingFlags(m).overflow = overflow;
          }
          return m;
        }
        var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, isoDates = [
          ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
          ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
          ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
          ["GGGG-[W]WW", /\d{4}-W\d\d/, false],
          ["YYYY-DDD", /\d{4}-\d{3}/],
          ["YYYY-MM", /\d{4}-\d\d/, false],
          ["YYYYYYMMDD", /[+-]\d{10}/],
          ["YYYYMMDD", /\d{8}/],
          ["GGGG[W]WWE", /\d{4}W\d{3}/],
          ["GGGG[W]WW", /\d{4}W\d{2}/, false],
          ["YYYYDDD", /\d{7}/],
          ["YYYYMM", /\d{6}/, false],
          ["YYYY", /\d{4}/, false]
        ], isoTimes = [
          ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
          ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
          ["HH:mm:ss", /\d\d:\d\d:\d\d/],
          ["HH:mm", /\d\d:\d\d/],
          ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
          ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
          ["HHmmss", /\d\d\d\d\d\d/],
          ["HHmm", /\d\d\d\d/],
          ["HH", /\d\d/]
        ], aspNetJsonRegex = /^\/?Date\((-?\d+)/i, rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, obsOffsets = {
          UT: 0,
          GMT: 0,
          EDT: -4 * 60,
          EST: -5 * 60,
          CDT: -5 * 60,
          CST: -6 * 60,
          MDT: -6 * 60,
          MST: -7 * 60,
          PDT: -7 * 60,
          PST: -8 * 60
        };
        function configFromISO(config) {
          var i2, l, string = config._i, match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat, isoDatesLen = isoDates.length, isoTimesLen = isoTimes.length;
          if (match) {
            getParsingFlags(config).iso = true;
            for (i2 = 0, l = isoDatesLen; i2 < l; i2++) {
              if (isoDates[i2][1].exec(match[1])) {
                dateFormat = isoDates[i2][0];
                allowTime = isoDates[i2][2] !== false;
                break;
              }
            }
            if (dateFormat == null) {
              config._isValid = false;
              return;
            }
            if (match[3]) {
              for (i2 = 0, l = isoTimesLen; i2 < l; i2++) {
                if (isoTimes[i2][1].exec(match[3])) {
                  timeFormat = (match[2] || " ") + isoTimes[i2][0];
                  break;
                }
              }
              if (timeFormat == null) {
                config._isValid = false;
                return;
              }
            }
            if (!allowTime && timeFormat != null) {
              config._isValid = false;
              return;
            }
            if (match[4]) {
              if (tzRegex.exec(match[4])) {
                tzFormat = "Z";
              } else {
                config._isValid = false;
                return;
              }
            }
            config._f = dateFormat + (timeFormat || "") + (tzFormat || "");
            configFromStringAndFormat(config);
          } else {
            config._isValid = false;
          }
        }
        function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
          var result = [
            untruncateYear(yearStr),
            defaultLocaleMonthsShort.indexOf(monthStr),
            parseInt(dayStr, 10),
            parseInt(hourStr, 10),
            parseInt(minuteStr, 10)
          ];
          if (secondStr) {
            result.push(parseInt(secondStr, 10));
          }
          return result;
        }
        function untruncateYear(yearStr) {
          var year = parseInt(yearStr, 10);
          if (year <= 49) {
            return 2e3 + year;
          } else if (year <= 999) {
            return 1900 + year;
          }
          return year;
        }
        function preprocessRFC2822(s) {
          return s.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, "");
        }
        function checkWeekday(weekdayStr, parsedInput, config) {
          if (weekdayStr) {
            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), weekdayActual = new Date(
              parsedInput[0],
              parsedInput[1],
              parsedInput[2]
            ).getDay();
            if (weekdayProvided !== weekdayActual) {
              getParsingFlags(config).weekdayMismatch = true;
              config._isValid = false;
              return false;
            }
          }
          return true;
        }
        function calculateOffset(obsOffset, militaryOffset, numOffset) {
          if (obsOffset) {
            return obsOffsets[obsOffset];
          } else if (militaryOffset) {
            return 0;
          } else {
            var hm = parseInt(numOffset, 10), m = hm % 100, h = (hm - m) / 100;
            return h * 60 + m;
          }
        }
        function configFromRFC2822(config) {
          var match = rfc2822.exec(preprocessRFC2822(config._i)), parsedArray;
          if (match) {
            parsedArray = extractFromRFC2822Strings(
              match[4],
              match[3],
              match[2],
              match[5],
              match[6],
              match[7]
            );
            if (!checkWeekday(match[1], parsedArray, config)) {
              return;
            }
            config._a = parsedArray;
            config._tzm = calculateOffset(match[8], match[9], match[10]);
            config._d = createUTCDate.apply(null, config._a);
            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
            getParsingFlags(config).rfc2822 = true;
          } else {
            config._isValid = false;
          }
        }
        function configFromString(config) {
          var matched = aspNetJsonRegex.exec(config._i);
          if (matched !== null) {
            config._d = new Date(+matched[1]);
            return;
          }
          configFromISO(config);
          if (config._isValid === false) {
            delete config._isValid;
          } else {
            return;
          }
          configFromRFC2822(config);
          if (config._isValid === false) {
            delete config._isValid;
          } else {
            return;
          }
          if (config._strict) {
            config._isValid = false;
          } else {
            hooks.createFromInputFallback(config);
          }
        }
        hooks.createFromInputFallback = deprecate(
          "value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",
          function(config) {
            config._d = new Date(config._i + (config._useUTC ? " UTC" : ""));
          }
        );
        function defaults(a, b, c) {
          if (a != null) {
            return a;
          }
          if (b != null) {
            return b;
          }
          return c;
        }
        function currentDateArray(config) {
          var nowValue = new Date(hooks.now());
          if (config._useUTC) {
            return [
              nowValue.getUTCFullYear(),
              nowValue.getUTCMonth(),
              nowValue.getUTCDate()
            ];
          }
          return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
        }
        function configFromArray(config) {
          var i2, date, input = [], currentDate, expectedWeekday, yearToUse;
          if (config._d) {
            return;
          }
          currentDate = currentDateArray(config);
          if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
            dayOfYearFromWeekInfo(config);
          }
          if (config._dayOfYear != null) {
            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
            if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
              getParsingFlags(config)._overflowDayOfYear = true;
            }
            date = createUTCDate(yearToUse, 0, config._dayOfYear);
            config._a[MONTH] = date.getUTCMonth();
            config._a[DATE] = date.getUTCDate();
          }
          for (i2 = 0; i2 < 3 && config._a[i2] == null; ++i2) {
            config._a[i2] = input[i2] = currentDate[i2];
          }
          for (; i2 < 7; i2++) {
            config._a[i2] = input[i2] = config._a[i2] == null ? i2 === 2 ? 1 : 0 : config._a[i2];
          }
          if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {
            config._nextDay = true;
            config._a[HOUR] = 0;
          }
          config._d = (config._useUTC ? createUTCDate : createDate).apply(
            null,
            input
          );
          expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();
          if (config._tzm != null) {
            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
          }
          if (config._nextDay) {
            config._a[HOUR] = 24;
          }
          if (config._w && typeof config._w.d !== "undefined" && config._w.d !== expectedWeekday) {
            getParsingFlags(config).weekdayMismatch = true;
          }
        }
        function dayOfYearFromWeekInfo(config) {
          var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
          w = config._w;
          if (w.GG != null || w.W != null || w.E != null) {
            dow = 1;
            doy = 4;
            weekYear = defaults(
              w.GG,
              config._a[YEAR],
              weekOfYear(createLocal(), 1, 4).year
            );
            week = defaults(w.W, 1);
            weekday = defaults(w.E, 1);
            if (weekday < 1 || weekday > 7) {
              weekdayOverflow = true;
            }
          } else {
            dow = config._locale._week.dow;
            doy = config._locale._week.doy;
            curWeek = weekOfYear(createLocal(), dow, doy);
            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
            week = defaults(w.w, curWeek.week);
            if (w.d != null) {
              weekday = w.d;
              if (weekday < 0 || weekday > 6) {
                weekdayOverflow = true;
              }
            } else if (w.e != null) {
              weekday = w.e + dow;
              if (w.e < 0 || w.e > 6) {
                weekdayOverflow = true;
              }
            } else {
              weekday = dow;
            }
          }
          if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
            getParsingFlags(config)._overflowWeeks = true;
          } else if (weekdayOverflow != null) {
            getParsingFlags(config)._overflowWeekday = true;
          } else {
            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
            config._a[YEAR] = temp.year;
            config._dayOfYear = temp.dayOfYear;
          }
        }
        hooks.ISO_8601 = function() {
        };
        hooks.RFC_2822 = function() {
        };
        function configFromStringAndFormat(config) {
          if (config._f === hooks.ISO_8601) {
            configFromISO(config);
            return;
          }
          if (config._f === hooks.RFC_2822) {
            configFromRFC2822(config);
            return;
          }
          config._a = [];
          getParsingFlags(config).empty = true;
          var string = "" + config._i, i2, parsedInput, tokens2, token2, skipped, stringLength = string.length, totalParsedInputLength = 0, era, tokenLen;
          tokens2 = expandFormat(config._f, config._locale).match(formattingTokens) || [];
          tokenLen = tokens2.length;
          for (i2 = 0; i2 < tokenLen; i2++) {
            token2 = tokens2[i2];
            parsedInput = (string.match(getParseRegexForToken(token2, config)) || [])[0];
            if (parsedInput) {
              skipped = string.substr(0, string.indexOf(parsedInput));
              if (skipped.length > 0) {
                getParsingFlags(config).unusedInput.push(skipped);
              }
              string = string.slice(
                string.indexOf(parsedInput) + parsedInput.length
              );
              totalParsedInputLength += parsedInput.length;
            }
            if (formatTokenFunctions[token2]) {
              if (parsedInput) {
                getParsingFlags(config).empty = false;
              } else {
                getParsingFlags(config).unusedTokens.push(token2);
              }
              addTimeToArrayFromToken(token2, parsedInput, config);
            } else if (config._strict && !parsedInput) {
              getParsingFlags(config).unusedTokens.push(token2);
            }
          }
          getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
          if (string.length > 0) {
            getParsingFlags(config).unusedInput.push(string);
          }
          if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {
            getParsingFlags(config).bigHour = void 0;
          }
          getParsingFlags(config).parsedDateParts = config._a.slice(0);
          getParsingFlags(config).meridiem = config._meridiem;
          config._a[HOUR] = meridiemFixWrap(
            config._locale,
            config._a[HOUR],
            config._meridiem
          );
          era = getParsingFlags(config).era;
          if (era !== null) {
            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
          }
          configFromArray(config);
          checkOverflow(config);
        }
        function meridiemFixWrap(locale2, hour, meridiem2) {
          var isPm;
          if (meridiem2 == null) {
            return hour;
          }
          if (locale2.meridiemHour != null) {
            return locale2.meridiemHour(hour, meridiem2);
          } else if (locale2.isPM != null) {
            isPm = locale2.isPM(meridiem2);
            if (isPm && hour < 12) {
              hour += 12;
            }
            if (!isPm && hour === 12) {
              hour = 0;
            }
            return hour;
          } else {
            return hour;
          }
        }
        function configFromStringAndArray(config) {
          var tempConfig, bestMoment, scoreToBeat, i2, currentScore, validFormatFound, bestFormatIsValid = false, configfLen = config._f.length;
          if (configfLen === 0) {
            getParsingFlags(config).invalidFormat = true;
            config._d = new Date(NaN);
            return;
          }
          for (i2 = 0; i2 < configfLen; i2++) {
            currentScore = 0;
            validFormatFound = false;
            tempConfig = copyConfig({}, config);
            if (config._useUTC != null) {
              tempConfig._useUTC = config._useUTC;
            }
            tempConfig._f = config._f[i2];
            configFromStringAndFormat(tempConfig);
            if (isValid(tempConfig)) {
              validFormatFound = true;
            }
            currentScore += getParsingFlags(tempConfig).charsLeftOver;
            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
            getParsingFlags(tempConfig).score = currentScore;
            if (!bestFormatIsValid) {
              if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {
                scoreToBeat = currentScore;
                bestMoment = tempConfig;
                if (validFormatFound) {
                  bestFormatIsValid = true;
                }
              }
            } else {
              if (currentScore < scoreToBeat) {
                scoreToBeat = currentScore;
                bestMoment = tempConfig;
              }
            }
          }
          extend(config, bestMoment || tempConfig);
        }
        function configFromObject(config) {
          if (config._d) {
            return;
          }
          var i2 = normalizeObjectUnits(config._i), dayOrDate = i2.day === void 0 ? i2.date : i2.day;
          config._a = map2(
            [i2.year, i2.month, dayOrDate, i2.hour, i2.minute, i2.second, i2.millisecond],
            function(obj) {
              return obj && parseInt(obj, 10);
            }
          );
          configFromArray(config);
        }
        function createFromConfig(config) {
          var res = new Moment(checkOverflow(prepareConfig(config)));
          if (res._nextDay) {
            res.add(1, "d");
            res._nextDay = void 0;
          }
          return res;
        }
        function prepareConfig(config) {
          var input = config._i, format3 = config._f;
          config._locale = config._locale || getLocale(config._l);
          if (input === null || format3 === void 0 && input === "") {
            return createInvalid({ nullInput: true });
          }
          if (typeof input === "string") {
            config._i = input = config._locale.preparse(input);
          }
          if (isMoment(input)) {
            return new Moment(checkOverflow(input));
          } else if (isDate(input)) {
            config._d = input;
          } else if (isArray(format3)) {
            configFromStringAndArray(config);
          } else if (format3) {
            configFromStringAndFormat(config);
          } else {
            configFromInput(config);
          }
          if (!isValid(config)) {
            config._d = null;
          }
          return config;
        }
        function configFromInput(config) {
          var input = config._i;
          if (isUndefined(input)) {
            config._d = new Date(hooks.now());
          } else if (isDate(input)) {
            config._d = new Date(input.valueOf());
          } else if (typeof input === "string") {
            configFromString(config);
          } else if (isArray(input)) {
            config._a = map2(input.slice(0), function(obj) {
              return parseInt(obj, 10);
            });
            configFromArray(config);
          } else if (isObject2(input)) {
            configFromObject(config);
          } else if (isNumber(input)) {
            config._d = new Date(input);
          } else {
            hooks.createFromInputFallback(config);
          }
        }
        function createLocalOrUTC(input, format3, locale2, strict, isUTC) {
          var c = {};
          if (format3 === true || format3 === false) {
            strict = format3;
            format3 = void 0;
          }
          if (locale2 === true || locale2 === false) {
            strict = locale2;
            locale2 = void 0;
          }
          if (isObject2(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {
            input = void 0;
          }
          c._isAMomentObject = true;
          c._useUTC = c._isUTC = isUTC;
          c._l = locale2;
          c._i = input;
          c._f = format3;
          c._strict = strict;
          return createFromConfig(c);
        }
        function createLocal(input, format3, locale2, strict) {
          return createLocalOrUTC(input, format3, locale2, strict, false);
        }
        var prototypeMin = deprecate(
          "moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",
          function() {
            var other = createLocal.apply(null, arguments);
            if (this.isValid() && other.isValid()) {
              return other < this ? this : other;
            } else {
              return createInvalid();
            }
          }
        ), prototypeMax = deprecate(
          "moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",
          function() {
            var other = createLocal.apply(null, arguments);
            if (this.isValid() && other.isValid()) {
              return other > this ? this : other;
            } else {
              return createInvalid();
            }
          }
        );
        function pickBy(fn, moments) {
          var res, i2;
          if (moments.length === 1 && isArray(moments[0])) {
            moments = moments[0];
          }
          if (!moments.length) {
            return createLocal();
          }
          res = moments[0];
          for (i2 = 1; i2 < moments.length; ++i2) {
            if (!moments[i2].isValid() || moments[i2][fn](res)) {
              res = moments[i2];
            }
          }
          return res;
        }
        function min() {
          var args = [].slice.call(arguments, 0);
          return pickBy("isBefore", args);
        }
        function max() {
          var args = [].slice.call(arguments, 0);
          return pickBy("isAfter", args);
        }
        var now = function() {
          return Date.now ? Date.now() : +new Date();
        };
        var ordering = [
          "year",
          "quarter",
          "month",
          "week",
          "day",
          "hour",
          "minute",
          "second",
          "millisecond"
        ];
        function isDurationValid(m) {
          var key, unitHasDecimal = false, i2, orderLen = ordering.length;
          for (key in m) {
            if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
              return false;
            }
          }
          for (i2 = 0; i2 < orderLen; ++i2) {
            if (m[ordering[i2]]) {
              if (unitHasDecimal) {
                return false;
              }
              if (parseFloat(m[ordering[i2]]) !== toInt(m[ordering[i2]])) {
                unitHasDecimal = true;
              }
            }
          }
          return true;
        }
        function isValid$1() {
          return this._isValid;
        }
        function createInvalid$1() {
          return createDuration(NaN);
        }
        function Duration(duration) {
          var normalizedInput = normalizeObjectUnits(duration), years2 = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, months2 = normalizedInput.month || 0, weeks2 = normalizedInput.week || normalizedInput.isoWeek || 0, days2 = normalizedInput.day || 0, hours2 = normalizedInput.hour || 0, minutes2 = normalizedInput.minute || 0, seconds2 = normalizedInput.second || 0, milliseconds2 = normalizedInput.millisecond || 0;
          this._isValid = isDurationValid(normalizedInput);
          this._milliseconds = +milliseconds2 + seconds2 * 1e3 + minutes2 * 6e4 + hours2 * 1e3 * 60 * 60;
          this._days = +days2 + weeks2 * 7;
          this._months = +months2 + quarters * 3 + years2 * 12;
          this._data = {};
          this._locale = getLocale();
          this._bubble();
        }
        function isDuration(obj) {
          return obj instanceof Duration;
        }
        function absRound(number) {
          if (number < 0) {
            return Math.round(-1 * number) * -1;
          } else {
            return Math.round(number);
          }
        }
        function compareArrays(array1, array2, dontConvert) {
          var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i2;
          for (i2 = 0; i2 < len; i2++) {
            if (dontConvert && array1[i2] !== array2[i2] || !dontConvert && toInt(array1[i2]) !== toInt(array2[i2])) {
              diffs++;
            }
          }
          return diffs + lengthDiff;
        }
        function offset(token2, separator) {
          addFormatToken(token2, 0, 0, function() {
            var offset2 = this.utcOffset(), sign2 = "+";
            if (offset2 < 0) {
              offset2 = -offset2;
              sign2 = "-";
            }
            return sign2 + zeroFill(~~(offset2 / 60), 2) + separator + zeroFill(~~offset2 % 60, 2);
          });
        }
        offset("Z", ":");
        offset("ZZ", "");
        addRegexToken("Z", matchShortOffset);
        addRegexToken("ZZ", matchShortOffset);
        addParseToken(["Z", "ZZ"], function(input, array, config) {
          config._useUTC = true;
          config._tzm = offsetFromString(matchShortOffset, input);
        });
        var chunkOffset = /([\+\-]|\d\d)/gi;
        function offsetFromString(matcher, string) {
          var matches = (string || "").match(matcher), chunk, parts2, minutes2;
          if (matches === null) {
            return null;
          }
          chunk = matches[matches.length - 1] || [];
          parts2 = (chunk + "").match(chunkOffset) || ["-", 0, 0];
          minutes2 = +(parts2[1] * 60) + toInt(parts2[2]);
          return minutes2 === 0 ? 0 : parts2[0] === "+" ? minutes2 : -minutes2;
        }
        function cloneWithOffset(input, model) {
          var res, diff2;
          if (model._isUTC) {
            res = model.clone();
            diff2 = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
            res._d.setTime(res._d.valueOf() + diff2);
            hooks.updateOffset(res, false);
            return res;
          } else {
            return createLocal(input).local();
          }
        }
        function getDateOffset(m) {
          return -Math.round(m._d.getTimezoneOffset());
        }
        hooks.updateOffset = function() {
        };
        function getSetOffset(input, keepLocalTime, keepMinutes) {
          var offset2 = this._offset || 0, localAdjust;
          if (!this.isValid()) {
            return input != null ? this : NaN;
          }
          if (input != null) {
            if (typeof input === "string") {
              input = offsetFromString(matchShortOffset, input);
              if (input === null) {
                return this;
              }
            } else if (Math.abs(input) < 16 && !keepMinutes) {
              input = input * 60;
            }
            if (!this._isUTC && keepLocalTime) {
              localAdjust = getDateOffset(this);
            }
            this._offset = input;
            this._isUTC = true;
            if (localAdjust != null) {
              this.add(localAdjust, "m");
            }
            if (offset2 !== input) {
              if (!keepLocalTime || this._changeInProgress) {
                addSubtract(
                  this,
                  createDuration(input - offset2, "m"),
                  1,
                  false
                );
              } else if (!this._changeInProgress) {
                this._changeInProgress = true;
                hooks.updateOffset(this, true);
                this._changeInProgress = null;
              }
            }
            return this;
          } else {
            return this._isUTC ? offset2 : getDateOffset(this);
          }
        }
        function getSetZone(input, keepLocalTime) {
          if (input != null) {
            if (typeof input !== "string") {
              input = -input;
            }
            this.utcOffset(input, keepLocalTime);
            return this;
          } else {
            return -this.utcOffset();
          }
        }
        function setOffsetToUTC(keepLocalTime) {
          return this.utcOffset(0, keepLocalTime);
        }
        function setOffsetToLocal(keepLocalTime) {
          if (this._isUTC) {
            this.utcOffset(0, keepLocalTime);
            this._isUTC = false;
            if (keepLocalTime) {
              this.subtract(getDateOffset(this), "m");
            }
          }
          return this;
        }
        function setOffsetToParsedOffset() {
          if (this._tzm != null) {
            this.utcOffset(this._tzm, false, true);
          } else if (typeof this._i === "string") {
            var tZone = offsetFromString(matchOffset, this._i);
            if (tZone != null) {
              this.utcOffset(tZone);
            } else {
              this.utcOffset(0, true);
            }
          }
          return this;
        }
        function hasAlignedHourOffset(input) {
          if (!this.isValid()) {
            return false;
          }
          input = input ? createLocal(input).utcOffset() : 0;
          return (this.utcOffset() - input) % 60 === 0;
        }
        function isDaylightSavingTime() {
          return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();
        }
        function isDaylightSavingTimeShifted() {
          if (!isUndefined(this._isDSTShifted)) {
            return this._isDSTShifted;
          }
          var c = {}, other;
          copyConfig(c, this);
          c = prepareConfig(c);
          if (c._a) {
            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
            this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;
          } else {
            this._isDSTShifted = false;
          }
          return this._isDSTShifted;
        }
        function isLocal() {
          return this.isValid() ? !this._isUTC : false;
        }
        function isUtcOffset() {
          return this.isValid() ? this._isUTC : false;
        }
        function isUtc() {
          return this.isValid() ? this._isUTC && this._offset === 0 : false;
        }
        var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
        function createDuration(input, key) {
          var duration = input, match = null, sign2, ret, diffRes;
          if (isDuration(input)) {
            duration = {
              ms: input._milliseconds,
              d: input._days,
              M: input._months
            };
          } else if (isNumber(input) || !isNaN(+input)) {
            duration = {};
            if (key) {
              duration[key] = +input;
            } else {
              duration.milliseconds = +input;
            }
          } else if (match = aspNetRegex.exec(input)) {
            sign2 = match[1] === "-" ? -1 : 1;
            duration = {
              y: 0,
              d: toInt(match[DATE]) * sign2,
              h: toInt(match[HOUR]) * sign2,
              m: toInt(match[MINUTE]) * sign2,
              s: toInt(match[SECOND]) * sign2,
              ms: toInt(absRound(match[MILLISECOND] * 1e3)) * sign2
            };
          } else if (match = isoRegex.exec(input)) {
            sign2 = match[1] === "-" ? -1 : 1;
            duration = {
              y: parseIso(match[2], sign2),
              M: parseIso(match[3], sign2),
              w: parseIso(match[4], sign2),
              d: parseIso(match[5], sign2),
              h: parseIso(match[6], sign2),
              m: parseIso(match[7], sign2),
              s: parseIso(match[8], sign2)
            };
          } else if (duration == null) {
            duration = {};
          } else if (typeof duration === "object" && ("from" in duration || "to" in duration)) {
            diffRes = momentsDifference(
              createLocal(duration.from),
              createLocal(duration.to)
            );
            duration = {};
            duration.ms = diffRes.milliseconds;
            duration.M = diffRes.months;
          }
          ret = new Duration(duration);
          if (isDuration(input) && hasOwnProp(input, "_locale")) {
            ret._locale = input._locale;
          }
          if (isDuration(input) && hasOwnProp(input, "_isValid")) {
            ret._isValid = input._isValid;
          }
          return ret;
        }
        createDuration.fn = Duration.prototype;
        createDuration.invalid = createInvalid$1;
        function parseIso(inp, sign2) {
          var res = inp && parseFloat(inp.replace(",", "."));
          return (isNaN(res) ? 0 : res) * sign2;
        }
        function positiveMomentsDifference(base, other) {
          var res = {};
          res.months = other.month() - base.month() + (other.year() - base.year()) * 12;
          if (base.clone().add(res.months, "M").isAfter(other)) {
            --res.months;
          }
          res.milliseconds = +other - +base.clone().add(res.months, "M");
          return res;
        }
        function momentsDifference(base, other) {
          var res;
          if (!(base.isValid() && other.isValid())) {
            return { milliseconds: 0, months: 0 };
          }
          other = cloneWithOffset(other, base);
          if (base.isBefore(other)) {
            res = positiveMomentsDifference(base, other);
          } else {
            res = positiveMomentsDifference(other, base);
            res.milliseconds = -res.milliseconds;
            res.months = -res.months;
          }
          return res;
        }
        function createAdder(direction, name2) {
          return function(val, period) {
            var dur, tmp;
            if (period !== null && !isNaN(+period)) {
              deprecateSimple(
                name2,
                "moment()." + name2 + "(period, number) is deprecated. Please use moment()." + name2 + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."
              );
              tmp = val;
              val = period;
              period = tmp;
            }
            dur = createDuration(val, period);
            addSubtract(this, dur, direction);
            return this;
          };
        }
        function addSubtract(mom, duration, isAdding, updateOffset) {
          var milliseconds2 = duration._milliseconds, days2 = absRound(duration._days), months2 = absRound(duration._months);
          if (!mom.isValid()) {
            return;
          }
          updateOffset = updateOffset == null ? true : updateOffset;
          if (months2) {
            setMonth(mom, get(mom, "Month") + months2 * isAdding);
          }
          if (days2) {
            set$1(mom, "Date", get(mom, "Date") + days2 * isAdding);
          }
          if (milliseconds2) {
            mom._d.setTime(mom._d.valueOf() + milliseconds2 * isAdding);
          }
          if (updateOffset) {
            hooks.updateOffset(mom, days2 || months2);
          }
        }
        var add = createAdder(1, "add"), subtract = createAdder(-1, "subtract");
        function isString(input) {
          return typeof input === "string" || input instanceof String;
        }
        function isMomentInput(input) {
          return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0;
        }
        function isMomentInputObject(input) {
          var objectTest = isObject2(input) && !isObjectEmpty(input), propertyTest = false, properties = [
            "years",
            "year",
            "y",
            "months",
            "month",
            "M",
            "days",
            "day",
            "d",
            "dates",
            "date",
            "D",
            "hours",
            "hour",
            "h",
            "minutes",
            "minute",
            "m",
            "seconds",
            "second",
            "s",
            "milliseconds",
            "millisecond",
            "ms"
          ], i2, property, propertyLen = properties.length;
          for (i2 = 0; i2 < propertyLen; i2 += 1) {
            property = properties[i2];
            propertyTest = propertyTest || hasOwnProp(input, property);
          }
          return objectTest && propertyTest;
        }
        function isNumberOrStringArray(input) {
          var arrayTest = isArray(input), dataTypeTest = false;
          if (arrayTest) {
            dataTypeTest = input.filter(function(item) {
              return !isNumber(item) && isString(input);
            }).length === 0;
          }
          return arrayTest && dataTypeTest;
        }
        function isCalendarSpec(input) {
          var objectTest = isObject2(input) && !isObjectEmpty(input), propertyTest = false, properties = [
            "sameDay",
            "nextDay",
            "lastDay",
            "nextWeek",
            "lastWeek",
            "sameElse"
          ], i2, property;
          for (i2 = 0; i2 < properties.length; i2 += 1) {
            property = properties[i2];
            propertyTest = propertyTest || hasOwnProp(input, property);
          }
          return objectTest && propertyTest;
        }
        function getCalendarFormat(myMoment, now2) {
          var diff2 = myMoment.diff(now2, "days", true);
          return diff2 < -6 ? "sameElse" : diff2 < -1 ? "lastWeek" : diff2 < 0 ? "lastDay" : diff2 < 1 ? "sameDay" : diff2 < 2 ? "nextDay" : diff2 < 7 ? "nextWeek" : "sameElse";
        }
        function calendar$1(time, formats) {
          if (arguments.length === 1) {
            if (!arguments[0]) {
              time = void 0;
              formats = void 0;
            } else if (isMomentInput(arguments[0])) {
              time = arguments[0];
              formats = void 0;
            } else if (isCalendarSpec(arguments[0])) {
              formats = arguments[0];
              time = void 0;
            }
          }
          var now2 = time || createLocal(), sod = cloneWithOffset(now2, this).startOf("day"), format3 = hooks.calendarFormat(this, sod) || "sameElse", output = formats && (isFunction(formats[format3]) ? formats[format3].call(this, now2) : formats[format3]);
          return this.format(
            output || this.localeData().calendar(format3, this, createLocal(now2))
          );
        }
        function clone() {
          return new Moment(this);
        }
        function isAfter(input, units) {
          var localInput = isMoment(input) ? input : createLocal(input);
          if (!(this.isValid() && localInput.isValid())) {
            return false;
          }
          units = normalizeUnits(units) || "millisecond";
          if (units === "millisecond") {
            return this.valueOf() > localInput.valueOf();
          } else {
            return localInput.valueOf() < this.clone().startOf(units).valueOf();
          }
        }
        function isBefore(input, units) {
          var localInput = isMoment(input) ? input : createLocal(input);
          if (!(this.isValid() && localInput.isValid())) {
            return false;
          }
          units = normalizeUnits(units) || "millisecond";
          if (units === "millisecond") {
            return this.valueOf() < localInput.valueOf();
          } else {
            return this.clone().endOf(units).valueOf() < localInput.valueOf();
          }
        }
        function isBetween(from2, to2, units, inclusivity) {
          var localFrom = isMoment(from2) ? from2 : createLocal(from2), localTo = isMoment(to2) ? to2 : createLocal(to2);
          if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
            return false;
          }
          inclusivity = inclusivity || "()";
          return (inclusivity[0] === "(" ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ")" ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));
        }
        function isSame(input, units) {
          var localInput = isMoment(input) ? input : createLocal(input), inputMs;
          if (!(this.isValid() && localInput.isValid())) {
            return false;
          }
          units = normalizeUnits(units) || "millisecond";
          if (units === "millisecond") {
            return this.valueOf() === localInput.valueOf();
          } else {
            inputMs = localInput.valueOf();
            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
          }
        }
        function isSameOrAfter(input, units) {
          return this.isSame(input, units) || this.isAfter(input, units);
        }
        function isSameOrBefore(input, units) {
          return this.isSame(input, units) || this.isBefore(input, units);
        }
        function diff(input, units, asFloat) {
          var that, zoneDelta, output;
          if (!this.isValid()) {
            return NaN;
          }
          that = cloneWithOffset(input, this);
          if (!that.isValid()) {
            return NaN;
          }
          zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
          units = normalizeUnits(units);
          switch (units) {
            case "year":
              output = monthDiff(this, that) / 12;
              break;
            case "month":
              output = monthDiff(this, that);
              break;
            case "quarter":
              output = monthDiff(this, that) / 3;
              break;
            case "second":
              output = (this - that) / 1e3;
              break;
            case "minute":
              output = (this - that) / 6e4;
              break;
            case "hour":
              output = (this - that) / 36e5;
              break;
            case "day":
              output = (this - that - zoneDelta) / 864e5;
              break;
            case "week":
              output = (this - that - zoneDelta) / 6048e5;
              break;
            default:
              output = this - that;
          }
          return asFloat ? output : absFloor(output);
        }
        function monthDiff(a, b) {
          if (a.date() < b.date()) {
            return -monthDiff(b, a);
          }
          var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), anchor = a.clone().add(wholeMonthDiff, "months"), anchor2, adjust;
          if (b - anchor < 0) {
            anchor2 = a.clone().add(wholeMonthDiff - 1, "months");
            adjust = (b - anchor) / (anchor - anchor2);
          } else {
            anchor2 = a.clone().add(wholeMonthDiff + 1, "months");
            adjust = (b - anchor) / (anchor2 - anchor);
          }
          return -(wholeMonthDiff + adjust) || 0;
        }
        hooks.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ";
        hooks.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
        function toString2() {
          return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ");
        }
        function toISOString(keepOffset) {
          if (!this.isValid()) {
            return null;
          }
          var utc = keepOffset !== true, m = utc ? this.clone().utc() : this;
          if (m.year() < 0 || m.year() > 9999) {
            return formatMoment(
              m,
              utc ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"
            );
          }
          if (isFunction(Date.prototype.toISOString)) {
            if (utc) {
              return this.toDate().toISOString();
            } else {
              return new Date(this.valueOf() + this.utcOffset() * 60 * 1e3).toISOString().replace("Z", formatMoment(m, "Z"));
            }
          }
          return formatMoment(
            m,
            utc ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ"
          );
        }
        function inspect() {
          if (!this.isValid()) {
            return "moment.invalid(/* " + this._i + " */)";
          }
          var func = "moment", zone = "", prefix, year, datetime, suffix;
          if (!this.isLocal()) {
            func = this.utcOffset() === 0 ? "moment.utc" : "moment.parseZone";
            zone = "Z";
          }
          prefix = "[" + func + '("]';
          year = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY";
          datetime = "-MM-DD[T]HH:mm:ss.SSS";
          suffix = zone + '[")]';
          return this.format(prefix + year + datetime + suffix);
        }
        function format2(inputString) {
          if (!inputString) {
            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
          }
          var output = formatMoment(this, inputString);
          return this.localeData().postformat(output);
        }
        function from(time, withoutSuffix) {
          if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {
            return createDuration({ to: this, from: time }).locale(this.locale()).humanize(!withoutSuffix);
          } else {
            return this.localeData().invalidDate();
          }
        }
        function fromNow(withoutSuffix) {
          return this.from(createLocal(), withoutSuffix);
        }
        function to(time, withoutSuffix) {
          if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {
            return createDuration({ from: this, to: time }).locale(this.locale()).humanize(!withoutSuffix);
          } else {
            return this.localeData().invalidDate();
          }
        }
        function toNow(withoutSuffix) {
          return this.to(createLocal(), withoutSuffix);
        }
        function locale(key) {
          var newLocaleData;
          if (key === void 0) {
            return this._locale._abbr;
          } else {
            newLocaleData = getLocale(key);
            if (newLocaleData != null) {
              this._locale = newLocaleData;
            }
            return this;
          }
        }
        var lang = deprecate(
          "moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",
          function(key) {
            if (key === void 0) {
              return this.localeData();
            } else {
              return this.locale(key);
            }
          }
        );
        function localeData() {
          return this._locale;
        }
        var MS_PER_SECOND = 1e3, MS_PER_MINUTE = 60 * MS_PER_SECOND, MS_PER_HOUR = 60 * MS_PER_MINUTE, MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
        function mod$1(dividend, divisor) {
          return (dividend % divisor + divisor) % divisor;
        }
        function localStartOfDate(y, m, d) {
          if (y < 100 && y >= 0) {
            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
          } else {
            return new Date(y, m, d).valueOf();
          }
        }
        function utcStartOfDate(y, m, d) {
          if (y < 100 && y >= 0) {
            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
          } else {
            return Date.UTC(y, m, d);
          }
        }
        function startOf(units) {
          var time, startOfDate;
          units = normalizeUnits(units);
          if (units === void 0 || units === "millisecond" || !this.isValid()) {
            return this;
          }
          startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
          switch (units) {
            case "year":
              time = startOfDate(this.year(), 0, 1);
              break;
            case "quarter":
              time = startOfDate(
                this.year(),
                this.month() - this.month() % 3,
                1
              );
              break;
            case "month":
              time = startOfDate(this.year(), this.month(), 1);
              break;
            case "week":
              time = startOfDate(
                this.year(),
                this.month(),
                this.date() - this.weekday()
              );
              break;
            case "isoWeek":
              time = startOfDate(
                this.year(),
                this.month(),
                this.date() - (this.isoWeekday() - 1)
              );
              break;
            case "day":
            case "date":
              time = startOfDate(this.year(), this.month(), this.date());
              break;
            case "hour":
              time = this._d.valueOf();
              time -= mod$1(
                time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
                MS_PER_HOUR
              );
              break;
            case "minute":
              time = this._d.valueOf();
              time -= mod$1(time, MS_PER_MINUTE);
              break;
            case "second":
              time = this._d.valueOf();
              time -= mod$1(time, MS_PER_SECOND);
              break;
          }
          this._d.setTime(time);
          hooks.updateOffset(this, true);
          return this;
        }
        function endOf(units) {
          var time, startOfDate;
          units = normalizeUnits(units);
          if (units === void 0 || units === "millisecond" || !this.isValid()) {
            return this;
          }
          startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
          switch (units) {
            case "year":
              time = startOfDate(this.year() + 1, 0, 1) - 1;
              break;
            case "quarter":
              time = startOfDate(
                this.year(),
                this.month() - this.month() % 3 + 3,
                1
              ) - 1;
              break;
            case "month":
              time = startOfDate(this.year(), this.month() + 1, 1) - 1;
              break;
            case "week":
              time = startOfDate(
                this.year(),
                this.month(),
                this.date() - this.weekday() + 7
              ) - 1;
              break;
            case "isoWeek":
              time = startOfDate(
                this.year(),
                this.month(),
                this.date() - (this.isoWeekday() - 1) + 7
              ) - 1;
              break;
            case "day":
            case "date":
              time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
              break;
            case "hour":
              time = this._d.valueOf();
              time += MS_PER_HOUR - mod$1(
                time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
                MS_PER_HOUR
              ) - 1;
              break;
            case "minute":
              time = this._d.valueOf();
              time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
              break;
            case "second":
              time = this._d.valueOf();
              time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
              break;
          }
          this._d.setTime(time);
          hooks.updateOffset(this, true);
          return this;
        }
        function valueOf() {
          return this._d.valueOf() - (this._offset || 0) * 6e4;
        }
        function unix() {
          return Math.floor(this.valueOf() / 1e3);
        }
        function toDate() {
          return new Date(this.valueOf());
        }
        function toArray2() {
          var m = this;
          return [
            m.year(),
            m.month(),
            m.date(),
            m.hour(),
            m.minute(),
            m.second(),
            m.millisecond()
          ];
        }
        function toObject() {
          var m = this;
          return {
            years: m.year(),
            months: m.month(),
            date: m.date(),
            hours: m.hours(),
            minutes: m.minutes(),
            seconds: m.seconds(),
            milliseconds: m.milliseconds()
          };
        }
        function toJSON() {
          return this.isValid() ? this.toISOString() : null;
        }
        function isValid$2() {
          return isValid(this);
        }
        function parsingFlags() {
          return extend({}, getParsingFlags(this));
        }
        function invalidAt() {
          return getParsingFlags(this).overflow;
        }
        function creationData() {
          return {
            input: this._i,
            format: this._f,
            locale: this._locale,
            isUTC: this._isUTC,
            strict: this._strict
          };
        }
        addFormatToken("N", 0, 0, "eraAbbr");
        addFormatToken("NN", 0, 0, "eraAbbr");
        addFormatToken("NNN", 0, 0, "eraAbbr");
        addFormatToken("NNNN", 0, 0, "eraName");
        addFormatToken("NNNNN", 0, 0, "eraNarrow");
        addFormatToken("y", ["y", 1], "yo", "eraYear");
        addFormatToken("y", ["yy", 2], 0, "eraYear");
        addFormatToken("y", ["yyy", 3], 0, "eraYear");
        addFormatToken("y", ["yyyy", 4], 0, "eraYear");
        addRegexToken("N", matchEraAbbr);
        addRegexToken("NN", matchEraAbbr);
        addRegexToken("NNN", matchEraAbbr);
        addRegexToken("NNNN", matchEraName);
        addRegexToken("NNNNN", matchEraNarrow);
        addParseToken(
          ["N", "NN", "NNN", "NNNN", "NNNNN"],
          function(input, array, config, token2) {
            var era = config._locale.erasParse(input, token2, config._strict);
            if (era) {
              getParsingFlags(config).era = era;
            } else {
              getParsingFlags(config).invalidEra = input;
            }
          }
        );
        addRegexToken("y", matchUnsigned);
        addRegexToken("yy", matchUnsigned);
        addRegexToken("yyy", matchUnsigned);
        addRegexToken("yyyy", matchUnsigned);
        addRegexToken("yo", matchEraYearOrdinal);
        addParseToken(["y", "yy", "yyy", "yyyy"], YEAR);
        addParseToken(["yo"], function(input, array, config, token2) {
          var match;
          if (config._locale._eraYearOrdinalRegex) {
            match = input.match(config._locale._eraYearOrdinalRegex);
          }
          if (config._locale.eraYearOrdinalParse) {
            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
          } else {
            array[YEAR] = parseInt(input, 10);
          }
        });
        function localeEras(m, format3) {
          var i2, l, date, eras = this._eras || getLocale("en")._eras;
          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
            switch (typeof eras[i2].since) {
              case "string":
                date = hooks(eras[i2].since).startOf("day");
                eras[i2].since = date.valueOf();
                break;
            }
            switch (typeof eras[i2].until) {
              case "undefined":
                eras[i2].until = Infinity;
                break;
              case "string":
                date = hooks(eras[i2].until).startOf("day").valueOf();
                eras[i2].until = date.valueOf();
                break;
            }
          }
          return eras;
        }
        function localeErasParse(eraName, format3, strict) {
          var i2, l, eras = this.eras(), name2, abbr, narrow;
          eraName = eraName.toUpperCase();
          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
            name2 = eras[i2].name.toUpperCase();
            abbr = eras[i2].abbr.toUpperCase();
            narrow = eras[i2].narrow.toUpperCase();
            if (strict) {
              switch (format3) {
                case "N":
                case "NN":
                case "NNN":
                  if (abbr === eraName) {
                    return eras[i2];
                  }
                  break;
                case "NNNN":
                  if (name2 === eraName) {
                    return eras[i2];
                  }
                  break;
                case "NNNNN":
                  if (narrow === eraName) {
                    return eras[i2];
                  }
                  break;
              }
            } else if ([name2, abbr, narrow].indexOf(eraName) >= 0) {
              return eras[i2];
            }
          }
        }
        function localeErasConvertYear(era, year) {
          var dir = era.since <= era.until ? 1 : -1;
          if (year === void 0) {
            return hooks(era.since).year();
          } else {
            return hooks(era.since).year() + (year - era.offset) * dir;
          }
        }
        function getEraName() {
          var i2, l, val, eras = this.localeData().eras();
          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
            val = this.clone().startOf("day").valueOf();
            if (eras[i2].since <= val && val <= eras[i2].until) {
              return eras[i2].name;
            }
            if (eras[i2].until <= val && val <= eras[i2].since) {
              return eras[i2].name;
            }
          }
          return "";
        }
        function getEraNarrow() {
          var i2, l, val, eras = this.localeData().eras();
          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
            val = this.clone().startOf("day").valueOf();
            if (eras[i2].since <= val && val <= eras[i2].until) {
              return eras[i2].narrow;
            }
            if (eras[i2].until <= val && val <= eras[i2].since) {
              return eras[i2].narrow;
            }
          }
          return "";
        }
        function getEraAbbr() {
          var i2, l, val, eras = this.localeData().eras();
          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
            val = this.clone().startOf("day").valueOf();
            if (eras[i2].since <= val && val <= eras[i2].until) {
              return eras[i2].abbr;
            }
            if (eras[i2].until <= val && val <= eras[i2].since) {
              return eras[i2].abbr;
            }
          }
          return "";
        }
        function getEraYear() {
          var i2, l, dir, val, eras = this.localeData().eras();
          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
            dir = eras[i2].since <= eras[i2].until ? 1 : -1;
            val = this.clone().startOf("day").valueOf();
            if (eras[i2].since <= val && val <= eras[i2].until || eras[i2].until <= val && val <= eras[i2].since) {
              return (this.year() - hooks(eras[i2].since).year()) * dir + eras[i2].offset;
            }
          }
          return this.year();
        }
        function erasNameRegex(isStrict) {
          if (!hasOwnProp(this, "_erasNameRegex")) {
            computeErasParse.call(this);
          }
          return isStrict ? this._erasNameRegex : this._erasRegex;
        }
        function erasAbbrRegex(isStrict) {
          if (!hasOwnProp(this, "_erasAbbrRegex")) {
            computeErasParse.call(this);
          }
          return isStrict ? this._erasAbbrRegex : this._erasRegex;
        }
        function erasNarrowRegex(isStrict) {
          if (!hasOwnProp(this, "_erasNarrowRegex")) {
            computeErasParse.call(this);
          }
          return isStrict ? this._erasNarrowRegex : this._erasRegex;
        }
        function matchEraAbbr(isStrict, locale2) {
          return locale2.erasAbbrRegex(isStrict);
        }
        function matchEraName(isStrict, locale2) {
          return locale2.erasNameRegex(isStrict);
        }
        function matchEraNarrow(isStrict, locale2) {
          return locale2.erasNarrowRegex(isStrict);
        }
        function matchEraYearOrdinal(isStrict, locale2) {
          return locale2._eraYearOrdinalRegex || matchUnsigned;
        }
        function computeErasParse() {
          var abbrPieces = [], namePieces = [], narrowPieces = [], mixedPieces = [], i2, l, eras = this.eras();
          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
            namePieces.push(regexEscape(eras[i2].name));
            abbrPieces.push(regexEscape(eras[i2].abbr));
            narrowPieces.push(regexEscape(eras[i2].narrow));
            mixedPieces.push(regexEscape(eras[i2].name));
            mixedPieces.push(regexEscape(eras[i2].abbr));
            mixedPieces.push(regexEscape(eras[i2].narrow));
          }
          this._erasRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i");
          this._erasNameRegex = new RegExp("^(" + namePieces.join("|") + ")", "i");
          this._erasAbbrRegex = new RegExp("^(" + abbrPieces.join("|") + ")", "i");
          this._erasNarrowRegex = new RegExp(
            "^(" + narrowPieces.join("|") + ")",
            "i"
          );
        }
        addFormatToken(0, ["gg", 2], 0, function() {
          return this.weekYear() % 100;
        });
        addFormatToken(0, ["GG", 2], 0, function() {
          return this.isoWeekYear() % 100;
        });
        function addWeekYearFormatToken(token2, getter) {
          addFormatToken(0, [token2, token2.length], 0, getter);
        }
        addWeekYearFormatToken("gggg", "weekYear");
        addWeekYearFormatToken("ggggg", "weekYear");
        addWeekYearFormatToken("GGGG", "isoWeekYear");
        addWeekYearFormatToken("GGGGG", "isoWeekYear");
        addUnitAlias("weekYear", "gg");
        addUnitAlias("isoWeekYear", "GG");
        addUnitPriority("weekYear", 1);
        addUnitPriority("isoWeekYear", 1);
        addRegexToken("G", matchSigned);
        addRegexToken("g", matchSigned);
        addRegexToken("GG", match1to2, match2);
        addRegexToken("gg", match1to2, match2);
        addRegexToken("GGGG", match1to4, match4);
        addRegexToken("gggg", match1to4, match4);
        addRegexToken("GGGGG", match1to6, match6);
        addRegexToken("ggggg", match1to6, match6);
        addWeekParseToken(
          ["gggg", "ggggg", "GGGG", "GGGGG"],
          function(input, week, config, token2) {
            week[token2.substr(0, 2)] = toInt(input);
          }
        );
        addWeekParseToken(["gg", "GG"], function(input, week, config, token2) {
          week[token2] = hooks.parseTwoDigitYear(input);
        });
        function getSetWeekYear(input) {
          return getSetWeekYearHelper.call(
            this,
            input,
            this.week(),
            this.weekday(),
            this.localeData()._week.dow,
            this.localeData()._week.doy
          );
        }
        function getSetISOWeekYear(input) {
          return getSetWeekYearHelper.call(
            this,
            input,
            this.isoWeek(),
            this.isoWeekday(),
            1,
            4
          );
        }
        function getISOWeeksInYear() {
          return weeksInYear(this.year(), 1, 4);
        }
        function getISOWeeksInISOWeekYear() {
          return weeksInYear(this.isoWeekYear(), 1, 4);
        }
        function getWeeksInYear() {
          var weekInfo = this.localeData()._week;
          return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
        }
        function getWeeksInWeekYear() {
          var weekInfo = this.localeData()._week;
          return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
        }
        function getSetWeekYearHelper(input, week, weekday, dow, doy) {
          var weeksTarget;
          if (input == null) {
            return weekOfYear(this, dow, doy).year;
          } else {
            weeksTarget = weeksInYear(input, dow, doy);
            if (week > weeksTarget) {
              week = weeksTarget;
            }
            return setWeekAll.call(this, input, week, weekday, dow, doy);
          }
        }
        function setWeekAll(weekYear, week, weekday, dow, doy) {
          var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
          this.year(date.getUTCFullYear());
          this.month(date.getUTCMonth());
          this.date(date.getUTCDate());
          return this;
        }
        addFormatToken("Q", 0, "Qo", "quarter");
        addUnitAlias("quarter", "Q");
        addUnitPriority("quarter", 7);
        addRegexToken("Q", match1);
        addParseToken("Q", function(input, array) {
          array[MONTH] = (toInt(input) - 1) * 3;
        });
        function getSetQuarter(input) {
          return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
        }
        addFormatToken("D", ["DD", 2], "Do", "date");
        addUnitAlias("date", "D");
        addUnitPriority("date", 9);
        addRegexToken("D", match1to2);
        addRegexToken("DD", match1to2, match2);
        addRegexToken("Do", function(isStrict, locale2) {
          return isStrict ? locale2._dayOfMonthOrdinalParse || locale2._ordinalParse : locale2._dayOfMonthOrdinalParseLenient;
        });
        addParseToken(["D", "DD"], DATE);
        addParseToken("Do", function(input, array) {
          array[DATE] = toInt(input.match(match1to2)[0]);
        });
        var getSetDayOfMonth = makeGetSet("Date", true);
        addFormatToken("DDD", ["DDDD", 3], "DDDo", "dayOfYear");
        addUnitAlias("dayOfYear", "DDD");
        addUnitPriority("dayOfYear", 4);
        addRegexToken("DDD", match1to3);
        addRegexToken("DDDD", match3);
        addParseToken(["DDD", "DDDD"], function(input, array, config) {
          config._dayOfYear = toInt(input);
        });
        function getSetDayOfYear(input) {
          var dayOfYear = Math.round(
            (this.clone().startOf("day") - this.clone().startOf("year")) / 864e5
          ) + 1;
          return input == null ? dayOfYear : this.add(input - dayOfYear, "d");
        }
        addFormatToken("m", ["mm", 2], 0, "minute");
        addUnitAlias("minute", "m");
        addUnitPriority("minute", 14);
        addRegexToken("m", match1to2);
        addRegexToken("mm", match1to2, match2);
        addParseToken(["m", "mm"], MINUTE);
        var getSetMinute = makeGetSet("Minutes", false);
        addFormatToken("s", ["ss", 2], 0, "second");
        addUnitAlias("second", "s");
        addUnitPriority("second", 15);
        addRegexToken("s", match1to2);
        addRegexToken("ss", match1to2, match2);
        addParseToken(["s", "ss"], SECOND);
        var getSetSecond = makeGetSet("Seconds", false);
        addFormatToken("S", 0, 0, function() {
          return ~~(this.millisecond() / 100);
        });
        addFormatToken(0, ["SS", 2], 0, function() {
          return ~~(this.millisecond() / 10);
        });
        addFormatToken(0, ["SSS", 3], 0, "millisecond");
        addFormatToken(0, ["SSSS", 4], 0, function() {
          return this.millisecond() * 10;
        });
        addFormatToken(0, ["SSSSS", 5], 0, function() {
          return this.millisecond() * 100;
        });
        addFormatToken(0, ["SSSSSS", 6], 0, function() {
          return this.millisecond() * 1e3;
        });
        addFormatToken(0, ["SSSSSSS", 7], 0, function() {
          return this.millisecond() * 1e4;
        });
        addFormatToken(0, ["SSSSSSSS", 8], 0, function() {
          return this.millisecond() * 1e5;
        });
        addFormatToken(0, ["SSSSSSSSS", 9], 0, function() {
          return this.millisecond() * 1e6;
        });
        addUnitAlias("millisecond", "ms");
        addUnitPriority("millisecond", 16);
        addRegexToken("S", match1to3, match1);
        addRegexToken("SS", match1to3, match2);
        addRegexToken("SSS", match1to3, match3);
        var token, getSetMillisecond;
        for (token = "SSSS"; token.length <= 9; token += "S") {
          addRegexToken(token, matchUnsigned);
        }
        function parseMs(input, array) {
          array[MILLISECOND] = toInt(("0." + input) * 1e3);
        }
        for (token = "S"; token.length <= 9; token += "S") {
          addParseToken(token, parseMs);
        }
        getSetMillisecond = makeGetSet("Milliseconds", false);
        addFormatToken("z", 0, 0, "zoneAbbr");
        addFormatToken("zz", 0, 0, "zoneName");
        function getZoneAbbr() {
          return this._isUTC ? "UTC" : "";
        }
        function getZoneName() {
          return this._isUTC ? "Coordinated Universal Time" : "";
        }
        var proto = Moment.prototype;
        proto.add = add;
        proto.calendar = calendar$1;
        proto.clone = clone;
        proto.diff = diff;
        proto.endOf = endOf;
        proto.format = format2;
        proto.from = from;
        proto.fromNow = fromNow;
        proto.to = to;
        proto.toNow = toNow;
        proto.get = stringGet;
        proto.invalidAt = invalidAt;
        proto.isAfter = isAfter;
        proto.isBefore = isBefore;
        proto.isBetween = isBetween;
        proto.isSame = isSame;
        proto.isSameOrAfter = isSameOrAfter;
        proto.isSameOrBefore = isSameOrBefore;
        proto.isValid = isValid$2;
        proto.lang = lang;
        proto.locale = locale;
        proto.localeData = localeData;
        proto.max = prototypeMax;
        proto.min = prototypeMin;
        proto.parsingFlags = parsingFlags;
        proto.set = stringSet;
        proto.startOf = startOf;
        proto.subtract = subtract;
        proto.toArray = toArray2;
        proto.toObject = toObject;
        proto.toDate = toDate;
        proto.toISOString = toISOString;
        proto.inspect = inspect;
        if (typeof Symbol !== "undefined" && Symbol.for != null) {
          proto[Symbol.for("nodejs.util.inspect.custom")] = function() {
            return "Moment<" + this.format() + ">";
          };
        }
        proto.toJSON = toJSON;
        proto.toString = toString2;
        proto.unix = unix;
        proto.valueOf = valueOf;
        proto.creationData = creationData;
        proto.eraName = getEraName;
        proto.eraNarrow = getEraNarrow;
        proto.eraAbbr = getEraAbbr;
        proto.eraYear = getEraYear;
        proto.year = getSetYear;
        proto.isLeapYear = getIsLeapYear;
        proto.weekYear = getSetWeekYear;
        proto.isoWeekYear = getSetISOWeekYear;
        proto.quarter = proto.quarters = getSetQuarter;
        proto.month = getSetMonth;
        proto.daysInMonth = getDaysInMonth;
        proto.week = proto.weeks = getSetWeek;
        proto.isoWeek = proto.isoWeeks = getSetISOWeek;
        proto.weeksInYear = getWeeksInYear;
        proto.weeksInWeekYear = getWeeksInWeekYear;
        proto.isoWeeksInYear = getISOWeeksInYear;
        proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
        proto.date = getSetDayOfMonth;
        proto.day = proto.days = getSetDayOfWeek;
        proto.weekday = getSetLocaleDayOfWeek;
        proto.isoWeekday = getSetISODayOfWeek;
        proto.dayOfYear = getSetDayOfYear;
        proto.hour = proto.hours = getSetHour;
        proto.minute = proto.minutes = getSetMinute;
        proto.second = proto.seconds = getSetSecond;
        proto.millisecond = proto.milliseconds = getSetMillisecond;
        proto.utcOffset = getSetOffset;
        proto.utc = setOffsetToUTC;
        proto.local = setOffsetToLocal;
        proto.parseZone = setOffsetToParsedOffset;
        proto.hasAlignedHourOffset = hasAlignedHourOffset;
        proto.isDST = isDaylightSavingTime;
        proto.isLocal = isLocal;
        proto.isUtcOffset = isUtcOffset;
        proto.isUtc = isUtc;
        proto.isUTC = isUtc;
        proto.zoneAbbr = getZoneAbbr;
        proto.zoneName = getZoneName;
        proto.dates = deprecate(
          "dates accessor is deprecated. Use date instead.",
          getSetDayOfMonth
        );
        proto.months = deprecate(
          "months accessor is deprecated. Use month instead",
          getSetMonth
        );
        proto.years = deprecate(
          "years accessor is deprecated. Use year instead",
          getSetYear
        );
        proto.zone = deprecate(
          "moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",
          getSetZone
        );
        proto.isDSTShifted = deprecate(
          "isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",
          isDaylightSavingTimeShifted
        );
        function createUnix(input) {
          return createLocal(input * 1e3);
        }
        function createInZone() {
          return createLocal.apply(null, arguments).parseZone();
        }
        function preParsePostFormat(string) {
          return string;
        }
        var proto$1 = Locale.prototype;
        proto$1.calendar = calendar;
        proto$1.longDateFormat = longDateFormat;
        proto$1.invalidDate = invalidDate;
        proto$1.ordinal = ordinal;
        proto$1.preparse = preParsePostFormat;
        proto$1.postformat = preParsePostFormat;
        proto$1.relativeTime = relativeTime;
        proto$1.pastFuture = pastFuture;
        proto$1.set = set;
        proto$1.eras = localeEras;
        proto$1.erasParse = localeErasParse;
        proto$1.erasConvertYear = localeErasConvertYear;
        proto$1.erasAbbrRegex = erasAbbrRegex;
        proto$1.erasNameRegex = erasNameRegex;
        proto$1.erasNarrowRegex = erasNarrowRegex;
        proto$1.months = localeMonths;
        proto$1.monthsShort = localeMonthsShort;
        proto$1.monthsParse = localeMonthsParse;
        proto$1.monthsRegex = monthsRegex;
        proto$1.monthsShortRegex = monthsShortRegex;
        proto$1.week = localeWeek;
        proto$1.firstDayOfYear = localeFirstDayOfYear;
        proto$1.firstDayOfWeek = localeFirstDayOfWeek;
        proto$1.weekdays = localeWeekdays;
        proto$1.weekdaysMin = localeWeekdaysMin;
        proto$1.weekdaysShort = localeWeekdaysShort;
        proto$1.weekdaysParse = localeWeekdaysParse;
        proto$1.weekdaysRegex = weekdaysRegex;
        proto$1.weekdaysShortRegex = weekdaysShortRegex;
        proto$1.weekdaysMinRegex = weekdaysMinRegex;
        proto$1.isPM = localeIsPM;
        proto$1.meridiem = localeMeridiem;
        function get$1(format3, index, field, setter) {
          var locale2 = getLocale(), utc = createUTC().set(setter, index);
          return locale2[field](utc, format3);
        }
        function listMonthsImpl(format3, index, field) {
          if (isNumber(format3)) {
            index = format3;
            format3 = void 0;
          }
          format3 = format3 || "";
          if (index != null) {
            return get$1(format3, index, field, "month");
          }
          var i2, out = [];
          for (i2 = 0; i2 < 12; i2++) {
            out[i2] = get$1(format3, i2, field, "month");
          }
          return out;
        }
        function listWeekdaysImpl(localeSorted, format3, index, field) {
          if (typeof localeSorted === "boolean") {
            if (isNumber(format3)) {
              index = format3;
              format3 = void 0;
            }
            format3 = format3 || "";
          } else {
            format3 = localeSorted;
            index = format3;
            localeSorted = false;
            if (isNumber(format3)) {
              index = format3;
              format3 = void 0;
            }
            format3 = format3 || "";
          }
          var locale2 = getLocale(), shift = localeSorted ? locale2._week.dow : 0, i2, out = [];
          if (index != null) {
            return get$1(format3, (index + shift) % 7, field, "day");
          }
          for (i2 = 0; i2 < 7; i2++) {
            out[i2] = get$1(format3, (i2 + shift) % 7, field, "day");
          }
          return out;
        }
        function listMonths(format3, index) {
          return listMonthsImpl(format3, index, "months");
        }
        function listMonthsShort(format3, index) {
          return listMonthsImpl(format3, index, "monthsShort");
        }
        function listWeekdays(localeSorted, format3, index) {
          return listWeekdaysImpl(localeSorted, format3, index, "weekdays");
        }
        function listWeekdaysShort(localeSorted, format3, index) {
          return listWeekdaysImpl(localeSorted, format3, index, "weekdaysShort");
        }
        function listWeekdaysMin(localeSorted, format3, index) {
          return listWeekdaysImpl(localeSorted, format3, index, "weekdaysMin");
        }
        getSetGlobalLocale("en", {
          eras: [
            {
              since: "0001-01-01",
              until: Infinity,
              offset: 1,
              name: "Anno Domini",
              narrow: "AD",
              abbr: "AD"
            },
            {
              since: "0000-12-31",
              until: -Infinity,
              offset: 1,
              name: "Before Christ",
              narrow: "BC",
              abbr: "BC"
            }
          ],
          dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
          ordinal: function(number) {
            var b = number % 10, output = toInt(number % 100 / 10) === 1 ? "th" : b === 1 ? "st" : b === 2 ? "nd" : b === 3 ? "rd" : "th";
            return number + output;
          }
        });
        hooks.lang = deprecate(
          "moment.lang is deprecated. Use moment.locale instead.",
          getSetGlobalLocale
        );
        hooks.langData = deprecate(
          "moment.langData is deprecated. Use moment.localeData instead.",
          getLocale
        );
        var mathAbs = Math.abs;
        function abs() {
          var data = this._data;
          this._milliseconds = mathAbs(this._milliseconds);
          this._days = mathAbs(this._days);
          this._months = mathAbs(this._months);
          data.milliseconds = mathAbs(data.milliseconds);
          data.seconds = mathAbs(data.seconds);
          data.minutes = mathAbs(data.minutes);
          data.hours = mathAbs(data.hours);
          data.months = mathAbs(data.months);
          data.years = mathAbs(data.years);
          return this;
        }
        function addSubtract$1(duration, input, value2, direction) {
          var other = createDuration(input, value2);
          duration._milliseconds += direction * other._milliseconds;
          duration._days += direction * other._days;
          duration._months += direction * other._months;
          return duration._bubble();
        }
        function add$1(input, value2) {
          return addSubtract$1(this, input, value2, 1);
        }
        function subtract$1(input, value2) {
          return addSubtract$1(this, input, value2, -1);
        }
        function absCeil(number) {
          if (number < 0) {
            return Math.floor(number);
          } else {
            return Math.ceil(number);
          }
        }
        function bubble() {
          var milliseconds2 = this._milliseconds, days2 = this._days, months2 = this._months, data = this._data, seconds2, minutes2, hours2, years2, monthsFromDays;
          if (!(milliseconds2 >= 0 && days2 >= 0 && months2 >= 0 || milliseconds2 <= 0 && days2 <= 0 && months2 <= 0)) {
            milliseconds2 += absCeil(monthsToDays(months2) + days2) * 864e5;
            days2 = 0;
            months2 = 0;
          }
          data.milliseconds = milliseconds2 % 1e3;
          seconds2 = absFloor(milliseconds2 / 1e3);
          data.seconds = seconds2 % 60;
          minutes2 = absFloor(seconds2 / 60);
          data.minutes = minutes2 % 60;
          hours2 = absFloor(minutes2 / 60);
          data.hours = hours2 % 24;
          days2 += absFloor(hours2 / 24);
          monthsFromDays = absFloor(daysToMonths(days2));
          months2 += monthsFromDays;
          days2 -= absCeil(monthsToDays(monthsFromDays));
          years2 = absFloor(months2 / 12);
          months2 %= 12;
          data.days = days2;
          data.months = months2;
          data.years = years2;
          return this;
        }
        function daysToMonths(days2) {
          return days2 * 4800 / 146097;
        }
        function monthsToDays(months2) {
          return months2 * 146097 / 4800;
        }
        function as(units) {
          if (!this.isValid()) {
            return NaN;
          }
          var days2, months2, milliseconds2 = this._milliseconds;
          units = normalizeUnits(units);
          if (units === "month" || units === "quarter" || units === "year") {
            days2 = this._days + milliseconds2 / 864e5;
            months2 = this._months + daysToMonths(days2);
            switch (units) {
              case "month":
                return months2;
              case "quarter":
                return months2 / 3;
              case "year":
                return months2 / 12;
            }
          } else {
            days2 = this._days + Math.round(monthsToDays(this._months));
            switch (units) {
              case "week":
                return days2 / 7 + milliseconds2 / 6048e5;
              case "day":
                return days2 + milliseconds2 / 864e5;
              case "hour":
                return days2 * 24 + milliseconds2 / 36e5;
              case "minute":
                return days2 * 1440 + milliseconds2 / 6e4;
              case "second":
                return days2 * 86400 + milliseconds2 / 1e3;
              case "millisecond":
                return Math.floor(days2 * 864e5) + milliseconds2;
              default:
                throw new Error("Unknown unit " + units);
            }
          }
        }
        function valueOf$1() {
          if (!this.isValid()) {
            return NaN;
          }
          return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;
        }
        function makeAs(alias) {
          return function() {
            return this.as(alias);
          };
        }
        var asMilliseconds = makeAs("ms"), asSeconds = makeAs("s"), asMinutes = makeAs("m"), asHours = makeAs("h"), asDays = makeAs("d"), asWeeks = makeAs("w"), asMonths = makeAs("M"), asQuarters = makeAs("Q"), asYears = makeAs("y");
        function clone$1() {
          return createDuration(this);
        }
        function get$2(units) {
          units = normalizeUnits(units);
          return this.isValid() ? this[units + "s"]() : NaN;
        }
        function makeGetter(name2) {
          return function() {
            return this.isValid() ? this._data[name2] : NaN;
          };
        }
        var milliseconds = makeGetter("milliseconds"), seconds = makeGetter("seconds"), minutes = makeGetter("minutes"), hours = makeGetter("hours"), days = makeGetter("days"), months = makeGetter("months"), years = makeGetter("years");
        function weeks() {
          return absFloor(this.days() / 7);
        }
        var round = Math.round, thresholds = {
          ss: 44,
          s: 45,
          m: 45,
          h: 22,
          d: 26,
          w: null,
          M: 11
        };
        function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale2) {
          return locale2.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
        }
        function relativeTime$1(posNegDuration, withoutSuffix, thresholds2, locale2) {
          var duration = createDuration(posNegDuration).abs(), seconds2 = round(duration.as("s")), minutes2 = round(duration.as("m")), hours2 = round(duration.as("h")), days2 = round(duration.as("d")), months2 = round(duration.as("M")), weeks2 = round(duration.as("w")), years2 = round(duration.as("y")), a = seconds2 <= thresholds2.ss && ["s", seconds2] || seconds2 < thresholds2.s && ["ss", seconds2] || minutes2 <= 1 && ["m"] || minutes2 < thresholds2.m && ["mm", minutes2] || hours2 <= 1 && ["h"] || hours2 < thresholds2.h && ["hh", hours2] || days2 <= 1 && ["d"] || days2 < thresholds2.d && ["dd", days2];
          if (thresholds2.w != null) {
            a = a || weeks2 <= 1 && ["w"] || weeks2 < thresholds2.w && ["ww", weeks2];
          }
          a = a || months2 <= 1 && ["M"] || months2 < thresholds2.M && ["MM", months2] || years2 <= 1 && ["y"] || ["yy", years2];
          a[2] = withoutSuffix;
          a[3] = +posNegDuration > 0;
          a[4] = locale2;
          return substituteTimeAgo.apply(null, a);
        }
        function getSetRelativeTimeRounding(roundingFunction) {
          if (roundingFunction === void 0) {
            return round;
          }
          if (typeof roundingFunction === "function") {
            round = roundingFunction;
            return true;
          }
          return false;
        }
        function getSetRelativeTimeThreshold(threshold, limit) {
          if (thresholds[threshold] === void 0) {
            return false;
          }
          if (limit === void 0) {
            return thresholds[threshold];
          }
          thresholds[threshold] = limit;
          if (threshold === "s") {
            thresholds.ss = limit - 1;
          }
          return true;
        }
        function humanize(argWithSuffix, argThresholds) {
          if (!this.isValid()) {
            return this.localeData().invalidDate();
          }
          var withSuffix = false, th = thresholds, locale2, output;
          if (typeof argWithSuffix === "object") {
            argThresholds = argWithSuffix;
            argWithSuffix = false;
          }
          if (typeof argWithSuffix === "boolean") {
            withSuffix = argWithSuffix;
          }
          if (typeof argThresholds === "object") {
            th = Object.assign({}, thresholds, argThresholds);
            if (argThresholds.s != null && argThresholds.ss == null) {
              th.ss = argThresholds.s - 1;
            }
          }
          locale2 = this.localeData();
          output = relativeTime$1(this, !withSuffix, th, locale2);
          if (withSuffix) {
            output = locale2.pastFuture(+this, output);
          }
          return locale2.postformat(output);
        }
        var abs$1 = Math.abs;
        function sign(x) {
          return (x > 0) - (x < 0) || +x;
        }
        function toISOString$1() {
          if (!this.isValid()) {
            return this.localeData().invalidDate();
          }
          var seconds2 = abs$1(this._milliseconds) / 1e3, days2 = abs$1(this._days), months2 = abs$1(this._months), minutes2, hours2, years2, s, total = this.asSeconds(), totalSign, ymSign, daysSign, hmsSign;
          if (!total) {
            return "P0D";
          }
          minutes2 = absFloor(seconds2 / 60);
          hours2 = absFloor(minutes2 / 60);
          seconds2 %= 60;
          minutes2 %= 60;
          years2 = absFloor(months2 / 12);
          months2 %= 12;
          s = seconds2 ? seconds2.toFixed(3).replace(/\.?0+$/, "") : "";
          totalSign = total < 0 ? "-" : "";
          ymSign = sign(this._months) !== sign(total) ? "-" : "";
          daysSign = sign(this._days) !== sign(total) ? "-" : "";
          hmsSign = sign(this._milliseconds) !== sign(total) ? "-" : "";
          return totalSign + "P" + (years2 ? ymSign + years2 + "Y" : "") + (months2 ? ymSign + months2 + "M" : "") + (days2 ? daysSign + days2 + "D" : "") + (hours2 || minutes2 || seconds2 ? "T" : "") + (hours2 ? hmsSign + hours2 + "H" : "") + (minutes2 ? hmsSign + minutes2 + "M" : "") + (seconds2 ? hmsSign + s + "S" : "");
        }
        var proto$2 = Duration.prototype;
        proto$2.isValid = isValid$1;
        proto$2.abs = abs;
        proto$2.add = add$1;
        proto$2.subtract = subtract$1;
        proto$2.as = as;
        proto$2.asMilliseconds = asMilliseconds;
        proto$2.asSeconds = asSeconds;
        proto$2.asMinutes = asMinutes;
        proto$2.asHours = asHours;
        proto$2.asDays = asDays;
        proto$2.asWeeks = asWeeks;
        proto$2.asMonths = asMonths;
        proto$2.asQuarters = asQuarters;
        proto$2.asYears = asYears;
        proto$2.valueOf = valueOf$1;
        proto$2._bubble = bubble;
        proto$2.clone = clone$1;
        proto$2.get = get$2;
        proto$2.milliseconds = milliseconds;
        proto$2.seconds = seconds;
        proto$2.minutes = minutes;
        proto$2.hours = hours;
        proto$2.days = days;
        proto$2.weeks = weeks;
        proto$2.months = months;
        proto$2.years = years;
        proto$2.humanize = humanize;
        proto$2.toISOString = toISOString$1;
        proto$2.toString = toISOString$1;
        proto$2.toJSON = toISOString$1;
        proto$2.locale = locale;
        proto$2.localeData = localeData;
        proto$2.toIsoString = deprecate(
          "toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",
          toISOString$1
        );
        proto$2.lang = lang;
        addFormatToken("X", 0, 0, "unix");
        addFormatToken("x", 0, 0, "valueOf");
        addRegexToken("x", matchSigned);
        addRegexToken("X", matchTimestamp);
        addParseToken("X", function(input, array, config) {
          config._d = new Date(parseFloat(input) * 1e3);
        });
        addParseToken("x", function(input, array, config) {
          config._d = new Date(toInt(input));
        });
        hooks.version = "2.29.4";
        setHookCallback(createLocal);
        hooks.fn = proto;
        hooks.min = min;
        hooks.max = max;
        hooks.now = now;
        hooks.utc = createUTC;
        hooks.unix = createUnix;
        hooks.months = listMonths;
        hooks.isDate = isDate;
        hooks.locale = getSetGlobalLocale;
        hooks.invalid = createInvalid;
        hooks.duration = createDuration;
        hooks.isMoment = isMoment;
        hooks.weekdays = listWeekdays;
        hooks.parseZone = createInZone;
        hooks.localeData = getLocale;
        hooks.isDuration = isDuration;
        hooks.monthsShort = listMonthsShort;
        hooks.weekdaysMin = listWeekdaysMin;
        hooks.defineLocale = defineLocale;
        hooks.updateLocale = updateLocale;
        hooks.locales = listLocales;
        hooks.weekdaysShort = listWeekdaysShort;
        hooks.normalizeUnits = normalizeUnits;
        hooks.relativeTimeRounding = getSetRelativeTimeRounding;
        hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
        hooks.calendarFormat = getCalendarFormat;
        hooks.prototype = proto;
        hooks.HTML5_FMT = {
          DATETIME_LOCAL: "YYYY-MM-DDTHH:mm",
          DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss",
          DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS",
          DATE: "YYYY-MM-DD",
          TIME: "HH:mm",
          TIME_SECONDS: "HH:mm:ss",
          TIME_MS: "HH:mm:ss.SSS",
          WEEK: "GGGG-[W]WW",
          MONTH: "YYYY-MM"
        };
        return hooks;
      });
    }
  });

  // node_modules/moment-timezone/builds/moment-timezone-with-data-10-year-range.min.js
  var require_moment_timezone_with_data_10_year_range_min = __commonJS({
    "node_modules/moment-timezone/builds/moment-timezone-with-data-10-year-range.min.js"(exports, module) {
      !function(a, i2) {
        "use strict";
        "object" == typeof module && module.exports ? module.exports = i2(require_moment()) : "function" == typeof define && define.amd ? define(["moment"], i2) : i2(a.moment);
      }(exports, function(o) {
        "use strict";
        void 0 === o.version && o.default && (o = o.default);
        var i2, s = {}, c = {}, A = {}, u = {}, m = {}, a = (o && "string" == typeof o.version || D("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/"), o.version.split(".")), r = +a[0], e = +a[1];
        function n(a2) {
          return 96 < a2 ? a2 - 87 : 64 < a2 ? a2 - 29 : a2 - 48;
        }
        function t(a2) {
          var i3 = 0, r2 = a2.split("."), e2 = r2[0], o2 = r2[1] || "", c2 = 1, A2 = 0, r2 = 1;
          for (45 === a2.charCodeAt(0) && (r2 = -(i3 = 1)); i3 < e2.length; i3++)
            A2 = 60 * A2 + n(e2.charCodeAt(i3));
          for (i3 = 0; i3 < o2.length; i3++)
            c2 /= 60, A2 += n(o2.charCodeAt(i3)) * c2;
          return A2 * r2;
        }
        function l(a2) {
          for (var i3 = 0; i3 < a2.length; i3++)
            a2[i3] = t(a2[i3]);
        }
        function f(a2, i3) {
          for (var r2 = [], e2 = 0; e2 < i3.length; e2++)
            r2[e2] = a2[i3[e2]];
          return r2;
        }
        function p(a2) {
          for (var a2 = a2.split("|"), i3 = a2[2].split(" "), r2 = a2[3].split(""), e2 = a2[4].split(" "), o2 = (l(i3), l(r2), l(e2), e2), c2 = r2.length, A2 = 0; A2 < c2; A2++)
            o2[A2] = Math.round((o2[A2 - 1] || 0) + 6e4 * o2[A2]);
          return o2[c2 - 1] = 1 / 0, { name: a2[0], abbrs: f(a2[1].split(" "), r2), offsets: f(i3, r2), untils: e2, population: 0 | a2[5] };
        }
        function b(a2) {
          a2 && this._set(p(a2));
        }
        function M(a2, i3) {
          this.name = a2, this.zones = i3;
        }
        function h(a2) {
          var i3 = a2.toTimeString(), r2 = i3.match(/\([a-z ]+\)/i);
          "GMT" === (r2 = r2 && r2[0] ? (r2 = r2[0].match(/[A-Z]/g)) ? r2.join("") : void 0 : (r2 = i3.match(/[A-Z]{3,5}/g)) ? r2[0] : void 0) && (r2 = void 0), this.at = +a2, this.abbr = r2, this.offset = a2.getTimezoneOffset();
        }
        function d(a2) {
          this.zone = a2, this.offsetScore = 0, this.abbrScore = 0;
        }
        function E() {
          for (var a2, i3, r2 = new Date().getFullYear() - 2, e2 = new h(new Date(r2, 0, 1)), o2 = [e2], c2 = 1; c2 < 48; c2++)
            (i3 = new h(new Date(r2, c2, 1))).offset !== e2.offset && (a2 = function(a3, i4) {
              for (var r3; r3 = 6e4 * ((i4.at - a3.at) / 12e4 | 0); )
                (r3 = new h(new Date(a3.at + r3))).offset === a3.offset ? a3 = r3 : i4 = r3;
              return a3;
            }(e2, i3), o2.push(a2), o2.push(new h(new Date(a2.at + 6e4)))), e2 = i3;
          for (c2 = 0; c2 < 4; c2++)
            o2.push(new h(new Date(r2 + c2, 0, 1))), o2.push(new h(new Date(r2 + c2, 6, 1)));
          return o2;
        }
        function g(a2, i3) {
          return a2.offsetScore !== i3.offsetScore ? a2.offsetScore - i3.offsetScore : a2.abbrScore !== i3.abbrScore ? a2.abbrScore - i3.abbrScore : a2.zone.population !== i3.zone.population ? i3.zone.population - a2.zone.population : i3.zone.name.localeCompare(a2.zone.name);
        }
        function z() {
          try {
            var a2 = Intl.DateTimeFormat().resolvedOptions().timeZone;
            if (a2 && 3 < a2.length) {
              var i3 = u[P(a2)];
              if (i3)
                return i3;
              D("Moment Timezone found " + a2 + " from the Intl api, but did not have that data loaded.");
            }
          } catch (a3) {
          }
          for (var r2, e2, o2 = E(), c2 = o2.length, A2 = function(a3) {
            for (var i4, r3, e3 = a3.length, o3 = {}, c3 = [], A3 = 0; A3 < e3; A3++)
              for (i4 in r3 = m[a3[A3].offset] || {})
                r3.hasOwnProperty(i4) && (o3[i4] = true);
            for (A3 in o3)
              o3.hasOwnProperty(A3) && c3.push(u[A3]);
            return c3;
          }(o2), n2 = [], t2 = 0; t2 < A2.length; t2++) {
            for (r2 = new d(T(A2[t2])), e2 = 0; e2 < c2; e2++)
              r2.scoreOffsetAt(o2[e2]);
            n2.push(r2);
          }
          return n2.sort(g), 0 < n2.length ? n2[0].zone.name : void 0;
        }
        function P(a2) {
          return (a2 || "").toLowerCase().replace(/\//g, "_");
        }
        function k(a2) {
          var i3, r2, e2, o2;
          for ("string" == typeof a2 && (a2 = [a2]), i3 = 0; i3 < a2.length; i3++) {
            o2 = P(r2 = (e2 = a2[i3].split("|"))[0]), s[o2] = a2[i3], u[o2] = r2, A2 = c2 = t2 = n2 = void 0;
            var c2, A2, n2 = o2, t2 = e2[2].split(" ");
            for (l(t2), c2 = 0; c2 < t2.length; c2++)
              A2 = t2[c2], m[A2] = m[A2] || {}, m[A2][n2] = true;
          }
        }
        function T(a2, i3) {
          a2 = P(a2);
          var r2 = s[a2];
          return r2 instanceof b ? r2 : "string" == typeof r2 ? (r2 = new b(r2), s[a2] = r2) : c[a2] && i3 !== T && (i3 = T(c[a2], T)) ? ((r2 = s[a2] = new b())._set(i3), r2.name = u[a2], r2) : null;
        }
        function S(a2) {
          var i3, r2, e2, o2;
          for ("string" == typeof a2 && (a2 = [a2]), i3 = 0; i3 < a2.length; i3++)
            e2 = P((r2 = a2[i3].split("|"))[0]), o2 = P(r2[1]), c[e2] = o2, u[e2] = r2[0], c[o2] = e2, u[o2] = r2[1];
        }
        function _(a2) {
          k(a2.zones), S(a2.links);
          var i3, r2, e2, o2 = a2.countries;
          if (o2 && o2.length)
            for (i3 = 0; i3 < o2.length; i3++)
              r2 = (e2 = o2[i3].split("|"))[0].toUpperCase(), e2 = e2[1].split(" "), A[r2] = new M(r2, e2);
          y.dataVersion = a2.version;
        }
        function C(a2) {
          return C.didShowError || (C.didShowError = true, D("moment.tz.zoneExists('" + a2 + "') has been deprecated in favor of !moment.tz.zone('" + a2 + "')")), !!T(a2);
        }
        function B(a2) {
          var i3 = "X" === a2._f || "x" === a2._f;
          return !(!a2._a || void 0 !== a2._tzm || i3);
        }
        function D(a2) {
          "undefined" != typeof console && "function" == typeof console.error && console.error(a2);
        }
        function y(a2) {
          var i3 = Array.prototype.slice.call(arguments, 0, -1), r2 = arguments[arguments.length - 1], e2 = T(r2), i3 = o.utc.apply(null, i3);
          return e2 && !o.isMoment(a2) && B(i3) && i3.add(e2.parse(i3), "minutes"), i3.tz(r2), i3;
        }
        (r < 2 || 2 == r && e < 6) && D("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js " + o.version + ". See momentjs.com"), b.prototype = { _set: function(a2) {
          this.name = a2.name, this.abbrs = a2.abbrs, this.untils = a2.untils, this.offsets = a2.offsets, this.population = a2.population;
        }, _index: function(a2) {
          for (var i3 = +a2, r2 = this.untils, e2 = 0; e2 < r2.length; e2++)
            if (i3 < r2[e2])
              return e2;
        }, countries: function() {
          var i3 = this.name;
          return Object.keys(A).filter(function(a2) {
            return -1 !== A[a2].zones.indexOf(i3);
          });
        }, parse: function(a2) {
          for (var i3, r2, e2, o2 = +a2, c2 = this.offsets, A2 = this.untils, n2 = A2.length - 1, t2 = 0; t2 < n2; t2++)
            if (i3 = c2[t2], r2 = c2[t2 + 1], e2 = c2[t2 && t2 - 1], i3 < r2 && y.moveAmbiguousForward ? i3 = r2 : e2 < i3 && y.moveInvalidForward && (i3 = e2), o2 < A2[t2] - 6e4 * i3)
              return c2[t2];
          return c2[n2];
        }, abbr: function(a2) {
          return this.abbrs[this._index(a2)];
        }, offset: function(a2) {
          return D("zone.offset has been deprecated in favor of zone.utcOffset"), this.offsets[this._index(a2)];
        }, utcOffset: function(a2) {
          return this.offsets[this._index(a2)];
        } }, d.prototype.scoreOffsetAt = function(a2) {
          this.offsetScore += Math.abs(this.zone.utcOffset(a2.at) - a2.offset), this.zone.abbr(a2.at).replace(/[^A-Z]/g, "") !== a2.abbr && this.abbrScore++;
        }, y.version = "0.5.43", y.dataVersion = "", y._zones = s, y._links = c, y._names = u, y._countries = A, y.add = k, y.link = S, y.load = _, y.zone = T, y.zoneExists = C, y.guess = function(a2) {
          return i2 = i2 && !a2 ? i2 : z();
        }, y.names = function() {
          var a2, i3 = [];
          for (a2 in u)
            u.hasOwnProperty(a2) && (s[a2] || s[c[a2]]) && u[a2] && i3.push(u[a2]);
          return i3.sort();
        }, y.Zone = b, y.unpack = p, y.unpackBase60 = t, y.needsOffset = B, y.moveInvalidForward = true, y.moveAmbiguousForward = false, y.countries = function() {
          return Object.keys(A);
        }, y.zonesForCountry = function(a2, i3) {
          var r2;
          return r2 = (r2 = a2).toUpperCase(), (a2 = A[r2] || null) ? (r2 = a2.zones.sort(), i3 ? r2.map(function(a3) {
            return { name: a3, offset: T(a3).utcOffset(new Date()) };
          }) : r2) : null;
        };
        var L2, a = o.fn;
        function O(a2) {
          return function() {
            return this._z ? this._z.abbr(this) : a2.call(this);
          };
        }
        function N(a2) {
          return function() {
            return this._z = null, a2.apply(this, arguments);
          };
        }
        o.tz = y, o.defaultZone = null, o.updateOffset = function(a2, i3) {
          var r2, e2 = o.defaultZone;
          void 0 === a2._z && (e2 && B(a2) && !a2._isUTC && (a2._d = o.utc(a2._a)._d, a2.utc().add(e2.parse(a2), "minutes")), a2._z = e2), a2._z && (e2 = a2._z.utcOffset(a2), Math.abs(e2) < 16 && (e2 /= 60), void 0 !== a2.utcOffset ? (r2 = a2._z, a2.utcOffset(-e2, i3), a2._z = r2) : a2.zone(e2, i3));
        }, a.tz = function(a2, i3) {
          if (a2) {
            if ("string" != typeof a2)
              throw new Error("Time zone name must be a string, got " + a2 + " [" + typeof a2 + "]");
            return this._z = T(a2), this._z ? o.updateOffset(this, i3) : D("Moment Timezone has no data for " + a2 + ". See http://momentjs.com/timezone/docs/#/data-loading/."), this;
          }
          if (this._z)
            return this._z.name;
        }, a.zoneName = O(a.zoneName), a.zoneAbbr = O(a.zoneAbbr), a.utc = N(a.utc), a.local = N(a.local), a.utcOffset = (L2 = a.utcOffset, function() {
          return 0 < arguments.length && (this._z = null), L2.apply(this, arguments);
        }), o.tz.setDefault = function(a2) {
          return (r < 2 || 2 == r && e < 9) && D("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js " + o.version + "."), o.defaultZone = a2 ? T(a2) : null, o;
        };
        a = o.momentProperties;
        return "[object Array]" === Object.prototype.toString.call(a) ? (a.push("_z"), a.push("_a")) : a && (a._z = null), _({ version: "2023c", zones: ["Africa/Abidjan|GMT|0|0||48e5", "Africa/Nairobi|EAT|-30|0||47e5", "Africa/Algiers|CET|-10|0||26e5", "Africa/Lagos|WAT|-10|0||17e6", "Africa/Khartoum|CAT|-20|0||51e5", "Africa/Cairo|EET EEST|-20 -30|0101010101010|29NW0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0|15e6", "Africa/Casablanca|+00 +01|0 -10|010101010101010101010101|1Vq20 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5", "Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|11e6", "Africa/Johannesburg|SAST|-20|0||84e5", "Africa/Juba|EAT CAT|-30 -20|01|24nx0|", "Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|", "Africa/Tripoli|EET|-20|0||11e5", "America/Adak|HST HDT|a0 90|01010101010101010101010|1VkA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|326", "America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1Vkz0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|30e4", "America/Santo_Domingo|AST|40|0||29e5", "America/Fortaleza|-03|30|0||34e5", "America/Asuncion|-03 -04|30 40|01010101010101010101010|1Vq30 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0|28e5", "America/Panama|EST|50|0||15e5", "America/Mexico_City|CST CDT|60 50|01010101010|1VsU0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6", "America/Managua|CST|60|0||22e5", "America/Caracas|-04|40|0||29e5", "America/Lima|-05|50|0||11e6", "America/Denver|MST MDT|70 60|01010101010101010101010|1Vkx0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|26e5", "America/Campo_Grande|-03 -04|30 40|0101|1Vc30 1HB0 FX0|77e4", "America/Chicago|CST CDT|60 50|01010101010101010101010|1Vkw0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|92e5", "America/Chihuahua|MST MDT CST|70 60 60|01010101012|1VsV0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4", "America/Ciudad_Juarez|MST MDT CST|70 60 60|010101010120101010101010|1Vkx0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|", "America/Phoenix|MST|70|0||42e5", "America/Whitehorse|PST PDT MST|80 70 70|0101012|1Vky0 1zb0 Op0 1zb0 Op0 1z90|23e3", "America/New_York|EST EDT|50 40|01010101010101010101010|1Vkv0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|21e6", "America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1Vky0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|15e6", "America/Halifax|AST ADT|40 30|01010101010101010101010|1Vku0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|39e4", "America/Godthab|-03 -02 -01|30 20 10|0101010101012121212121|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|17e3", "America/Grand_Turk|AST EDT EST|40 40 50|01212121212121212121212|1Vkv0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|37e2", "America/Havana|CST CDT|50 40|01010101010101010101010|1Vkt0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0|21e5", "America/Mazatlan|MST MDT|70 60|01010101010|1VsV0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4", "America/Metlakatla|AKST AKDT PST|90 80 80|012010101010101010101010|1Vkz0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|14e2", "America/Miquelon|-03 -02|30 20|01010101010101010101010|1Vkt0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|61e2", "America/Noronha|-02|20|0||30e2", "America/Ojinaga|MST MDT CST CDT|70 60 60 50|01010101012323232323232|1Vkx0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|23e3", "America/Santiago|-03 -04|30 40|01010101010101010101010|1VJD0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|62e5", "America/Sao_Paulo|-02 -03|20 30|0101|1Vc20 1HB0 FX0|20e6", "Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4", "America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1Vktu 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|11e4", "Antarctica/Casey|+11 +08|-b0 -80|0101010|1Vkh0 1o30 14k0 1kr0 12l0 1o01|10", "Asia/Bangkok|+07|-70|0||15e6", "Asia/Vladivostok|+10|-a0|0||60e4", "Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1VsE0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5", "Asia/Tashkent|+05|-50|0||23e5", "Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1VsC0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5", "Europe/Istanbul|+03|-30|0||13e6", "Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|40", "Asia/Dhaka|+06|-60|0||16e6", "Asia/Amman|EET EEST +03|-20 -30 -30|01010101012|1VrW0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5", "Asia/Kamchatka|+12|-c0|0||18e4", "Asia/Dubai|+04|-40|0||39e5", "Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1VpW0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|22e5", "Asia/Kuala_Lumpur|+08|-80|0||71e5", "Asia/Kolkata|IST|-5u|0||15e6", "Asia/Chita|+09|-90|0||33e4", "Asia/Shanghai|CST|-80|0||23e6", "Asia/Colombo|+0530|-5u|0||22e5", "Asia/Damascus|EET EEST +03|-20 -30 -30|01010101012|1VrW0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5", "Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|35e5", "Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1Vpz0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0|18e5", "Asia/Hong_Kong|HKT|-80|0||73e5", "Asia/Jakarta|WIB|-70|0||31e6", "Asia/Jayapura|WIT|-90|0||26e4", "Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1Vpc0 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0|81e4", "Asia/Kabul|+0430|-4u|0||46e5", "Asia/Karachi|PKT|-50|0||24e6", "Asia/Kathmandu|+0545|-5J|0||12e5", "Asia/Sakhalin|+11|-b0|0||58e4", "Asia/Makassar|WITA|-80|0||15e5", "Asia/Manila|PST|-80|0||24e6", "Asia/Pyongyang|KST KST|-8u -90|01|1VGf0|29e5", "Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4", "Asia/Rangoon|+0630|-6u|0||48e5", "Asia/Seoul|KST|-90|0||23e6", "Asia/Tehran|+0330 +0430|-3u -4u|01010101010|1VoIu 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6", "Asia/Tokyo|JST|-90|0||38e6", "Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|27e5", "Atlantic/Cape_Verde|-01|10|0||50e4", "Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1VsEu 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5", "Australia/Brisbane|AEST|-a0|0||20e5", "Australia/Darwin|ACST|-9u|0||12e4", "Australia/Eucla|+0845|-8J|0||368", "Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1VsD0 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347", "Australia/Perth|AWST|-80|0||18e5", "Pacific/Easter|-05 -06|50 60|01010101010101010101010|1VJD0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|30e2", "Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|12e5", "Etc/GMT-1|+01|-10|0||", "Pacific/Tongatapu|+13|-d0|0||75e3", "Pacific/Kiritimati|+14|-e0|0||51e2", "Etc/GMT-2|+02|-20|0||", "Pacific/Tahiti|-10|a0|0||18e4", "Pacific/Niue|-11|b0|0||12e2", "Etc/GMT+12|-12|c0|0||", "Pacific/Galapagos|-06|60|0||25e3", "Etc/GMT+7|-07|70|0||", "Pacific/Pitcairn|-08|80|0||56", "Pacific/Gambier|-09|90|0||125", "Etc/UTC|UTC|0|0||", "Europe/London|GMT BST|0 -10|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|10e6", "Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1Vq00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|67e4", "Europe/Moscow|MSK|-30|0||16e6", "Europe/Volgograd|MSK +04|-30 -40|010|1WQL0 5gn0|10e5", "Pacific/Honolulu|HST|a0|0||37e4", "MET|MET MEST|-10 -20|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|", "Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1VsC0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|600", "Pacific/Apia|+14 +13|-e0 -d0|01010101|1VsC0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3", "Pacific/Fiji|+13 +12|-d0 -c0|01010101|1UVO0 1VA0 s00 20o0 pc0 2hc0 bc0|88e4", "Pacific/Guam|ChST|-a0|0||17e4", "Pacific/Marquesas|-0930|9u|0||86e2", "Pacific/Pago_Pago|SST|b0|0||37e2", "Pacific/Norfolk|+11 +12|-b0 -c0|01010101010101010101|219P0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4"], links: ["Africa/Abidjan|Africa/Accra", "Africa/Abidjan|Africa/Bamako", "Africa/Abidjan|Africa/Banjul", "Africa/Abidjan|Africa/Bissau", "Africa/Abidjan|Africa/Conakry", "Africa/Abidjan|Africa/Dakar", "Africa/Abidjan|Africa/Freetown", "Africa/Abidjan|Africa/Lome", "Africa/Abidjan|Africa/Monrovia", "Africa/Abidjan|Africa/Nouakchott", "Africa/Abidjan|Africa/Ouagadougou", "Africa/Abidjan|Africa/Timbuktu", "Africa/Abidjan|America/Danmarkshavn", "Africa/Abidjan|Atlantic/Reykjavik", "Africa/Abidjan|Atlantic/St_Helena", "Africa/Abidjan|Etc/GMT", "Africa/Abidjan|Etc/GMT+0", "Africa/Abidjan|Etc/GMT-0", "Africa/Abidjan|Etc/GMT0", "Africa/Abidjan|Etc/Greenwich", "Africa/Abidjan|GMT", "Africa/Abidjan|GMT+0", "Africa/Abidjan|GMT-0", "Africa/Abidjan|GMT0", "Africa/Abidjan|Greenwich", "Africa/Abidjan|Iceland", "Africa/Algiers|Africa/Tunis", "Africa/Cairo|Egypt", "Africa/Casablanca|Africa/El_Aaiun", "Africa/Johannesburg|Africa/Maseru", "Africa/Johannesburg|Africa/Mbabane", "Africa/Khartoum|Africa/Blantyre", "Africa/Khartoum|Africa/Bujumbura", "Africa/Khartoum|Africa/Gaborone", "Africa/Khartoum|Africa/Harare", "Africa/Khartoum|Africa/Kigali", "Africa/Khartoum|Africa/Lubumbashi", "Africa/Khartoum|Africa/Lusaka", "Africa/Khartoum|Africa/Maputo", "Africa/Khartoum|Africa/Windhoek", "Africa/Lagos|Africa/Bangui", "Africa/Lagos|Africa/Brazzaville", "Africa/Lagos|Africa/Douala", "Africa/Lagos|Africa/Kinshasa", "Africa/Lagos|Africa/Libreville", "Africa/Lagos|Africa/Luanda", "Africa/Lagos|Africa/Malabo", "Africa/Lagos|Africa/Ndjamena", "Africa/Lagos|Africa/Niamey", "Africa/Lagos|Africa/Porto-Novo", "Africa/Nairobi|Africa/Addis_Ababa", "Africa/Nairobi|Africa/Asmara", "Africa/Nairobi|Africa/Asmera", "Africa/Nairobi|Africa/Dar_es_Salaam", "Africa/Nairobi|Africa/Djibouti", "Africa/Nairobi|Africa/Kampala", "Africa/Nairobi|Africa/Mogadishu", "Africa/Nairobi|Indian/Antananarivo", "Africa/Nairobi|Indian/Comoro", "Africa/Nairobi|Indian/Mayotte", "Africa/Tripoli|Europe/Kaliningrad", "Africa/Tripoli|Libya", "America/Adak|America/Atka", "America/Adak|US/Aleutian", "America/Anchorage|America/Juneau", "America/Anchorage|America/Nome", "America/Anchorage|America/Sitka", "America/Anchorage|America/Yakutat", "America/Anchorage|US/Alaska", "America/Campo_Grande|America/Cuiaba", "America/Caracas|America/Boa_Vista", "America/Caracas|America/Guyana", "America/Caracas|America/La_Paz", "America/Caracas|America/Manaus", "America/Caracas|America/Porto_Velho", "America/Caracas|Brazil/West", "America/Caracas|Etc/GMT+4", "America/Chicago|America/Indiana/Knox", "America/Chicago|America/Indiana/Tell_City", "America/Chicago|America/Knox_IN", "America/Chicago|America/Matamoros", "America/Chicago|America/Menominee", "America/Chicago|America/North_Dakota/Beulah", "America/Chicago|America/North_Dakota/Center", "America/Chicago|America/North_Dakota/New_Salem", "America/Chicago|America/Rainy_River", "America/Chicago|America/Rankin_Inlet", "America/Chicago|America/Resolute", "America/Chicago|America/Winnipeg", "America/Chicago|CST6CDT", "America/Chicago|Canada/Central", "America/Chicago|US/Central", "America/Chicago|US/Indiana-Starke", "America/Denver|America/Boise", "America/Denver|America/Cambridge_Bay", "America/Denver|America/Edmonton", "America/Denver|America/Inuvik", "America/Denver|America/Shiprock", "America/Denver|America/Yellowknife", "America/Denver|Canada/Mountain", "America/Denver|MST7MDT", "America/Denver|Navajo", "America/Denver|US/Mountain", "America/Fortaleza|America/Araguaina", "America/Fortaleza|America/Argentina/Buenos_Aires", "America/Fortaleza|America/Argentina/Catamarca", "America/Fortaleza|America/Argentina/ComodRivadavia", "America/Fortaleza|America/Argentina/Cordoba", "America/Fortaleza|America/Argentina/Jujuy", "America/Fortaleza|America/Argentina/La_Rioja", "America/Fortaleza|America/Argentina/Mendoza", "America/Fortaleza|America/Argentina/Rio_Gallegos", "America/Fortaleza|America/Argentina/Salta", "America/Fortaleza|America/Argentina/San_Juan", "America/Fortaleza|America/Argentina/San_Luis", "America/Fortaleza|America/Argentina/Tucuman", "America/Fortaleza|America/Argentina/Ushuaia", "America/Fortaleza|America/Bahia", "America/Fortaleza|America/Belem", "America/Fortaleza|America/Buenos_Aires", "America/Fortaleza|America/Catamarca", "America/Fortaleza|America/Cayenne", "America/Fortaleza|America/Cordoba", "America/Fortaleza|America/Jujuy", "America/Fortaleza|America/Maceio", "America/Fortaleza|America/Mendoza", "America/Fortaleza|America/Montevideo", "America/Fortaleza|America/Paramaribo", "America/Fortaleza|America/Punta_Arenas", "America/Fortaleza|America/Recife", "America/Fortaleza|America/Rosario", "America/Fortaleza|America/Santarem", "America/Fortaleza|Antarctica/Palmer", "America/Fortaleza|Antarctica/Rothera", "America/Fortaleza|Atlantic/Stanley", "America/Fortaleza|Etc/GMT+3", "America/Godthab|America/Nuuk", "America/Halifax|America/Glace_Bay", "America/Halifax|America/Goose_Bay", "America/Halifax|America/Moncton", "America/Halifax|America/Thule", "America/Halifax|Atlantic/Bermuda", "America/Halifax|Canada/Atlantic", "America/Havana|Cuba", "America/Lima|America/Bogota", "America/Lima|America/Eirunepe", "America/Lima|America/Guayaquil", "America/Lima|America/Porto_Acre", "America/Lima|America/Rio_Branco", "America/Lima|Brazil/Acre", "America/Lima|Etc/GMT+5", "America/Los_Angeles|America/Ensenada", "America/Los_Angeles|America/Santa_Isabel", "America/Los_Angeles|America/Tijuana", "America/Los_Angeles|America/Vancouver", "America/Los_Angeles|Canada/Pacific", "America/Los_Angeles|Mexico/BajaNorte", "America/Los_Angeles|PST8PDT", "America/Los_Angeles|US/Pacific", "America/Managua|America/Belize", "America/Managua|America/Costa_Rica", "America/Managua|America/El_Salvador", "America/Managua|America/Guatemala", "America/Managua|America/Regina", "America/Managua|America/Swift_Current", "America/Managua|America/Tegucigalpa", "America/Managua|Canada/Saskatchewan", "America/Mazatlan|Mexico/BajaSur", "America/Mexico_City|America/Bahia_Banderas", "America/Mexico_City|America/Merida", "America/Mexico_City|America/Monterrey", "America/Mexico_City|Mexico/General", "America/New_York|America/Detroit", "America/New_York|America/Fort_Wayne", "America/New_York|America/Indiana/Indianapolis", "America/New_York|America/Indiana/Marengo", "America/New_York|America/Indiana/Petersburg", "America/New_York|America/Indiana/Vevay", "America/New_York|America/Indiana/Vincennes", "America/New_York|America/Indiana/Winamac", "America/New_York|America/Indianapolis", "America/New_York|America/Iqaluit", "America/New_York|America/Kentucky/Louisville", "America/New_York|America/Kentucky/Monticello", "America/New_York|America/Louisville", "America/New_York|America/Montreal", "America/New_York|America/Nassau", "America/New_York|America/Nipigon", "America/New_York|America/Pangnirtung", "America/New_York|America/Port-au-Prince", "America/New_York|America/Thunder_Bay", "America/New_York|America/Toronto", "America/New_York|Canada/Eastern", "America/New_York|EST5EDT", "America/New_York|US/East-Indiana", "America/New_York|US/Eastern", "America/New_York|US/Michigan", "America/Noronha|Atlantic/South_Georgia", "America/Noronha|Brazil/DeNoronha", "America/Noronha|Etc/GMT+2", "America/Panama|America/Atikokan", "America/Panama|America/Cancun", "America/Panama|America/Cayman", "America/Panama|America/Coral_Harbour", "America/Panama|America/Jamaica", "America/Panama|EST", "America/Panama|Jamaica", "America/Phoenix|America/Creston", "America/Phoenix|America/Dawson_Creek", "America/Phoenix|America/Fort_Nelson", "America/Phoenix|America/Hermosillo", "America/Phoenix|MST", "America/Phoenix|US/Arizona", "America/Santiago|Chile/Continental", "America/Santo_Domingo|America/Anguilla", "America/Santo_Domingo|America/Antigua", "America/Santo_Domingo|America/Aruba", "America/Santo_Domingo|America/Barbados", "America/Santo_Domingo|America/Blanc-Sablon", "America/Santo_Domingo|America/Curacao", "America/Santo_Domingo|America/Dominica", "America/Santo_Domingo|America/Grenada", "America/Santo_Domingo|America/Guadeloupe", "America/Santo_Domingo|America/Kralendijk", "America/Santo_Domingo|America/Lower_Princes", "America/Santo_Domingo|America/Marigot", "America/Santo_Domingo|America/Martinique", "America/Santo_Domingo|America/Montserrat", "America/Santo_Domingo|America/Port_of_Spain", "America/Santo_Domingo|America/Puerto_Rico", "America/Santo_Domingo|America/St_Barthelemy", "America/Santo_Domingo|America/St_Kitts", "America/Santo_Domingo|America/St_Lucia", "America/Santo_Domingo|America/St_Thomas", "America/Santo_Domingo|America/St_Vincent", "America/Santo_Domingo|America/Tortola", "America/Santo_Domingo|America/Virgin", "America/Sao_Paulo|Brazil/East", "America/St_Johns|Canada/Newfoundland", "America/Whitehorse|America/Dawson", "America/Whitehorse|Canada/Yukon", "Asia/Bangkok|Antarctica/Davis", "Asia/Bangkok|Asia/Barnaul", "Asia/Bangkok|Asia/Ho_Chi_Minh", "Asia/Bangkok|Asia/Hovd", "Asia/Bangkok|Asia/Krasnoyarsk", "Asia/Bangkok|Asia/Novokuznetsk", "Asia/Bangkok|Asia/Novosibirsk", "Asia/Bangkok|Asia/Phnom_Penh", "Asia/Bangkok|Asia/Saigon", "Asia/Bangkok|Asia/Tomsk", "Asia/Bangkok|Asia/Vientiane", "Asia/Bangkok|Etc/GMT-7", "Asia/Bangkok|Indian/Christmas", "Asia/Chita|Asia/Dili", "Asia/Chita|Asia/Khandyga", "Asia/Chita|Asia/Yakutsk", "Asia/Chita|Etc/GMT-9", "Asia/Chita|Pacific/Palau", "Asia/Dhaka|Antarctica/Vostok", "Asia/Dhaka|Asia/Almaty", "Asia/Dhaka|Asia/Bishkek", "Asia/Dhaka|Asia/Dacca", "Asia/Dhaka|Asia/Kashgar", "Asia/Dhaka|Asia/Omsk", "Asia/Dhaka|Asia/Qostanay", "Asia/Dhaka|Asia/Thimbu", "Asia/Dhaka|Asia/Thimphu", "Asia/Dhaka|Asia/Urumqi", "Asia/Dhaka|Etc/GMT-6", "Asia/Dhaka|Indian/Chagos", "Asia/Dubai|Asia/Baku", "Asia/Dubai|Asia/Muscat", "Asia/Dubai|Asia/Tbilisi", "Asia/Dubai|Asia/Yerevan", "Asia/Dubai|Etc/GMT-4", "Asia/Dubai|Europe/Astrakhan", "Asia/Dubai|Europe/Samara", "Asia/Dubai|Europe/Saratov", "Asia/Dubai|Europe/Ulyanovsk", "Asia/Dubai|Indian/Mahe", "Asia/Dubai|Indian/Mauritius", "Asia/Dubai|Indian/Reunion", "Asia/Gaza|Asia/Hebron", "Asia/Hong_Kong|Hongkong", "Asia/Jakarta|Asia/Pontianak", "Asia/Jerusalem|Asia/Tel_Aviv", "Asia/Jerusalem|Israel", "Asia/Kamchatka|Asia/Anadyr", "Asia/Kamchatka|Etc/GMT-12", "Asia/Kamchatka|Kwajalein", "Asia/Kamchatka|Pacific/Funafuti", "Asia/Kamchatka|Pacific/Kwajalein", "Asia/Kamchatka|Pacific/Majuro", "Asia/Kamchatka|Pacific/Nauru", "Asia/Kamchatka|Pacific/Tarawa", "Asia/Kamchatka|Pacific/Wake", "Asia/Kamchatka|Pacific/Wallis", "Asia/Kathmandu|Asia/Katmandu", "Asia/Kolkata|Asia/Calcutta", "Asia/Kuala_Lumpur|Asia/Brunei", "Asia/Kuala_Lumpur|Asia/Choibalsan", "Asia/Kuala_Lumpur|Asia/Irkutsk", "Asia/Kuala_Lumpur|Asia/Kuching", "Asia/Kuala_Lumpur|Asia/Singapore", "Asia/Kuala_Lumpur|Asia/Ulaanbaatar", "Asia/Kuala_Lumpur|Asia/Ulan_Bator", "Asia/Kuala_Lumpur|Etc/GMT-8", "Asia/Kuala_Lumpur|Singapore", "Asia/Makassar|Asia/Ujung_Pandang", "Asia/Rangoon|Asia/Yangon", "Asia/Rangoon|Indian/Cocos", "Asia/Sakhalin|Asia/Magadan", "Asia/Sakhalin|Asia/Srednekolymsk", "Asia/Sakhalin|Etc/GMT-11", "Asia/Sakhalin|Pacific/Bougainville", "Asia/Sakhalin|Pacific/Efate", "Asia/Sakhalin|Pacific/Guadalcanal", "Asia/Sakhalin|Pacific/Kosrae", "Asia/Sakhalin|Pacific/Noumea", "Asia/Sakhalin|Pacific/Pohnpei", "Asia/Sakhalin|Pacific/Ponape", "Asia/Seoul|ROK", "Asia/Shanghai|Asia/Chongqing", "Asia/Shanghai|Asia/Chungking", "Asia/Shanghai|Asia/Harbin", "Asia/Shanghai|Asia/Macao", "Asia/Shanghai|Asia/Macau", "Asia/Shanghai|Asia/Taipei", "Asia/Shanghai|PRC", "Asia/Shanghai|ROC", "Asia/Tashkent|Antarctica/Mawson", "Asia/Tashkent|Asia/Aqtau", "Asia/Tashkent|Asia/Aqtobe", "Asia/Tashkent|Asia/Ashgabat", "Asia/Tashkent|Asia/Ashkhabad", "Asia/Tashkent|Asia/Atyrau", "Asia/Tashkent|Asia/Dushanbe", "Asia/Tashkent|Asia/Oral", "Asia/Tashkent|Asia/Samarkand", "Asia/Tashkent|Asia/Yekaterinburg", "Asia/Tashkent|Etc/GMT-5", "Asia/Tashkent|Indian/Kerguelen", "Asia/Tashkent|Indian/Maldives", "Asia/Tehran|Iran", "Asia/Tokyo|Japan", "Asia/Vladivostok|Antarctica/DumontDUrville", "Asia/Vladivostok|Asia/Ust-Nera", "Asia/Vladivostok|Etc/GMT-10", "Asia/Vladivostok|Pacific/Chuuk", "Asia/Vladivostok|Pacific/Port_Moresby", "Asia/Vladivostok|Pacific/Truk", "Asia/Vladivostok|Pacific/Yap", "Atlantic/Azores|America/Scoresbysund", "Atlantic/Cape_Verde|Etc/GMT+1", "Australia/Adelaide|Australia/Broken_Hill", "Australia/Adelaide|Australia/South", "Australia/Adelaide|Australia/Yancowinna", "Australia/Brisbane|Australia/Lindeman", "Australia/Brisbane|Australia/Queensland", "Australia/Darwin|Australia/North", "Australia/Lord_Howe|Australia/LHI", "Australia/Perth|Australia/West", "Australia/Sydney|Antarctica/Macquarie", "Australia/Sydney|Australia/ACT", "Australia/Sydney|Australia/Canberra", "Australia/Sydney|Australia/Currie", "Australia/Sydney|Australia/Hobart", "Australia/Sydney|Australia/Melbourne", "Australia/Sydney|Australia/NSW", "Australia/Sydney|Australia/Tasmania", "Australia/Sydney|Australia/Victoria", "Etc/UTC|Etc/UCT", "Etc/UTC|Etc/Universal", "Etc/UTC|Etc/Zulu", "Etc/UTC|UCT", "Etc/UTC|UTC", "Etc/UTC|Universal", "Etc/UTC|Zulu", "Europe/Athens|Asia/Famagusta", "Europe/Athens|Asia/Nicosia", "Europe/Athens|EET", "Europe/Athens|Europe/Bucharest", "Europe/Athens|Europe/Helsinki", "Europe/Athens|Europe/Kiev", "Europe/Athens|Europe/Kyiv", "Europe/Athens|Europe/Mariehamn", "Europe/Athens|Europe/Nicosia", "Europe/Athens|Europe/Riga", "Europe/Athens|Europe/Sofia", "Europe/Athens|Europe/Tallinn", "Europe/Athens|Europe/Uzhgorod", "Europe/Athens|Europe/Vilnius", "Europe/Athens|Europe/Zaporozhye", "Europe/Chisinau|Europe/Tiraspol", "Europe/Dublin|Eire", "Europe/Istanbul|Antarctica/Syowa", "Europe/Istanbul|Asia/Aden", "Europe/Istanbul|Asia/Baghdad", "Europe/Istanbul|Asia/Bahrain", "Europe/Istanbul|Asia/Istanbul", "Europe/Istanbul|Asia/Kuwait", "Europe/Istanbul|Asia/Qatar", "Europe/Istanbul|Asia/Riyadh", "Europe/Istanbul|Etc/GMT-3", "Europe/Istanbul|Europe/Minsk", "Europe/Istanbul|Turkey", "Europe/Lisbon|Atlantic/Canary", "Europe/Lisbon|Atlantic/Faeroe", "Europe/Lisbon|Atlantic/Faroe", "Europe/Lisbon|Atlantic/Madeira", "Europe/Lisbon|Portugal", "Europe/Lisbon|WET", "Europe/London|Europe/Belfast", "Europe/London|Europe/Guernsey", "Europe/London|Europe/Isle_of_Man", "Europe/London|Europe/Jersey", "Europe/London|GB", "Europe/London|GB-Eire", "Europe/Moscow|Europe/Kirov", "Europe/Moscow|Europe/Simferopol", "Europe/Moscow|W-SU", "Europe/Paris|Africa/Ceuta", "Europe/Paris|Arctic/Longyearbyen", "Europe/Paris|Atlantic/Jan_Mayen", "Europe/Paris|CET", "Europe/Paris|Europe/Amsterdam", "Europe/Paris|Europe/Andorra", "Europe/Paris|Europe/Belgrade", "Europe/Paris|Europe/Berlin", "Europe/Paris|Europe/Bratislava", "Europe/Paris|Europe/Brussels", "Europe/Paris|Europe/Budapest", "Europe/Paris|Europe/Busingen", "Europe/Paris|Europe/Copenhagen", "Europe/Paris|Europe/Gibraltar", "Europe/Paris|Europe/Ljubljana", "Europe/Paris|Europe/Luxembourg", "Europe/Paris|Europe/Madrid", "Europe/Paris|Europe/Malta", "Europe/Paris|Europe/Monaco", "Europe/Paris|Europe/Oslo", "Europe/Paris|Europe/Podgorica", "Europe/Paris|Europe/Prague", "Europe/Paris|Europe/Rome", "Europe/Paris|Europe/San_Marino", "Europe/Paris|Europe/Sarajevo", "Europe/Paris|Europe/Skopje", "Europe/Paris|Europe/Stockholm", "Europe/Paris|Europe/Tirane", "Europe/Paris|Europe/Vaduz", "Europe/Paris|Europe/Vatican", "Europe/Paris|Europe/Vienna", "Europe/Paris|Europe/Warsaw", "Europe/Paris|Europe/Zagreb", "Europe/Paris|Europe/Zurich", "Europe/Paris|Poland", "Pacific/Auckland|Antarctica/McMurdo", "Pacific/Auckland|Antarctica/South_Pole", "Pacific/Auckland|NZ", "Pacific/Chatham|NZ-CHAT", "Pacific/Easter|Chile/EasterIsland", "Pacific/Galapagos|Etc/GMT+6", "Pacific/Gambier|Etc/GMT+9", "Pacific/Guam|Pacific/Saipan", "Pacific/Honolulu|HST", "Pacific/Honolulu|Pacific/Johnston", "Pacific/Honolulu|US/Hawaii", "Pacific/Kiritimati|Etc/GMT-14", "Pacific/Niue|Etc/GMT+11", "Pacific/Pago_Pago|Pacific/Midway", "Pacific/Pago_Pago|Pacific/Samoa", "Pacific/Pago_Pago|US/Samoa", "Pacific/Pitcairn|Etc/GMT+8", "Pacific/Tahiti|Etc/GMT+10", "Pacific/Tahiti|Pacific/Rarotonga", "Pacific/Tongatapu|Etc/GMT-13", "Pacific/Tongatapu|Pacific/Enderbury", "Pacific/Tongatapu|Pacific/Fakaofo", "Pacific/Tongatapu|Pacific/Kanton"], countries: ["AD|Europe/Andorra", "AE|Asia/Dubai", "AF|Asia/Kabul", "AG|America/Puerto_Rico America/Antigua", "AI|America/Puerto_Rico America/Anguilla", "AL|Europe/Tirane", "AM|Asia/Yerevan", "AO|Africa/Lagos Africa/Luanda", "AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Asia/Urumqi Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa Antarctica/Vostok", "AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia", "AS|Pacific/Pago_Pago", "AT|Europe/Vienna", "AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla", "AW|America/Puerto_Rico America/Aruba", "AX|Europe/Helsinki Europe/Mariehamn", "AZ|Asia/Baku", "BA|Europe/Belgrade Europe/Sarajevo", "BB|America/Barbados", "BD|Asia/Dhaka", "BE|Europe/Brussels", "BF|Africa/Abidjan Africa/Ouagadougou", "BG|Europe/Sofia", "BH|Asia/Qatar Asia/Bahrain", "BI|Africa/Maputo Africa/Bujumbura", "BJ|Africa/Lagos Africa/Porto-Novo", "BL|America/Puerto_Rico America/St_Barthelemy", "BM|Atlantic/Bermuda", "BN|Asia/Kuching Asia/Brunei", "BO|America/La_Paz", "BQ|America/Puerto_Rico America/Kralendijk", "BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco", "BS|America/Toronto America/Nassau", "BT|Asia/Thimphu", "BW|Africa/Maputo Africa/Gaborone", "BY|Europe/Minsk", "BZ|America/Belize", "CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston", "CC|Asia/Yangon Indian/Cocos", "CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi", "CF|Africa/Lagos Africa/Bangui", "CG|Africa/Lagos Africa/Brazzaville", "CH|Europe/Zurich", "CI|Africa/Abidjan", "CK|Pacific/Rarotonga", "CL|America/Santiago America/Punta_Arenas Pacific/Easter", "CM|Africa/Lagos Africa/Douala", "CN|Asia/Shanghai Asia/Urumqi", "CO|America/Bogota", "CR|America/Costa_Rica", "CU|America/Havana", "CV|Atlantic/Cape_Verde", "CW|America/Puerto_Rico America/Curacao", "CX|Asia/Bangkok Indian/Christmas", "CY|Asia/Nicosia Asia/Famagusta", "CZ|Europe/Prague", "DE|Europe/Zurich Europe/Berlin Europe/Busingen", "DJ|Africa/Nairobi Africa/Djibouti", "DK|Europe/Berlin Europe/Copenhagen", "DM|America/Puerto_Rico America/Dominica", "DO|America/Santo_Domingo", "DZ|Africa/Algiers", "EC|America/Guayaquil Pacific/Galapagos", "EE|Europe/Tallinn", "EG|Africa/Cairo", "EH|Africa/El_Aaiun", "ER|Africa/Nairobi Africa/Asmara", "ES|Europe/Madrid Africa/Ceuta Atlantic/Canary", "ET|Africa/Nairobi Africa/Addis_Ababa", "FI|Europe/Helsinki", "FJ|Pacific/Fiji", "FK|Atlantic/Stanley", "FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei", "FO|Atlantic/Faroe", "FR|Europe/Paris", "GA|Africa/Lagos Africa/Libreville", "GB|Europe/London", "GD|America/Puerto_Rico America/Grenada", "GE|Asia/Tbilisi", "GF|America/Cayenne", "GG|Europe/London Europe/Guernsey", "GH|Africa/Abidjan Africa/Accra", "GI|Europe/Gibraltar", "GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule", "GM|Africa/Abidjan Africa/Banjul", "GN|Africa/Abidjan Africa/Conakry", "GP|America/Puerto_Rico America/Guadeloupe", "GQ|Africa/Lagos Africa/Malabo", "GR|Europe/Athens", "GS|Atlantic/South_Georgia", "GT|America/Guatemala", "GU|Pacific/Guam", "GW|Africa/Bissau", "GY|America/Guyana", "HK|Asia/Hong_Kong", "HN|America/Tegucigalpa", "HR|Europe/Belgrade Europe/Zagreb", "HT|America/Port-au-Prince", "HU|Europe/Budapest", "ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura", "IE|Europe/Dublin", "IL|Asia/Jerusalem", "IM|Europe/London Europe/Isle_of_Man", "IN|Asia/Kolkata", "IO|Indian/Chagos", "IQ|Asia/Baghdad", "IR|Asia/Tehran", "IS|Africa/Abidjan Atlantic/Reykjavik", "IT|Europe/Rome", "JE|Europe/London Europe/Jersey", "JM|America/Jamaica", "JO|Asia/Amman", "JP|Asia/Tokyo", "KE|Africa/Nairobi", "KG|Asia/Bishkek", "KH|Asia/Bangkok Asia/Phnom_Penh", "KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati", "KM|Africa/Nairobi Indian/Comoro", "KN|America/Puerto_Rico America/St_Kitts", "KP|Asia/Pyongyang", "KR|Asia/Seoul", "KW|Asia/Riyadh Asia/Kuwait", "KY|America/Panama America/Cayman", "KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral", "LA|Asia/Bangkok Asia/Vientiane", "LB|Asia/Beirut", "LC|America/Puerto_Rico America/St_Lucia", "LI|Europe/Zurich Europe/Vaduz", "LK|Asia/Colombo", "LR|Africa/Monrovia", "LS|Africa/Johannesburg Africa/Maseru", "LT|Europe/Vilnius", "LU|Europe/Brussels Europe/Luxembourg", "LV|Europe/Riga", "LY|Africa/Tripoli", "MA|Africa/Casablanca", "MC|Europe/Paris Europe/Monaco", "MD|Europe/Chisinau", "ME|Europe/Belgrade Europe/Podgorica", "MF|America/Puerto_Rico America/Marigot", "MG|Africa/Nairobi Indian/Antananarivo", "MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro", "MK|Europe/Belgrade Europe/Skopje", "ML|Africa/Abidjan Africa/Bamako", "MM|Asia/Yangon", "MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan", "MO|Asia/Macau", "MP|Pacific/Guam Pacific/Saipan", "MQ|America/Martinique", "MR|Africa/Abidjan Africa/Nouakchott", "MS|America/Puerto_Rico America/Montserrat", "MT|Europe/Malta", "MU|Indian/Mauritius", "MV|Indian/Maldives", "MW|Africa/Maputo Africa/Blantyre", "MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana", "MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur", "MZ|Africa/Maputo", "NA|Africa/Windhoek", "NC|Pacific/Noumea", "NE|Africa/Lagos Africa/Niamey", "NF|Pacific/Norfolk", "NG|Africa/Lagos", "NI|America/Managua", "NL|Europe/Brussels Europe/Amsterdam", "NO|Europe/Berlin Europe/Oslo", "NP|Asia/Kathmandu", "NR|Pacific/Nauru", "NU|Pacific/Niue", "NZ|Pacific/Auckland Pacific/Chatham", "OM|Asia/Dubai Asia/Muscat", "PA|America/Panama", "PE|America/Lima", "PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier", "PG|Pacific/Port_Moresby Pacific/Bougainville", "PH|Asia/Manila", "PK|Asia/Karachi", "PL|Europe/Warsaw", "PM|America/Miquelon", "PN|Pacific/Pitcairn", "PR|America/Puerto_Rico", "PS|Asia/Gaza Asia/Hebron", "PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores", "PW|Pacific/Palau", "PY|America/Asuncion", "QA|Asia/Qatar", "RE|Asia/Dubai Indian/Reunion", "RO|Europe/Bucharest", "RS|Europe/Belgrade", "RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr", "RW|Africa/Maputo Africa/Kigali", "SA|Asia/Riyadh", "SB|Pacific/Guadalcanal", "SC|Asia/Dubai Indian/Mahe", "SD|Africa/Khartoum", "SE|Europe/Berlin Europe/Stockholm", "SG|Asia/Singapore", "SH|Africa/Abidjan Atlantic/St_Helena", "SI|Europe/Belgrade Europe/Ljubljana", "SJ|Europe/Berlin Arctic/Longyearbyen", "SK|Europe/Prague Europe/Bratislava", "SL|Africa/Abidjan Africa/Freetown", "SM|Europe/Rome Europe/San_Marino", "SN|Africa/Abidjan Africa/Dakar", "SO|Africa/Nairobi Africa/Mogadishu", "SR|America/Paramaribo", "SS|Africa/Juba", "ST|Africa/Sao_Tome", "SV|America/El_Salvador", "SX|America/Puerto_Rico America/Lower_Princes", "SY|Asia/Damascus", "SZ|Africa/Johannesburg Africa/Mbabane", "TC|America/Grand_Turk", "TD|Africa/Ndjamena", "TF|Asia/Dubai Indian/Maldives Indian/Kerguelen", "TG|Africa/Abidjan Africa/Lome", "TH|Asia/Bangkok", "TJ|Asia/Dushanbe", "TK|Pacific/Fakaofo", "TL|Asia/Dili", "TM|Asia/Ashgabat", "TN|Africa/Tunis", "TO|Pacific/Tongatapu", "TR|Europe/Istanbul", "TT|America/Puerto_Rico America/Port_of_Spain", "TV|Pacific/Tarawa Pacific/Funafuti", "TW|Asia/Taipei", "TZ|Africa/Nairobi Africa/Dar_es_Salaam", "UA|Europe/Simferopol Europe/Kyiv", "UG|Africa/Nairobi Africa/Kampala", "UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake", "US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu", "UY|America/Montevideo", "UZ|Asia/Samarkand Asia/Tashkent", "VA|Europe/Rome Europe/Vatican", "VC|America/Puerto_Rico America/St_Vincent", "VE|America/Caracas", "VG|America/Puerto_Rico America/Tortola", "VI|America/Puerto_Rico America/St_Thomas", "VN|Asia/Bangkok Asia/Ho_Chi_Minh", "VU|Pacific/Efate", "WF|Pacific/Tarawa Pacific/Wallis", "WS|Pacific/Apia", "YE|Asia/Riyadh Asia/Aden", "YT|Africa/Nairobi Indian/Mayotte", "ZA|Africa/Johannesburg", "ZM|Africa/Maputo Africa/Lusaka", "ZW|Africa/Maputo Africa/Harare"] }), o;
      });
    }
  });

  // frappe/public/js/lib/leaflet/leaflet.js
  var require_leaflet = __commonJS({
    "frappe/public/js/lib/leaflet/leaflet.js"(exports, module) {
      !function(t, i2) {
        "object" == typeof exports && "undefined" != typeof module ? i2(exports) : "function" == typeof define && define.amd ? define(["exports"], i2) : i2(t.L = {});
      }(exports, function(t) {
        "use strict";
        function i2(t2) {
          var i3, e2, n2, o2;
          for (e2 = 1, n2 = arguments.length; e2 < n2; e2++) {
            o2 = arguments[e2];
            for (i3 in o2)
              t2[i3] = o2[i3];
          }
          return t2;
        }
        function e(t2, i3) {
          var e2 = Array.prototype.slice;
          if (t2.bind)
            return t2.bind.apply(t2, e2.call(arguments, 1));
          var n2 = e2.call(arguments, 2);
          return function() {
            return t2.apply(i3, n2.length ? n2.concat(e2.call(arguments)) : arguments);
          };
        }
        function n(t2) {
          return t2._leaflet_id = t2._leaflet_id || ++ti, t2._leaflet_id;
        }
        function o(t2, i3, e2) {
          var n2, o2, s2, r2;
          return r2 = function() {
            n2 = false, o2 && (s2.apply(e2, o2), o2 = false);
          }, s2 = function() {
            n2 ? o2 = arguments : (t2.apply(e2, arguments), setTimeout(r2, i3), n2 = true);
          };
        }
        function s(t2, i3, e2) {
          var n2 = i3[1], o2 = i3[0], s2 = n2 - o2;
          return t2 === n2 && e2 ? t2 : ((t2 - o2) % s2 + s2) % s2 + o2;
        }
        function r() {
          return false;
        }
        function a(t2, i3) {
          var e2 = Math.pow(10, i3 || 5);
          return Math.round(t2 * e2) / e2;
        }
        function h(t2) {
          return t2.trim ? t2.trim() : t2.replace(/^\s+|\s+$/g, "");
        }
        function u(t2) {
          return h(t2).split(/\s+/);
        }
        function l(t2, i3) {
          t2.hasOwnProperty("options") || (t2.options = t2.options ? Qt(t2.options) : {});
          for (var e2 in i3)
            t2.options[e2] = i3[e2];
          return t2.options;
        }
        function c(t2, i3, e2) {
          var n2 = [];
          for (var o2 in t2)
            n2.push(encodeURIComponent(e2 ? o2.toUpperCase() : o2) + "=" + encodeURIComponent(t2[o2]));
          return (i3 && -1 !== i3.indexOf("?") ? "&" : "?") + n2.join("&");
        }
        function _(t2, i3) {
          return t2.replace(ii, function(t3, e2) {
            var n2 = i3[e2];
            if (void 0 === n2)
              throw new Error("No value provided for variable " + t3);
            return "function" == typeof n2 && (n2 = n2(i3)), n2;
          });
        }
        function d(t2, i3) {
          for (var e2 = 0; e2 < t2.length; e2++)
            if (t2[e2] === i3)
              return e2;
          return -1;
        }
        function p(t2) {
          return window["webkit" + t2] || window["moz" + t2] || window["ms" + t2];
        }
        function m(t2) {
          var i3 = +new Date(), e2 = Math.max(0, 16 - (i3 - oi));
          return oi = i3 + e2, window.setTimeout(t2, e2);
        }
        function f(t2, i3, n2) {
          if (!n2 || si !== m)
            return si.call(window, e(t2, i3));
          t2.call(i3);
        }
        function g(t2) {
          t2 && ri.call(window, t2);
        }
        function v() {
        }
        function y(t2) {
          if (L && L.Mixin) {
            t2 = ei(t2) ? t2 : [t2];
            for (var i3 = 0; i3 < t2.length; i3++)
              t2[i3] === L.Mixin.Events && console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.", new Error().stack);
          }
        }
        function x(t2, i3, e2) {
          this.x = e2 ? Math.round(t2) : t2, this.y = e2 ? Math.round(i3) : i3;
        }
        function w(t2, i3, e2) {
          return t2 instanceof x ? t2 : ei(t2) ? new x(t2[0], t2[1]) : void 0 === t2 || null === t2 ? t2 : "object" == typeof t2 && "x" in t2 && "y" in t2 ? new x(t2.x, t2.y) : new x(t2, i3, e2);
        }
        function P(t2, i3) {
          if (t2)
            for (var e2 = i3 ? [t2, i3] : t2, n2 = 0, o2 = e2.length; n2 < o2; n2++)
              this.extend(e2[n2]);
        }
        function b(t2, i3) {
          return !t2 || t2 instanceof P ? t2 : new P(t2, i3);
        }
        function T(t2, i3) {
          if (t2)
            for (var e2 = i3 ? [t2, i3] : t2, n2 = 0, o2 = e2.length; n2 < o2; n2++)
              this.extend(e2[n2]);
        }
        function z(t2, i3) {
          return t2 instanceof T ? t2 : new T(t2, i3);
        }
        function M(t2, i3, e2) {
          if (isNaN(t2) || isNaN(i3))
            throw new Error("Invalid LatLng object: (" + t2 + ", " + i3 + ")");
          this.lat = +t2, this.lng = +i3, void 0 !== e2 && (this.alt = +e2);
        }
        function C(t2, i3, e2) {
          return t2 instanceof M ? t2 : ei(t2) && "object" != typeof t2[0] ? 3 === t2.length ? new M(t2[0], t2[1], t2[2]) : 2 === t2.length ? new M(t2[0], t2[1]) : null : void 0 === t2 || null === t2 ? t2 : "object" == typeof t2 && "lat" in t2 ? new M(t2.lat, "lng" in t2 ? t2.lng : t2.lon, t2.alt) : void 0 === i3 ? null : new M(t2, i3, e2);
        }
        function Z(t2, i3, e2, n2) {
          if (ei(t2))
            return this._a = t2[0], this._b = t2[1], this._c = t2[2], void (this._d = t2[3]);
          this._a = t2, this._b = i3, this._c = e2, this._d = n2;
        }
        function E(t2, i3, e2, n2) {
          return new Z(t2, i3, e2, n2);
        }
        function S(t2) {
          return document.createElementNS("http://www.w3.org/2000/svg", t2);
        }
        function k(t2, i3) {
          var e2, n2, o2, s2, r2, a2, h2 = "";
          for (e2 = 0, o2 = t2.length; e2 < o2; e2++) {
            for (n2 = 0, s2 = (r2 = t2[e2]).length; n2 < s2; n2++)
              a2 = r2[n2], h2 += (n2 ? "L" : "M") + a2.x + " " + a2.y;
            h2 += i3 ? qi ? "z" : "x" : "";
          }
          return h2 || "M0 0";
        }
        function B(t2) {
          return navigator.userAgent.toLowerCase().indexOf(t2) >= 0;
        }
        function I(t2, i3, e2, n2) {
          return "touchstart" === i3 ? O(t2, e2, n2) : "touchmove" === i3 ? W(t2, e2, n2) : "touchend" === i3 && H(t2, e2, n2), this;
        }
        function A(t2, i3, e2) {
          var n2 = t2["_leaflet_" + i3 + e2];
          return "touchstart" === i3 ? t2.removeEventListener(Xi, n2, false) : "touchmove" === i3 ? t2.removeEventListener(Ji, n2, false) : "touchend" === i3 && (t2.removeEventListener($i, n2, false), t2.removeEventListener(Qi, n2, false)), this;
        }
        function O(t2, i3, n2) {
          var o2 = e(function(t3) {
            if ("mouse" !== t3.pointerType && t3.pointerType !== t3.MSPOINTER_TYPE_MOUSE && t3.pointerType !== t3.MSPOINTER_TYPE_MOUSE) {
              if (!(te.indexOf(t3.target.tagName) < 0))
                return;
              $2(t3);
            }
            j(t3, i3);
          });
          t2["_leaflet_touchstart" + n2] = o2, t2.addEventListener(Xi, o2, false), ee || (document.documentElement.addEventListener(Xi, R, true), document.documentElement.addEventListener(Ji, D, true), document.documentElement.addEventListener($i, N, true), document.documentElement.addEventListener(Qi, N, true), ee = true);
        }
        function R(t2) {
          ie[t2.pointerId] = t2, ne++;
        }
        function D(t2) {
          ie[t2.pointerId] && (ie[t2.pointerId] = t2);
        }
        function N(t2) {
          delete ie[t2.pointerId], ne--;
        }
        function j(t2, i3) {
          t2.touches = [];
          for (var e2 in ie)
            t2.touches.push(ie[e2]);
          t2.changedTouches = [t2], i3(t2);
        }
        function W(t2, i3, e2) {
          var n2 = function(t3) {
            (t3.pointerType !== t3.MSPOINTER_TYPE_MOUSE && "mouse" !== t3.pointerType || 0 !== t3.buttons) && j(t3, i3);
          };
          t2["_leaflet_touchmove" + e2] = n2, t2.addEventListener(Ji, n2, false);
        }
        function H(t2, i3, e2) {
          var n2 = function(t3) {
            j(t3, i3);
          };
          t2["_leaflet_touchend" + e2] = n2, t2.addEventListener($i, n2, false), t2.addEventListener(Qi, n2, false);
        }
        function F(t2, i3, e2) {
          function n2(t3) {
            var i4;
            if (Wi) {
              if (!Li || "mouse" === t3.pointerType)
                return;
              i4 = ne;
            } else
              i4 = t3.touches.length;
            if (!(i4 > 1)) {
              var e3 = Date.now(), n3 = e3 - (s2 || e3);
              r2 = t3.touches ? t3.touches[0] : t3, a2 = n3 > 0 && n3 <= h2, s2 = e3;
            }
          }
          function o2(t3) {
            if (a2 && !r2.cancelBubble) {
              if (Wi) {
                if (!Li || "mouse" === t3.pointerType)
                  return;
                var e3, n3, o3 = {};
                for (n3 in r2)
                  e3 = r2[n3], o3[n3] = e3 && e3.bind ? e3.bind(r2) : e3;
                r2 = o3;
              }
              r2.type = "dblclick", i3(r2), s2 = null;
            }
          }
          var s2, r2, a2 = false, h2 = 250;
          return t2[re2 + oe + e2] = n2, t2[re2 + se + e2] = o2, t2[re2 + "dblclick" + e2] = i3, t2.addEventListener(oe, n2, false), t2.addEventListener(se, o2, false), t2.addEventListener("dblclick", i3, false), this;
        }
        function U(t2, i3) {
          var e2 = t2[re2 + oe + i3], n2 = t2[re2 + se + i3], o2 = t2[re2 + "dblclick" + i3];
          return t2.removeEventListener(oe, e2, false), t2.removeEventListener(se, n2, false), Li || t2.removeEventListener("dblclick", o2, false), this;
        }
        function V(t2, i3, e2, n2) {
          if ("object" == typeof i3)
            for (var o2 in i3)
              q(t2, o2, i3[o2], e2);
          else
            for (var s2 = 0, r2 = (i3 = u(i3)).length; s2 < r2; s2++)
              q(t2, i3[s2], e2, n2);
          return this;
        }
        function G(t2, i3, e2, n2) {
          if ("object" == typeof i3)
            for (var o2 in i3)
              K(t2, o2, i3[o2], e2);
          else if (i3)
            for (var s2 = 0, r2 = (i3 = u(i3)).length; s2 < r2; s2++)
              K(t2, i3[s2], e2, n2);
          else {
            for (var a2 in t2[ae])
              K(t2, a2, t2[ae][a2]);
            delete t2[ae];
          }
          return this;
        }
        function q(t2, i3, e2, o2) {
          var s2 = i3 + n(e2) + (o2 ? "_" + n(o2) : "");
          if (t2[ae] && t2[ae][s2])
            return this;
          var r2 = function(i4) {
            return e2.call(o2 || t2, i4 || window.event);
          }, a2 = r2;
          Wi && 0 === i3.indexOf("touch") ? I(t2, i3, r2, s2) : !Hi || "dblclick" !== i3 || !F || Wi && Mi ? "addEventListener" in t2 ? "mousewheel" === i3 ? t2.addEventListener("onwheel" in t2 ? "wheel" : "mousewheel", r2, false) : "mouseenter" === i3 || "mouseleave" === i3 ? (r2 = function(i4) {
            i4 = i4 || window.event, ot(t2, i4) && a2(i4);
          }, t2.addEventListener("mouseenter" === i3 ? "mouseover" : "mouseout", r2, false)) : ("click" === i3 && bi && (r2 = function(t3) {
            st(t3, a2);
          }), t2.addEventListener(i3, r2, false)) : "attachEvent" in t2 && t2.attachEvent("on" + i3, r2) : F(t2, r2, s2), t2[ae] = t2[ae] || {}, t2[ae][s2] = r2;
        }
        function K(t2, i3, e2, o2) {
          var s2 = i3 + n(e2) + (o2 ? "_" + n(o2) : ""), r2 = t2[ae] && t2[ae][s2];
          if (!r2)
            return this;
          Wi && 0 === i3.indexOf("touch") ? A(t2, i3, s2) : Hi && "dblclick" === i3 && U ? U(t2, s2) : "removeEventListener" in t2 ? "mousewheel" === i3 ? t2.removeEventListener("onwheel" in t2 ? "wheel" : "mousewheel", r2, false) : t2.removeEventListener("mouseenter" === i3 ? "mouseover" : "mouseleave" === i3 ? "mouseout" : i3, r2, false) : "detachEvent" in t2 && t2.detachEvent("on" + i3, r2), t2[ae][s2] = null;
        }
        function Y(t2) {
          return t2.stopPropagation ? t2.stopPropagation() : t2.originalEvent ? t2.originalEvent._stopped = true : t2.cancelBubble = true, nt(t2), this;
        }
        function X(t2) {
          return q(t2, "mousewheel", Y), this;
        }
        function J(t2) {
          return V(t2, "mousedown touchstart dblclick", Y), q(t2, "click", et), this;
        }
        function $2(t2) {
          return t2.preventDefault ? t2.preventDefault() : t2.returnValue = false, this;
        }
        function Q(t2) {
          return $2(t2), Y(t2), this;
        }
        function tt(t2, i3) {
          if (!i3)
            return new x(t2.clientX, t2.clientY);
          var e2 = i3.getBoundingClientRect();
          return new x(t2.clientX - e2.left - i3.clientLeft, t2.clientY - e2.top - i3.clientTop);
        }
        function it(t2) {
          return Li ? t2.wheelDeltaY / 2 : t2.deltaY && 0 === t2.deltaMode ? -t2.deltaY / he : t2.deltaY && 1 === t2.deltaMode ? 20 * -t2.deltaY : t2.deltaY && 2 === t2.deltaMode ? 60 * -t2.deltaY : t2.deltaX || t2.deltaZ ? 0 : t2.wheelDelta ? (t2.wheelDeltaY || t2.wheelDelta) / 2 : t2.detail && Math.abs(t2.detail) < 32765 ? 20 * -t2.detail : t2.detail ? t2.detail / -32765 * 60 : 0;
        }
        function et(t2) {
          ue[t2.type] = true;
        }
        function nt(t2) {
          var i3 = ue[t2.type];
          return ue[t2.type] = false, i3;
        }
        function ot(t2, i3) {
          var e2 = i3.relatedTarget;
          if (!e2)
            return true;
          try {
            for (; e2 && e2 !== t2; )
              e2 = e2.parentNode;
          } catch (t3) {
            return false;
          }
          return e2 !== t2;
        }
        function st(t2, i3) {
          var e2 = t2.timeStamp || t2.originalEvent && t2.originalEvent.timeStamp, n2 = di && e2 - di;
          n2 && n2 > 100 && n2 < 500 || t2.target._simulatedClick && !t2._simulated ? Q(t2) : (di = e2, i3(t2));
        }
        function rt(t2) {
          return "string" == typeof t2 ? document.getElementById(t2) : t2;
        }
        function at(t2, i3) {
          var e2 = t2.style[i3] || t2.currentStyle && t2.currentStyle[i3];
          if ((!e2 || "auto" === e2) && document.defaultView) {
            var n2 = document.defaultView.getComputedStyle(t2, null);
            e2 = n2 ? n2[i3] : null;
          }
          return "auto" === e2 ? null : e2;
        }
        function ht(t2, i3, e2) {
          var n2 = document.createElement(t2);
          return n2.className = i3 || "", e2 && e2.appendChild(n2), n2;
        }
        function ut(t2) {
          var i3 = t2.parentNode;
          i3 && i3.removeChild(t2);
        }
        function lt(t2) {
          for (; t2.firstChild; )
            t2.removeChild(t2.firstChild);
        }
        function ct(t2) {
          var i3 = t2.parentNode;
          i3.lastChild !== t2 && i3.appendChild(t2);
        }
        function _t(t2) {
          var i3 = t2.parentNode;
          i3.firstChild !== t2 && i3.insertBefore(t2, i3.firstChild);
        }
        function dt(t2, i3) {
          if (void 0 !== t2.classList)
            return t2.classList.contains(i3);
          var e2 = gt(t2);
          return e2.length > 0 && new RegExp("(^|\\s)" + i3 + "(\\s|$)").test(e2);
        }
        function pt(t2, i3) {
          if (void 0 !== t2.classList)
            for (var e2 = u(i3), n2 = 0, o2 = e2.length; n2 < o2; n2++)
              t2.classList.add(e2[n2]);
          else if (!dt(t2, i3)) {
            var s2 = gt(t2);
            ft(t2, (s2 ? s2 + " " : "") + i3);
          }
        }
        function mt(t2, i3) {
          void 0 !== t2.classList ? t2.classList.remove(i3) : ft(t2, h((" " + gt(t2) + " ").replace(" " + i3 + " ", " ")));
        }
        function ft(t2, i3) {
          void 0 === t2.className.baseVal ? t2.className = i3 : t2.className.baseVal = i3;
        }
        function gt(t2) {
          return void 0 === t2.className.baseVal ? t2.className : t2.className.baseVal;
        }
        function vt(t2, i3) {
          "opacity" in t2.style ? t2.style.opacity = i3 : "filter" in t2.style && yt(t2, i3);
        }
        function yt(t2, i3) {
          var e2 = false, n2 = "DXImageTransform.Microsoft.Alpha";
          try {
            e2 = t2.filters.item(n2);
          } catch (t3) {
            if (1 === i3)
              return;
          }
          i3 = Math.round(100 * i3), e2 ? (e2.Enabled = 100 !== i3, e2.Opacity = i3) : t2.style.filter += " progid:" + n2 + "(opacity=" + i3 + ")";
        }
        function xt(t2) {
          for (var i3 = document.documentElement.style, e2 = 0; e2 < t2.length; e2++)
            if (t2[e2] in i3)
              return t2[e2];
          return false;
        }
        function wt(t2, i3, e2) {
          var n2 = i3 || new x(0, 0);
          t2.style[ce] = (Bi ? "translate(" + n2.x + "px," + n2.y + "px)" : "translate3d(" + n2.x + "px," + n2.y + "px,0)") + (e2 ? " scale(" + e2 + ")" : "");
        }
        function Lt(t2, i3) {
          t2._leaflet_pos = i3, Oi ? wt(t2, i3) : (t2.style.left = i3.x + "px", t2.style.top = i3.y + "px");
        }
        function Pt(t2) {
          return t2._leaflet_pos || new x(0, 0);
        }
        function bt() {
          V(window, "dragstart", $2);
        }
        function Tt() {
          G(window, "dragstart", $2);
        }
        function zt(t2) {
          for (; -1 === t2.tabIndex; )
            t2 = t2.parentNode;
          t2.style && (Mt(), me = t2, fe = t2.style.outline, t2.style.outline = "none", V(window, "keydown", Mt));
        }
        function Mt() {
          me && (me.style.outline = fe, me = void 0, fe = void 0, G(window, "keydown", Mt));
        }
        function Ct(t2, i3) {
          if (!i3 || !t2.length)
            return t2.slice();
          var e2 = i3 * i3;
          return t2 = kt(t2, e2), t2 = Et(t2, e2);
        }
        function Zt(t2, i3, e2) {
          return Math.sqrt(Rt(t2, i3, e2, true));
        }
        function Et(t2, i3) {
          var e2 = t2.length, n2 = new (typeof Uint8Array != void 0 + "" ? Uint8Array : Array)(e2);
          n2[0] = n2[e2 - 1] = 1, St(t2, n2, i3, 0, e2 - 1);
          var o2, s2 = [];
          for (o2 = 0; o2 < e2; o2++)
            n2[o2] && s2.push(t2[o2]);
          return s2;
        }
        function St(t2, i3, e2, n2, o2) {
          var s2, r2, a2, h2 = 0;
          for (r2 = n2 + 1; r2 <= o2 - 1; r2++)
            (a2 = Rt(t2[r2], t2[n2], t2[o2], true)) > h2 && (s2 = r2, h2 = a2);
          h2 > e2 && (i3[s2] = 1, St(t2, i3, e2, n2, s2), St(t2, i3, e2, s2, o2));
        }
        function kt(t2, i3) {
          for (var e2 = [t2[0]], n2 = 1, o2 = 0, s2 = t2.length; n2 < s2; n2++)
            Ot(t2[n2], t2[o2]) > i3 && (e2.push(t2[n2]), o2 = n2);
          return o2 < s2 - 1 && e2.push(t2[s2 - 1]), e2;
        }
        function Bt(t2, i3, e2, n2, o2) {
          var s2, r2, a2, h2 = n2 ? ze : At(t2, e2), u2 = At(i3, e2);
          for (ze = u2; ; ) {
            if (!(h2 | u2))
              return [t2, i3];
            if (h2 & u2)
              return false;
            a2 = At(r2 = It(t2, i3, s2 = h2 || u2, e2, o2), e2), s2 === h2 ? (t2 = r2, h2 = a2) : (i3 = r2, u2 = a2);
          }
        }
        function It(t2, i3, e2, n2, o2) {
          var s2, r2, a2 = i3.x - t2.x, h2 = i3.y - t2.y, u2 = n2.min, l2 = n2.max;
          return 8 & e2 ? (s2 = t2.x + a2 * (l2.y - t2.y) / h2, r2 = l2.y) : 4 & e2 ? (s2 = t2.x + a2 * (u2.y - t2.y) / h2, r2 = u2.y) : 2 & e2 ? (s2 = l2.x, r2 = t2.y + h2 * (l2.x - t2.x) / a2) : 1 & e2 && (s2 = u2.x, r2 = t2.y + h2 * (u2.x - t2.x) / a2), new x(s2, r2, o2);
        }
        function At(t2, i3) {
          var e2 = 0;
          return t2.x < i3.min.x ? e2 |= 1 : t2.x > i3.max.x && (e2 |= 2), t2.y < i3.min.y ? e2 |= 4 : t2.y > i3.max.y && (e2 |= 8), e2;
        }
        function Ot(t2, i3) {
          var e2 = i3.x - t2.x, n2 = i3.y - t2.y;
          return e2 * e2 + n2 * n2;
        }
        function Rt(t2, i3, e2, n2) {
          var o2, s2 = i3.x, r2 = i3.y, a2 = e2.x - s2, h2 = e2.y - r2, u2 = a2 * a2 + h2 * h2;
          return u2 > 0 && ((o2 = ((t2.x - s2) * a2 + (t2.y - r2) * h2) / u2) > 1 ? (s2 = e2.x, r2 = e2.y) : o2 > 0 && (s2 += a2 * o2, r2 += h2 * o2)), a2 = t2.x - s2, h2 = t2.y - r2, n2 ? a2 * a2 + h2 * h2 : new x(s2, r2);
        }
        function Dt(t2) {
          return !ei(t2[0]) || "object" != typeof t2[0][0] && void 0 !== t2[0][0];
        }
        function Nt(t2) {
          return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."), Dt(t2);
        }
        function jt(t2, i3, e2) {
          var n2, o2, s2, r2, a2, h2, u2, l2, c2, _2 = [1, 4, 2, 8];
          for (o2 = 0, u2 = t2.length; o2 < u2; o2++)
            t2[o2]._code = At(t2[o2], i3);
          for (r2 = 0; r2 < 4; r2++) {
            for (l2 = _2[r2], n2 = [], o2 = 0, s2 = (u2 = t2.length) - 1; o2 < u2; s2 = o2++)
              a2 = t2[o2], h2 = t2[s2], a2._code & l2 ? h2._code & l2 || ((c2 = It(h2, a2, l2, i3, e2))._code = At(c2, i3), n2.push(c2)) : (h2._code & l2 && ((c2 = It(h2, a2, l2, i3, e2))._code = At(c2, i3), n2.push(c2)), n2.push(a2));
            t2 = n2;
          }
          return t2;
        }
        function Wt(t2, i3) {
          var e2, n2, o2, s2, r2 = "Feature" === t2.type ? t2.geometry : t2, a2 = r2 ? r2.coordinates : null, h2 = [], u2 = i3 && i3.pointToLayer, l2 = i3 && i3.coordsToLatLng || Ht;
          if (!a2 && !r2)
            return null;
          switch (r2.type) {
            case "Point":
              return e2 = l2(a2), u2 ? u2(t2, e2) : new qe(e2);
            case "MultiPoint":
              for (o2 = 0, s2 = a2.length; o2 < s2; o2++)
                e2 = l2(a2[o2]), h2.push(u2 ? u2(t2, e2) : new qe(e2));
              return new Fe(h2);
            case "LineString":
            case "MultiLineString":
              return n2 = Ft(a2, "LineString" === r2.type ? 0 : 1, l2), new Je(n2, i3);
            case "Polygon":
            case "MultiPolygon":
              return n2 = Ft(a2, "Polygon" === r2.type ? 1 : 2, l2), new $e(n2, i3);
            case "GeometryCollection":
              for (o2 = 0, s2 = r2.geometries.length; o2 < s2; o2++) {
                var c2 = Wt({ geometry: r2.geometries[o2], type: "Feature", properties: t2.properties }, i3);
                c2 && h2.push(c2);
              }
              return new Fe(h2);
            default:
              throw new Error("Invalid GeoJSON object.");
          }
        }
        function Ht(t2) {
          return new M(t2[1], t2[0], t2[2]);
        }
        function Ft(t2, i3, e2) {
          for (var n2, o2 = [], s2 = 0, r2 = t2.length; s2 < r2; s2++)
            n2 = i3 ? Ft(t2[s2], i3 - 1, e2) : (e2 || Ht)(t2[s2]), o2.push(n2);
          return o2;
        }
        function Ut(t2, i3) {
          return i3 = "number" == typeof i3 ? i3 : 6, void 0 !== t2.alt ? [a(t2.lng, i3), a(t2.lat, i3), a(t2.alt, i3)] : [a(t2.lng, i3), a(t2.lat, i3)];
        }
        function Vt(t2, i3, e2, n2) {
          for (var o2 = [], s2 = 0, r2 = t2.length; s2 < r2; s2++)
            o2.push(i3 ? Vt(t2[s2], i3 - 1, e2, n2) : Ut(t2[s2], n2));
          return !i3 && e2 && o2.push(o2[0]), o2;
        }
        function Gt(t2, e2) {
          return t2.feature ? i2({}, t2.feature, { geometry: e2 }) : qt(e2);
        }
        function qt(t2) {
          return "Feature" === t2.type || "FeatureCollection" === t2.type ? t2 : { type: "Feature", properties: {}, geometry: t2 };
        }
        function Kt(t2, i3) {
          return new Qe(t2, i3);
        }
        function Yt(t2, i3) {
          return new ln(t2, i3);
        }
        function Xt(t2) {
          return Gi ? new dn(t2) : null;
        }
        function Jt(t2) {
          return qi || Ki ? new gn(t2) : null;
        }
        var $t = Object.freeze;
        Object.freeze = function(t2) {
          return t2;
        };
        var Qt = Object.create || function() {
          function t2() {
          }
          return function(i3) {
            return t2.prototype = i3, new t2();
          };
        }(), ti = 0, ii = /\{ *([\w_\-]+) *\}/g, ei = Array.isArray || function(t2) {
          return "[object Array]" === Object.prototype.toString.call(t2);
        }, ni = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", oi = 0, si = window.requestAnimationFrame || p("RequestAnimationFrame") || m, ri = window.cancelAnimationFrame || p("CancelAnimationFrame") || p("CancelRequestAnimationFrame") || function(t2) {
          window.clearTimeout(t2);
        }, ai = (Object.freeze || Object)({ freeze: $t, extend: i2, create: Qt, bind: e, lastId: ti, stamp: n, throttle: o, wrapNum: s, falseFn: r, formatNum: a, trim: h, splitWords: u, setOptions: l, getParamString: c, template: _, isArray: ei, indexOf: d, emptyImageUrl: ni, requestFn: si, cancelFn: ri, requestAnimFrame: f, cancelAnimFrame: g });
        v.extend = function(t2) {
          var e2 = function() {
            this.initialize && this.initialize.apply(this, arguments), this.callInitHooks();
          }, n2 = e2.__super__ = this.prototype, o2 = Qt(n2);
          o2.constructor = e2, e2.prototype = o2;
          for (var s2 in this)
            this.hasOwnProperty(s2) && "prototype" !== s2 && "__super__" !== s2 && (e2[s2] = this[s2]);
          return t2.statics && (i2(e2, t2.statics), delete t2.statics), t2.includes && (y(t2.includes), i2.apply(null, [o2].concat(t2.includes)), delete t2.includes), o2.options && (t2.options = i2(Qt(o2.options), t2.options)), i2(o2, t2), o2._initHooks = [], o2.callInitHooks = function() {
            if (!this._initHooksCalled) {
              n2.callInitHooks && n2.callInitHooks.call(this), this._initHooksCalled = true;
              for (var t3 = 0, i3 = o2._initHooks.length; t3 < i3; t3++)
                o2._initHooks[t3].call(this);
            }
          }, e2;
        }, v.include = function(t2) {
          return i2(this.prototype, t2), this;
        }, v.mergeOptions = function(t2) {
          return i2(this.prototype.options, t2), this;
        }, v.addInitHook = function(t2) {
          var i3 = Array.prototype.slice.call(arguments, 1), e2 = "function" == typeof t2 ? t2 : function() {
            this[t2].apply(this, i3);
          };
          return this.prototype._initHooks = this.prototype._initHooks || [], this.prototype._initHooks.push(e2), this;
        };
        var hi = { on: function(t2, i3, e2) {
          if ("object" == typeof t2)
            for (var n2 in t2)
              this._on(n2, t2[n2], i3);
          else
            for (var o2 = 0, s2 = (t2 = u(t2)).length; o2 < s2; o2++)
              this._on(t2[o2], i3, e2);
          return this;
        }, off: function(t2, i3, e2) {
          if (t2)
            if ("object" == typeof t2)
              for (var n2 in t2)
                this._off(n2, t2[n2], i3);
            else
              for (var o2 = 0, s2 = (t2 = u(t2)).length; o2 < s2; o2++)
                this._off(t2[o2], i3, e2);
          else
            delete this._events;
          return this;
        }, _on: function(t2, i3, e2) {
          this._events = this._events || {};
          var n2 = this._events[t2];
          n2 || (n2 = [], this._events[t2] = n2), e2 === this && (e2 = void 0);
          for (var o2 = { fn: i3, ctx: e2 }, s2 = n2, r2 = 0, a2 = s2.length; r2 < a2; r2++)
            if (s2[r2].fn === i3 && s2[r2].ctx === e2)
              return;
          s2.push(o2);
        }, _off: function(t2, i3, e2) {
          var n2, o2, s2;
          if (this._events && (n2 = this._events[t2]))
            if (i3) {
              if (e2 === this && (e2 = void 0), n2)
                for (o2 = 0, s2 = n2.length; o2 < s2; o2++) {
                  var a2 = n2[o2];
                  if (a2.ctx === e2 && a2.fn === i3)
                    return a2.fn = r, this._firingCount && (this._events[t2] = n2 = n2.slice()), void n2.splice(o2, 1);
                }
            } else {
              for (o2 = 0, s2 = n2.length; o2 < s2; o2++)
                n2[o2].fn = r;
              delete this._events[t2];
            }
        }, fire: function(t2, e2, n2) {
          if (!this.listens(t2, n2))
            return this;
          var o2 = i2({}, e2, { type: t2, target: this });
          if (this._events) {
            var s2 = this._events[t2];
            if (s2) {
              this._firingCount = this._firingCount + 1 || 1;
              for (var r2 = 0, a2 = s2.length; r2 < a2; r2++) {
                var h2 = s2[r2];
                h2.fn.call(h2.ctx || this, o2);
              }
              this._firingCount--;
            }
          }
          return n2 && this._propagateEvent(o2), this;
        }, listens: function(t2, i3) {
          var e2 = this._events && this._events[t2];
          if (e2 && e2.length)
            return true;
          if (i3) {
            for (var n2 in this._eventParents)
              if (this._eventParents[n2].listens(t2, i3))
                return true;
          }
          return false;
        }, once: function(t2, i3, n2) {
          if ("object" == typeof t2) {
            for (var o2 in t2)
              this.once(o2, t2[o2], i3);
            return this;
          }
          var s2 = e(function() {
            this.off(t2, i3, n2).off(t2, s2, n2);
          }, this);
          return this.on(t2, i3, n2).on(t2, s2, n2);
        }, addEventParent: function(t2) {
          return this._eventParents = this._eventParents || {}, this._eventParents[n(t2)] = t2, this;
        }, removeEventParent: function(t2) {
          return this._eventParents && delete this._eventParents[n(t2)], this;
        }, _propagateEvent: function(t2) {
          for (var e2 in this._eventParents)
            this._eventParents[e2].fire(t2.type, i2({ layer: t2.target }, t2), true);
        } };
        hi.addEventListener = hi.on, hi.removeEventListener = hi.clearAllEventListeners = hi.off, hi.addOneTimeEventListener = hi.once, hi.fireEvent = hi.fire, hi.hasEventListeners = hi.listens;
        var ui = v.extend(hi);
        x.prototype = { clone: function() {
          return new x(this.x, this.y);
        }, add: function(t2) {
          return this.clone()._add(w(t2));
        }, _add: function(t2) {
          return this.x += t2.x, this.y += t2.y, this;
        }, subtract: function(t2) {
          return this.clone()._subtract(w(t2));
        }, _subtract: function(t2) {
          return this.x -= t2.x, this.y -= t2.y, this;
        }, divideBy: function(t2) {
          return this.clone()._divideBy(t2);
        }, _divideBy: function(t2) {
          return this.x /= t2, this.y /= t2, this;
        }, multiplyBy: function(t2) {
          return this.clone()._multiplyBy(t2);
        }, _multiplyBy: function(t2) {
          return this.x *= t2, this.y *= t2, this;
        }, scaleBy: function(t2) {
          return new x(this.x * t2.x, this.y * t2.y);
        }, unscaleBy: function(t2) {
          return new x(this.x / t2.x, this.y / t2.y);
        }, round: function() {
          return this.clone()._round();
        }, _round: function() {
          return this.x = Math.round(this.x), this.y = Math.round(this.y), this;
        }, floor: function() {
          return this.clone()._floor();
        }, _floor: function() {
          return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this;
        }, ceil: function() {
          return this.clone()._ceil();
        }, _ceil: function() {
          return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this;
        }, distanceTo: function(t2) {
          var i3 = (t2 = w(t2)).x - this.x, e2 = t2.y - this.y;
          return Math.sqrt(i3 * i3 + e2 * e2);
        }, equals: function(t2) {
          return (t2 = w(t2)).x === this.x && t2.y === this.y;
        }, contains: function(t2) {
          return t2 = w(t2), Math.abs(t2.x) <= Math.abs(this.x) && Math.abs(t2.y) <= Math.abs(this.y);
        }, toString: function() {
          return "Point(" + a(this.x) + ", " + a(this.y) + ")";
        } }, P.prototype = { extend: function(t2) {
          return t2 = w(t2), this.min || this.max ? (this.min.x = Math.min(t2.x, this.min.x), this.max.x = Math.max(t2.x, this.max.x), this.min.y = Math.min(t2.y, this.min.y), this.max.y = Math.max(t2.y, this.max.y)) : (this.min = t2.clone(), this.max = t2.clone()), this;
        }, getCenter: function(t2) {
          return new x((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t2);
        }, getBottomLeft: function() {
          return new x(this.min.x, this.max.y);
        }, getTopRight: function() {
          return new x(this.max.x, this.min.y);
        }, getTopLeft: function() {
          return this.min;
        }, getBottomRight: function() {
          return this.max;
        }, getSize: function() {
          return this.max.subtract(this.min);
        }, contains: function(t2) {
          var i3, e2;
          return (t2 = "number" == typeof t2[0] || t2 instanceof x ? w(t2) : b(t2)) instanceof P ? (i3 = t2.min, e2 = t2.max) : i3 = e2 = t2, i3.x >= this.min.x && e2.x <= this.max.x && i3.y >= this.min.y && e2.y <= this.max.y;
        }, intersects: function(t2) {
          t2 = b(t2);
          var i3 = this.min, e2 = this.max, n2 = t2.min, o2 = t2.max, s2 = o2.x >= i3.x && n2.x <= e2.x, r2 = o2.y >= i3.y && n2.y <= e2.y;
          return s2 && r2;
        }, overlaps: function(t2) {
          t2 = b(t2);
          var i3 = this.min, e2 = this.max, n2 = t2.min, o2 = t2.max, s2 = o2.x > i3.x && n2.x < e2.x, r2 = o2.y > i3.y && n2.y < e2.y;
          return s2 && r2;
        }, isValid: function() {
          return !(!this.min || !this.max);
        } }, T.prototype = { extend: function(t2) {
          var i3, e2, n2 = this._southWest, o2 = this._northEast;
          if (t2 instanceof M)
            i3 = t2, e2 = t2;
          else {
            if (!(t2 instanceof T))
              return t2 ? this.extend(C(t2) || z(t2)) : this;
            if (i3 = t2._southWest, e2 = t2._northEast, !i3 || !e2)
              return this;
          }
          return n2 || o2 ? (n2.lat = Math.min(i3.lat, n2.lat), n2.lng = Math.min(i3.lng, n2.lng), o2.lat = Math.max(e2.lat, o2.lat), o2.lng = Math.max(e2.lng, o2.lng)) : (this._southWest = new M(i3.lat, i3.lng), this._northEast = new M(e2.lat, e2.lng)), this;
        }, pad: function(t2) {
          var i3 = this._southWest, e2 = this._northEast, n2 = Math.abs(i3.lat - e2.lat) * t2, o2 = Math.abs(i3.lng - e2.lng) * t2;
          return new T(new M(i3.lat - n2, i3.lng - o2), new M(e2.lat + n2, e2.lng + o2));
        }, getCenter: function() {
          return new M((this._southWest.lat + this._northEast.lat) / 2, (this._southWest.lng + this._northEast.lng) / 2);
        }, getSouthWest: function() {
          return this._southWest;
        }, getNorthEast: function() {
          return this._northEast;
        }, getNorthWest: function() {
          return new M(this.getNorth(), this.getWest());
        }, getSouthEast: function() {
          return new M(this.getSouth(), this.getEast());
        }, getWest: function() {
          return this._southWest.lng;
        }, getSouth: function() {
          return this._southWest.lat;
        }, getEast: function() {
          return this._northEast.lng;
        }, getNorth: function() {
          return this._northEast.lat;
        }, contains: function(t2) {
          t2 = "number" == typeof t2[0] || t2 instanceof M || "lat" in t2 ? C(t2) : z(t2);
          var i3, e2, n2 = this._southWest, o2 = this._northEast;
          return t2 instanceof T ? (i3 = t2.getSouthWest(), e2 = t2.getNorthEast()) : i3 = e2 = t2, i3.lat >= n2.lat && e2.lat <= o2.lat && i3.lng >= n2.lng && e2.lng <= o2.lng;
        }, intersects: function(t2) {
          t2 = z(t2);
          var i3 = this._southWest, e2 = this._northEast, n2 = t2.getSouthWest(), o2 = t2.getNorthEast(), s2 = o2.lat >= i3.lat && n2.lat <= e2.lat, r2 = o2.lng >= i3.lng && n2.lng <= e2.lng;
          return s2 && r2;
        }, overlaps: function(t2) {
          t2 = z(t2);
          var i3 = this._southWest, e2 = this._northEast, n2 = t2.getSouthWest(), o2 = t2.getNorthEast(), s2 = o2.lat > i3.lat && n2.lat < e2.lat, r2 = o2.lng > i3.lng && n2.lng < e2.lng;
          return s2 && r2;
        }, toBBoxString: function() {
          return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(",");
        }, equals: function(t2, i3) {
          return !!t2 && (t2 = z(t2), this._southWest.equals(t2.getSouthWest(), i3) && this._northEast.equals(t2.getNorthEast(), i3));
        }, isValid: function() {
          return !(!this._southWest || !this._northEast);
        } }, M.prototype = { equals: function(t2, i3) {
          return !!t2 && (t2 = C(t2), Math.max(Math.abs(this.lat - t2.lat), Math.abs(this.lng - t2.lng)) <= (void 0 === i3 ? 1e-9 : i3));
        }, toString: function(t2) {
          return "LatLng(" + a(this.lat, t2) + ", " + a(this.lng, t2) + ")";
        }, distanceTo: function(t2) {
          return ci.distance(this, C(t2));
        }, wrap: function() {
          return ci.wrapLatLng(this);
        }, toBounds: function(t2) {
          var i3 = 180 * t2 / 40075017, e2 = i3 / Math.cos(Math.PI / 180 * this.lat);
          return z([this.lat - i3, this.lng - e2], [this.lat + i3, this.lng + e2]);
        }, clone: function() {
          return new M(this.lat, this.lng, this.alt);
        } };
        var li = { latLngToPoint: function(t2, i3) {
          var e2 = this.projection.project(t2), n2 = this.scale(i3);
          return this.transformation._transform(e2, n2);
        }, pointToLatLng: function(t2, i3) {
          var e2 = this.scale(i3), n2 = this.transformation.untransform(t2, e2);
          return this.projection.unproject(n2);
        }, project: function(t2) {
          return this.projection.project(t2);
        }, unproject: function(t2) {
          return this.projection.unproject(t2);
        }, scale: function(t2) {
          return 256 * Math.pow(2, t2);
        }, zoom: function(t2) {
          return Math.log(t2 / 256) / Math.LN2;
        }, getProjectedBounds: function(t2) {
          if (this.infinite)
            return null;
          var i3 = this.projection.bounds, e2 = this.scale(t2);
          return new P(this.transformation.transform(i3.min, e2), this.transformation.transform(i3.max, e2));
        }, infinite: false, wrapLatLng: function(t2) {
          var i3 = this.wrapLng ? s(t2.lng, this.wrapLng, true) : t2.lng;
          return new M(this.wrapLat ? s(t2.lat, this.wrapLat, true) : t2.lat, i3, t2.alt);
        }, wrapLatLngBounds: function(t2) {
          var i3 = t2.getCenter(), e2 = this.wrapLatLng(i3), n2 = i3.lat - e2.lat, o2 = i3.lng - e2.lng;
          if (0 === n2 && 0 === o2)
            return t2;
          var s2 = t2.getSouthWest(), r2 = t2.getNorthEast();
          return new T(new M(s2.lat - n2, s2.lng - o2), new M(r2.lat - n2, r2.lng - o2));
        } }, ci = i2({}, li, { wrapLng: [-180, 180], R: 6371e3, distance: function(t2, i3) {
          var e2 = Math.PI / 180, n2 = t2.lat * e2, o2 = i3.lat * e2, s2 = Math.sin(n2) * Math.sin(o2) + Math.cos(n2) * Math.cos(o2) * Math.cos((i3.lng - t2.lng) * e2);
          return this.R * Math.acos(Math.min(s2, 1));
        } }), _i = { R: 6378137, MAX_LATITUDE: 85.0511287798, project: function(t2) {
          var i3 = Math.PI / 180, e2 = this.MAX_LATITUDE, n2 = Math.max(Math.min(e2, t2.lat), -e2), o2 = Math.sin(n2 * i3);
          return new x(this.R * t2.lng * i3, this.R * Math.log((1 + o2) / (1 - o2)) / 2);
        }, unproject: function(t2) {
          var i3 = 180 / Math.PI;
          return new M((2 * Math.atan(Math.exp(t2.y / this.R)) - Math.PI / 2) * i3, t2.x * i3 / this.R);
        }, bounds: function() {
          var t2 = 6378137 * Math.PI;
          return new P([-t2, -t2], [t2, t2]);
        }() };
        Z.prototype = { transform: function(t2, i3) {
          return this._transform(t2.clone(), i3);
        }, _transform: function(t2, i3) {
          return i3 = i3 || 1, t2.x = i3 * (this._a * t2.x + this._b), t2.y = i3 * (this._c * t2.y + this._d), t2;
        }, untransform: function(t2, i3) {
          return i3 = i3 || 1, new x((t2.x / i3 - this._b) / this._a, (t2.y / i3 - this._d) / this._c);
        } };
        var di, pi, mi, fi, gi = i2({}, ci, { code: "EPSG:3857", projection: _i, transformation: function() {
          var t2 = 0.5 / (Math.PI * _i.R);
          return E(t2, 0.5, -t2, 0.5);
        }() }), vi = i2({}, gi, { code: "EPSG:900913" }), yi = document.documentElement.style, xi = "ActiveXObject" in window, wi = xi && !document.addEventListener, Li = "msLaunchUri" in navigator && !("documentMode" in document), Pi = B("webkit"), bi = B("android"), Ti = B("android 2") || B("android 3"), zi = !!window.opera, Mi = B("chrome"), Ci = B("gecko") && !Pi && !zi && !xi, Zi = !Mi && B("safari"), Ei = B("phantom"), Si = "OTransition" in yi, ki = 0 === navigator.platform.indexOf("Win"), Bi = xi && "transition" in yi, Ii = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix() && !Ti, Ai = "MozPerspective" in yi, Oi = !window.L_DISABLE_3D && (Bi || Ii || Ai) && !Si && !Ei, Ri = "undefined" != typeof orientation || B("mobile"), Di = Ri && Pi, Ni = Ri && Ii, ji = !window.PointerEvent && window.MSPointerEvent, Wi = !(!window.PointerEvent && !ji), Hi = !window.L_NO_TOUCH && (Wi || "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch), Fi = Ri && zi, Ui = Ri && Ci, Vi = (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI) > 1, Gi = !!document.createElement("canvas").getContext, qi = !(!document.createElementNS || !S("svg").createSVGRect), Ki = !qi && function() {
          try {
            var t2 = document.createElement("div");
            t2.innerHTML = '<v:shape adj="1"/>';
            var i3 = t2.firstChild;
            return i3.style.behavior = "url(#default#VML)", i3 && "object" == typeof i3.adj;
          } catch (t3) {
            return false;
          }
        }(), Yi = (Object.freeze || Object)({ ie: xi, ielt9: wi, edge: Li, webkit: Pi, android: bi, android23: Ti, opera: zi, chrome: Mi, gecko: Ci, safari: Zi, phantom: Ei, opera12: Si, win: ki, ie3d: Bi, webkit3d: Ii, gecko3d: Ai, any3d: Oi, mobile: Ri, mobileWebkit: Di, mobileWebkit3d: Ni, msPointer: ji, pointer: Wi, touch: Hi, mobileOpera: Fi, mobileGecko: Ui, retina: Vi, canvas: Gi, svg: qi, vml: Ki }), Xi = ji ? "MSPointerDown" : "pointerdown", Ji = ji ? "MSPointerMove" : "pointermove", $i = ji ? "MSPointerUp" : "pointerup", Qi = ji ? "MSPointerCancel" : "pointercancel", te = ["INPUT", "SELECT", "OPTION"], ie = {}, ee = false, ne = 0, oe = ji ? "MSPointerDown" : Wi ? "pointerdown" : "touchstart", se = ji ? "MSPointerUp" : Wi ? "pointerup" : "touchend", re2 = "_leaflet_", ae = "_leaflet_events", he = ki && Mi ? 2 * window.devicePixelRatio : Ci ? window.devicePixelRatio : 1, ue = {}, le = (Object.freeze || Object)({ on: V, off: G, stopPropagation: Y, disableScrollPropagation: X, disableClickPropagation: J, preventDefault: $2, stop: Q, getMousePosition: tt, getWheelDelta: it, fakeStop: et, skipped: nt, isExternalTarget: ot, addListener: V, removeListener: G }), ce = xt(["transform", "WebkitTransform", "OTransform", "MozTransform", "msTransform"]), _e = xt(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]), de = "webkitTransition" === _e || "OTransition" === _e ? _e + "End" : "transitionend";
        if ("onselectstart" in document)
          pi = function() {
            V(window, "selectstart", $2);
          }, mi = function() {
            G(window, "selectstart", $2);
          };
        else {
          var pe = xt(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]);
          pi = function() {
            if (pe) {
              var t2 = document.documentElement.style;
              fi = t2[pe], t2[pe] = "none";
            }
          }, mi = function() {
            pe && (document.documentElement.style[pe] = fi, fi = void 0);
          };
        }
        var me, fe, ge = (Object.freeze || Object)({ TRANSFORM: ce, TRANSITION: _e, TRANSITION_END: de, get: rt, getStyle: at, create: ht, remove: ut, empty: lt, toFront: ct, toBack: _t, hasClass: dt, addClass: pt, removeClass: mt, setClass: ft, getClass: gt, setOpacity: vt, testProp: xt, setTransform: wt, setPosition: Lt, getPosition: Pt, disableTextSelection: pi, enableTextSelection: mi, disableImageDrag: bt, enableImageDrag: Tt, preventOutline: zt, restoreOutline: Mt }), ve = ui.extend({ run: function(t2, i3, e2, n2) {
          this.stop(), this._el = t2, this._inProgress = true, this._duration = e2 || 0.25, this._easeOutPower = 1 / Math.max(n2 || 0.5, 0.2), this._startPos = Pt(t2), this._offset = i3.subtract(this._startPos), this._startTime = +new Date(), this.fire("start"), this._animate();
        }, stop: function() {
          this._inProgress && (this._step(true), this._complete());
        }, _animate: function() {
          this._animId = f(this._animate, this), this._step();
        }, _step: function(t2) {
          var i3 = +new Date() - this._startTime, e2 = 1e3 * this._duration;
          i3 < e2 ? this._runFrame(this._easeOut(i3 / e2), t2) : (this._runFrame(1), this._complete());
        }, _runFrame: function(t2, i3) {
          var e2 = this._startPos.add(this._offset.multiplyBy(t2));
          i3 && e2._round(), Lt(this._el, e2), this.fire("step");
        }, _complete: function() {
          g(this._animId), this._inProgress = false, this.fire("end");
        }, _easeOut: function(t2) {
          return 1 - Math.pow(1 - t2, this._easeOutPower);
        } }), ye = ui.extend({ options: { crs: gi, center: void 0, zoom: void 0, minZoom: void 0, maxZoom: void 0, layers: [], maxBounds: void 0, renderer: void 0, zoomAnimation: true, zoomAnimationThreshold: 4, fadeAnimation: true, markerZoomAnimation: true, transform3DLimit: 8388608, zoomSnap: 1, zoomDelta: 1, trackResize: true }, initialize: function(t2, i3) {
          i3 = l(this, i3), this._initContainer(t2), this._initLayout(), this._onResize = e(this._onResize, this), this._initEvents(), i3.maxBounds && this.setMaxBounds(i3.maxBounds), void 0 !== i3.zoom && (this._zoom = this._limitZoom(i3.zoom)), i3.center && void 0 !== i3.zoom && this.setView(C(i3.center), i3.zoom, { reset: true }), this._handlers = [], this._layers = {}, this._zoomBoundLayers = {}, this._sizeChanged = true, this.callInitHooks(), this._zoomAnimated = _e && Oi && !Fi && this.options.zoomAnimation, this._zoomAnimated && (this._createAnimProxy(), V(this._proxy, de, this._catchTransitionEnd, this)), this._addLayers(this.options.layers);
        }, setView: function(t2, e2, n2) {
          return e2 = void 0 === e2 ? this._zoom : this._limitZoom(e2), t2 = this._limitCenter(C(t2), e2, this.options.maxBounds), n2 = n2 || {}, this._stop(), this._loaded && !n2.reset && true !== n2 && (void 0 !== n2.animate && (n2.zoom = i2({ animate: n2.animate }, n2.zoom), n2.pan = i2({ animate: n2.animate, duration: n2.duration }, n2.pan)), this._zoom !== e2 ? this._tryAnimatedZoom && this._tryAnimatedZoom(t2, e2, n2.zoom) : this._tryAnimatedPan(t2, n2.pan)) ? (clearTimeout(this._sizeTimer), this) : (this._resetView(t2, e2), this);
        }, setZoom: function(t2, i3) {
          return this._loaded ? this.setView(this.getCenter(), t2, { zoom: i3 }) : (this._zoom = t2, this);
        }, zoomIn: function(t2, i3) {
          return t2 = t2 || (Oi ? this.options.zoomDelta : 1), this.setZoom(this._zoom + t2, i3);
        }, zoomOut: function(t2, i3) {
          return t2 = t2 || (Oi ? this.options.zoomDelta : 1), this.setZoom(this._zoom - t2, i3);
        }, setZoomAround: function(t2, i3, e2) {
          var n2 = this.getZoomScale(i3), o2 = this.getSize().divideBy(2), s2 = (t2 instanceof x ? t2 : this.latLngToContainerPoint(t2)).subtract(o2).multiplyBy(1 - 1 / n2), r2 = this.containerPointToLatLng(o2.add(s2));
          return this.setView(r2, i3, { zoom: e2 });
        }, _getBoundsCenterZoom: function(t2, i3) {
          i3 = i3 || {}, t2 = t2.getBounds ? t2.getBounds() : z(t2);
          var e2 = w(i3.paddingTopLeft || i3.padding || [0, 0]), n2 = w(i3.paddingBottomRight || i3.padding || [0, 0]), o2 = this.getBoundsZoom(t2, false, e2.add(n2));
          if ((o2 = "number" == typeof i3.maxZoom ? Math.min(i3.maxZoom, o2) : o2) === 1 / 0)
            return { center: t2.getCenter(), zoom: o2 };
          var s2 = n2.subtract(e2).divideBy(2), r2 = this.project(t2.getSouthWest(), o2), a2 = this.project(t2.getNorthEast(), o2);
          return { center: this.unproject(r2.add(a2).divideBy(2).add(s2), o2), zoom: o2 };
        }, fitBounds: function(t2, i3) {
          if (!(t2 = z(t2)).isValid())
            throw new Error("Bounds are not valid.");
          var e2 = this._getBoundsCenterZoom(t2, i3);
          return this.setView(e2.center, e2.zoom, i3);
        }, fitWorld: function(t2) {
          return this.fitBounds([[-90, -180], [90, 180]], t2);
        }, panTo: function(t2, i3) {
          return this.setView(t2, this._zoom, { pan: i3 });
        }, panBy: function(t2, i3) {
          if (t2 = w(t2).round(), i3 = i3 || {}, !t2.x && !t2.y)
            return this.fire("moveend");
          if (true !== i3.animate && !this.getSize().contains(t2))
            return this._resetView(this.unproject(this.project(this.getCenter()).add(t2)), this.getZoom()), this;
          if (this._panAnim || (this._panAnim = new ve(), this._panAnim.on({ step: this._onPanTransitionStep, end: this._onPanTransitionEnd }, this)), i3.noMoveStart || this.fire("movestart"), false !== i3.animate) {
            pt(this._mapPane, "leaflet-pan-anim");
            var e2 = this._getMapPanePos().subtract(t2).round();
            this._panAnim.run(this._mapPane, e2, i3.duration || 0.25, i3.easeLinearity);
          } else
            this._rawPanBy(t2), this.fire("move").fire("moveend");
          return this;
        }, flyTo: function(t2, i3, e2) {
          function n2(t3) {
            var i4 = (g2 * g2 - m2 * m2 + (t3 ? -1 : 1) * x2 * x2 * v2 * v2) / (2 * (t3 ? g2 : m2) * x2 * v2), e3 = Math.sqrt(i4 * i4 + 1) - i4;
            return e3 < 1e-9 ? -18 : Math.log(e3);
          }
          function o2(t3) {
            return (Math.exp(t3) - Math.exp(-t3)) / 2;
          }
          function s2(t3) {
            return (Math.exp(t3) + Math.exp(-t3)) / 2;
          }
          function r2(t3) {
            return o2(t3) / s2(t3);
          }
          function a2(t3) {
            return m2 * (s2(w2) / s2(w2 + y2 * t3));
          }
          function h2(t3) {
            return m2 * (s2(w2) * r2(w2 + y2 * t3) - o2(w2)) / x2;
          }
          function u2(t3) {
            return 1 - Math.pow(1 - t3, 1.5);
          }
          function l2() {
            var e3 = (Date.now() - L2) / b2, n3 = u2(e3) * P2;
            e3 <= 1 ? (this._flyToFrame = f(l2, this), this._move(this.unproject(c2.add(_2.subtract(c2).multiplyBy(h2(n3) / v2)), p2), this.getScaleZoom(m2 / a2(n3), p2), { flyTo: true })) : this._move(t2, i3)._moveEnd(true);
          }
          if (false === (e2 = e2 || {}).animate || !Oi)
            return this.setView(t2, i3, e2);
          this._stop();
          var c2 = this.project(this.getCenter()), _2 = this.project(t2), d2 = this.getSize(), p2 = this._zoom;
          t2 = C(t2), i3 = void 0 === i3 ? p2 : i3;
          var m2 = Math.max(d2.x, d2.y), g2 = m2 * this.getZoomScale(p2, i3), v2 = _2.distanceTo(c2) || 1, y2 = 1.42, x2 = y2 * y2, w2 = n2(0), L2 = Date.now(), P2 = (n2(1) - w2) / y2, b2 = e2.duration ? 1e3 * e2.duration : 1e3 * P2 * 0.8;
          return this._moveStart(true), l2.call(this), this;
        }, flyToBounds: function(t2, i3) {
          var e2 = this._getBoundsCenterZoom(t2, i3);
          return this.flyTo(e2.center, e2.zoom, i3);
        }, setMaxBounds: function(t2) {
          return (t2 = z(t2)).isValid() ? (this.options.maxBounds && this.off("moveend", this._panInsideMaxBounds), this.options.maxBounds = t2, this._loaded && this._panInsideMaxBounds(), this.on("moveend", this._panInsideMaxBounds)) : (this.options.maxBounds = null, this.off("moveend", this._panInsideMaxBounds));
        }, setMinZoom: function(t2) {
          return this.options.minZoom = t2, this._loaded && this.getZoom() < this.options.minZoom ? this.setZoom(t2) : this;
        }, setMaxZoom: function(t2) {
          return this.options.maxZoom = t2, this._loaded && this.getZoom() > this.options.maxZoom ? this.setZoom(t2) : this;
        }, panInsideBounds: function(t2, i3) {
          this._enforcingBounds = true;
          var e2 = this.getCenter(), n2 = this._limitCenter(e2, this._zoom, z(t2));
          return e2.equals(n2) || this.panTo(n2, i3), this._enforcingBounds = false, this;
        }, invalidateSize: function(t2) {
          if (!this._loaded)
            return this;
          t2 = i2({ animate: false, pan: true }, true === t2 ? { animate: true } : t2);
          var n2 = this.getSize();
          this._sizeChanged = true, this._lastCenter = null;
          var o2 = this.getSize(), s2 = n2.divideBy(2).round(), r2 = o2.divideBy(2).round(), a2 = s2.subtract(r2);
          return a2.x || a2.y ? (t2.animate && t2.pan ? this.panBy(a2) : (t2.pan && this._rawPanBy(a2), this.fire("move"), t2.debounceMoveend ? (clearTimeout(this._sizeTimer), this._sizeTimer = setTimeout(e(this.fire, this, "moveend"), 200)) : this.fire("moveend")), this.fire("resize", { oldSize: n2, newSize: o2 })) : this;
        }, stop: function() {
          return this.setZoom(this._limitZoom(this._zoom)), this.options.zoomSnap || this.fire("viewreset"), this._stop();
        }, locate: function(t2) {
          if (t2 = this._locateOptions = i2({ timeout: 1e4, watch: false }, t2), !("geolocation" in navigator))
            return this._handleGeolocationError({ code: 0, message: "Geolocation not supported." }), this;
          var n2 = e(this._handleGeolocationResponse, this), o2 = e(this._handleGeolocationError, this);
          return t2.watch ? this._locationWatchId = navigator.geolocation.watchPosition(n2, o2, t2) : navigator.geolocation.getCurrentPosition(n2, o2, t2), this;
        }, stopLocate: function() {
          return navigator.geolocation && navigator.geolocation.clearWatch && navigator.geolocation.clearWatch(this._locationWatchId), this._locateOptions && (this._locateOptions.setView = false), this;
        }, _handleGeolocationError: function(t2) {
          var i3 = t2.code, e2 = t2.message || (1 === i3 ? "permission denied" : 2 === i3 ? "position unavailable" : "timeout");
          this._locateOptions.setView && !this._loaded && this.fitWorld(), this.fire("locationerror", { code: i3, message: "Geolocation error: " + e2 + "." });
        }, _handleGeolocationResponse: function(t2) {
          var i3 = new M(t2.coords.latitude, t2.coords.longitude), e2 = i3.toBounds(t2.coords.accuracy), n2 = this._locateOptions;
          if (n2.setView) {
            var o2 = this.getBoundsZoom(e2);
            this.setView(i3, n2.maxZoom ? Math.min(o2, n2.maxZoom) : o2);
          }
          var s2 = { latlng: i3, bounds: e2, timestamp: t2.timestamp };
          for (var r2 in t2.coords)
            "number" == typeof t2.coords[r2] && (s2[r2] = t2.coords[r2]);
          this.fire("locationfound", s2);
        }, addHandler: function(t2, i3) {
          if (!i3)
            return this;
          var e2 = this[t2] = new i3(this);
          return this._handlers.push(e2), this.options[t2] && e2.enable(), this;
        }, remove: function() {
          if (this._initEvents(true), this._containerId !== this._container._leaflet_id)
            throw new Error("Map container is being reused by another instance");
          try {
            delete this._container._leaflet_id, delete this._containerId;
          } catch (t3) {
            this._container._leaflet_id = void 0, this._containerId = void 0;
          }
          ut(this._mapPane), this._clearControlPos && this._clearControlPos(), this._clearHandlers(), this._loaded && this.fire("unload");
          var t2;
          for (t2 in this._layers)
            this._layers[t2].remove();
          for (t2 in this._panes)
            ut(this._panes[t2]);
          return this._layers = [], this._panes = [], delete this._mapPane, delete this._renderer, this;
        }, createPane: function(t2, i3) {
          var e2 = ht("div", "leaflet-pane" + (t2 ? " leaflet-" + t2.replace("Pane", "") + "-pane" : ""), i3 || this._mapPane);
          return t2 && (this._panes[t2] = e2), e2;
        }, getCenter: function() {
          return this._checkIfLoaded(), this._lastCenter && !this._moved() ? this._lastCenter : this.layerPointToLatLng(this._getCenterLayerPoint());
        }, getZoom: function() {
          return this._zoom;
        }, getBounds: function() {
          var t2 = this.getPixelBounds();
          return new T(this.unproject(t2.getBottomLeft()), this.unproject(t2.getTopRight()));
        }, getMinZoom: function() {
          return void 0 === this.options.minZoom ? this._layersMinZoom || 0 : this.options.minZoom;
        }, getMaxZoom: function() {
          return void 0 === this.options.maxZoom ? void 0 === this._layersMaxZoom ? 1 / 0 : this._layersMaxZoom : this.options.maxZoom;
        }, getBoundsZoom: function(t2, i3, e2) {
          t2 = z(t2), e2 = w(e2 || [0, 0]);
          var n2 = this.getZoom() || 0, o2 = this.getMinZoom(), s2 = this.getMaxZoom(), r2 = t2.getNorthWest(), a2 = t2.getSouthEast(), h2 = this.getSize().subtract(e2), u2 = b(this.project(a2, n2), this.project(r2, n2)).getSize(), l2 = Oi ? this.options.zoomSnap : 1, c2 = h2.x / u2.x, _2 = h2.y / u2.y, d2 = i3 ? Math.max(c2, _2) : Math.min(c2, _2);
          return n2 = this.getScaleZoom(d2, n2), l2 && (n2 = Math.round(n2 / (l2 / 100)) * (l2 / 100), n2 = i3 ? Math.ceil(n2 / l2) * l2 : Math.floor(n2 / l2) * l2), Math.max(o2, Math.min(s2, n2));
        }, getSize: function() {
          return this._size && !this._sizeChanged || (this._size = new x(this._container.clientWidth || 0, this._container.clientHeight || 0), this._sizeChanged = false), this._size.clone();
        }, getPixelBounds: function(t2, i3) {
          var e2 = this._getTopLeftPoint(t2, i3);
          return new P(e2, e2.add(this.getSize()));
        }, getPixelOrigin: function() {
          return this._checkIfLoaded(), this._pixelOrigin;
        }, getPixelWorldBounds: function(t2) {
          return this.options.crs.getProjectedBounds(void 0 === t2 ? this.getZoom() : t2);
        }, getPane: function(t2) {
          return "string" == typeof t2 ? this._panes[t2] : t2;
        }, getPanes: function() {
          return this._panes;
        }, getContainer: function() {
          return this._container;
        }, getZoomScale: function(t2, i3) {
          var e2 = this.options.crs;
          return i3 = void 0 === i3 ? this._zoom : i3, e2.scale(t2) / e2.scale(i3);
        }, getScaleZoom: function(t2, i3) {
          var e2 = this.options.crs;
          i3 = void 0 === i3 ? this._zoom : i3;
          var n2 = e2.zoom(t2 * e2.scale(i3));
          return isNaN(n2) ? 1 / 0 : n2;
        }, project: function(t2, i3) {
          return i3 = void 0 === i3 ? this._zoom : i3, this.options.crs.latLngToPoint(C(t2), i3);
        }, unproject: function(t2, i3) {
          return i3 = void 0 === i3 ? this._zoom : i3, this.options.crs.pointToLatLng(w(t2), i3);
        }, layerPointToLatLng: function(t2) {
          var i3 = w(t2).add(this.getPixelOrigin());
          return this.unproject(i3);
        }, latLngToLayerPoint: function(t2) {
          return this.project(C(t2))._round()._subtract(this.getPixelOrigin());
        }, wrapLatLng: function(t2) {
          return this.options.crs.wrapLatLng(C(t2));
        }, wrapLatLngBounds: function(t2) {
          return this.options.crs.wrapLatLngBounds(z(t2));
        }, distance: function(t2, i3) {
          return this.options.crs.distance(C(t2), C(i3));
        }, containerPointToLayerPoint: function(t2) {
          return w(t2).subtract(this._getMapPanePos());
        }, layerPointToContainerPoint: function(t2) {
          return w(t2).add(this._getMapPanePos());
        }, containerPointToLatLng: function(t2) {
          var i3 = this.containerPointToLayerPoint(w(t2));
          return this.layerPointToLatLng(i3);
        }, latLngToContainerPoint: function(t2) {
          return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t2)));
        }, mouseEventToContainerPoint: function(t2) {
          return tt(t2, this._container);
        }, mouseEventToLayerPoint: function(t2) {
          return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t2));
        }, mouseEventToLatLng: function(t2) {
          return this.layerPointToLatLng(this.mouseEventToLayerPoint(t2));
        }, _initContainer: function(t2) {
          var i3 = this._container = rt(t2);
          if (!i3)
            throw new Error("Map container not found.");
          if (i3._leaflet_id)
            throw new Error("Map container is already initialized.");
          V(i3, "scroll", this._onScroll, this), this._containerId = n(i3);
        }, _initLayout: function() {
          var t2 = this._container;
          this._fadeAnimated = this.options.fadeAnimation && Oi, pt(t2, "leaflet-container" + (Hi ? " leaflet-touch" : "") + (Vi ? " leaflet-retina" : "") + (wi ? " leaflet-oldie" : "") + (Zi ? " leaflet-safari" : "") + (this._fadeAnimated ? " leaflet-fade-anim" : ""));
          var i3 = at(t2, "position");
          "absolute" !== i3 && "relative" !== i3 && "fixed" !== i3 && (t2.style.position = "relative"), this._initPanes(), this._initControlPos && this._initControlPos();
        }, _initPanes: function() {
          var t2 = this._panes = {};
          this._paneRenderers = {}, this._mapPane = this.createPane("mapPane", this._container), Lt(this._mapPane, new x(0, 0)), this.createPane("tilePane"), this.createPane("shadowPane"), this.createPane("overlayPane"), this.createPane("markerPane"), this.createPane("tooltipPane"), this.createPane("popupPane"), this.options.markerZoomAnimation || (pt(t2.markerPane, "leaflet-zoom-hide"), pt(t2.shadowPane, "leaflet-zoom-hide"));
        }, _resetView: function(t2, i3) {
          Lt(this._mapPane, new x(0, 0));
          var e2 = !this._loaded;
          this._loaded = true, i3 = this._limitZoom(i3), this.fire("viewprereset");
          var n2 = this._zoom !== i3;
          this._moveStart(n2)._move(t2, i3)._moveEnd(n2), this.fire("viewreset"), e2 && this.fire("load");
        }, _moveStart: function(t2) {
          return t2 && this.fire("zoomstart"), this.fire("movestart");
        }, _move: function(t2, i3, e2) {
          void 0 === i3 && (i3 = this._zoom);
          var n2 = this._zoom !== i3;
          return this._zoom = i3, this._lastCenter = t2, this._pixelOrigin = this._getNewPixelOrigin(t2), (n2 || e2 && e2.pinch) && this.fire("zoom", e2), this.fire("move", e2);
        }, _moveEnd: function(t2) {
          return t2 && this.fire("zoomend"), this.fire("moveend");
        }, _stop: function() {
          return g(this._flyToFrame), this._panAnim && this._panAnim.stop(), this;
        }, _rawPanBy: function(t2) {
          Lt(this._mapPane, this._getMapPanePos().subtract(t2));
        }, _getZoomSpan: function() {
          return this.getMaxZoom() - this.getMinZoom();
        }, _panInsideMaxBounds: function() {
          this._enforcingBounds || this.panInsideBounds(this.options.maxBounds);
        }, _checkIfLoaded: function() {
          if (!this._loaded)
            throw new Error("Set map center and zoom first.");
        }, _initEvents: function(t2) {
          this._targets = {}, this._targets[n(this._container)] = this;
          var i3 = t2 ? G : V;
          i3(this._container, "click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress", this._handleDOMEvent, this), this.options.trackResize && i3(window, "resize", this._onResize, this), Oi && this.options.transform3DLimit && (t2 ? this.off : this.on).call(this, "moveend", this._onMoveEnd);
        }, _onResize: function() {
          g(this._resizeRequest), this._resizeRequest = f(function() {
            this.invalidateSize({ debounceMoveend: true });
          }, this);
        }, _onScroll: function() {
          this._container.scrollTop = 0, this._container.scrollLeft = 0;
        }, _onMoveEnd: function() {
          var t2 = this._getMapPanePos();
          Math.max(Math.abs(t2.x), Math.abs(t2.y)) >= this.options.transform3DLimit && this._resetView(this.getCenter(), this.getZoom());
        }, _findEventTargets: function(t2, i3) {
          for (var e2, o2 = [], s2 = "mouseout" === i3 || "mouseover" === i3, r2 = t2.target || t2.srcElement, a2 = false; r2; ) {
            if ((e2 = this._targets[n(r2)]) && ("click" === i3 || "preclick" === i3) && !t2._simulated && this._draggableMoved(e2)) {
              a2 = true;
              break;
            }
            if (e2 && e2.listens(i3, true)) {
              if (s2 && !ot(r2, t2))
                break;
              if (o2.push(e2), s2)
                break;
            }
            if (r2 === this._container)
              break;
            r2 = r2.parentNode;
          }
          return o2.length || a2 || s2 || !ot(r2, t2) || (o2 = [this]), o2;
        }, _handleDOMEvent: function(t2) {
          if (this._loaded && !nt(t2)) {
            var i3 = t2.type;
            "mousedown" !== i3 && "keypress" !== i3 || zt(t2.target || t2.srcElement), this._fireDOMEvent(t2, i3);
          }
        }, _mouseEvents: ["click", "dblclick", "mouseover", "mouseout", "contextmenu"], _fireDOMEvent: function(t2, e2, n2) {
          if ("click" === t2.type) {
            var o2 = i2({}, t2);
            o2.type = "preclick", this._fireDOMEvent(o2, o2.type, n2);
          }
          if (!t2._stopped && (n2 = (n2 || []).concat(this._findEventTargets(t2, e2))).length) {
            var s2 = n2[0];
            "contextmenu" === e2 && s2.listens(e2, true) && $2(t2);
            var r2 = { originalEvent: t2 };
            if ("keypress" !== t2.type) {
              var a2 = s2.options && "icon" in s2.options;
              r2.containerPoint = a2 ? this.latLngToContainerPoint(s2.getLatLng()) : this.mouseEventToContainerPoint(t2), r2.layerPoint = this.containerPointToLayerPoint(r2.containerPoint), r2.latlng = a2 ? s2.getLatLng() : this.layerPointToLatLng(r2.layerPoint);
            }
            for (var h2 = 0; h2 < n2.length; h2++)
              if (n2[h2].fire(e2, r2, true), r2.originalEvent._stopped || false === n2[h2].options.bubblingMouseEvents && -1 !== d(this._mouseEvents, e2))
                return;
          }
        }, _draggableMoved: function(t2) {
          return (t2 = t2.dragging && t2.dragging.enabled() ? t2 : this).dragging && t2.dragging.moved() || this.boxZoom && this.boxZoom.moved();
        }, _clearHandlers: function() {
          for (var t2 = 0, i3 = this._handlers.length; t2 < i3; t2++)
            this._handlers[t2].disable();
        }, whenReady: function(t2, i3) {
          return this._loaded ? t2.call(i3 || this, { target: this }) : this.on("load", t2, i3), this;
        }, _getMapPanePos: function() {
          return Pt(this._mapPane) || new x(0, 0);
        }, _moved: function() {
          var t2 = this._getMapPanePos();
          return t2 && !t2.equals([0, 0]);
        }, _getTopLeftPoint: function(t2, i3) {
          return (t2 && void 0 !== i3 ? this._getNewPixelOrigin(t2, i3) : this.getPixelOrigin()).subtract(this._getMapPanePos());
        }, _getNewPixelOrigin: function(t2, i3) {
          var e2 = this.getSize()._divideBy(2);
          return this.project(t2, i3)._subtract(e2)._add(this._getMapPanePos())._round();
        }, _latLngToNewLayerPoint: function(t2, i3, e2) {
          var n2 = this._getNewPixelOrigin(e2, i3);
          return this.project(t2, i3)._subtract(n2);
        }, _latLngBoundsToNewLayerBounds: function(t2, i3, e2) {
          var n2 = this._getNewPixelOrigin(e2, i3);
          return b([this.project(t2.getSouthWest(), i3)._subtract(n2), this.project(t2.getNorthWest(), i3)._subtract(n2), this.project(t2.getSouthEast(), i3)._subtract(n2), this.project(t2.getNorthEast(), i3)._subtract(n2)]);
        }, _getCenterLayerPoint: function() {
          return this.containerPointToLayerPoint(this.getSize()._divideBy(2));
        }, _getCenterOffset: function(t2) {
          return this.latLngToLayerPoint(t2).subtract(this._getCenterLayerPoint());
        }, _limitCenter: function(t2, i3, e2) {
          if (!e2)
            return t2;
          var n2 = this.project(t2, i3), o2 = this.getSize().divideBy(2), s2 = new P(n2.subtract(o2), n2.add(o2)), r2 = this._getBoundsOffset(s2, e2, i3);
          return r2.round().equals([0, 0]) ? t2 : this.unproject(n2.add(r2), i3);
        }, _limitOffset: function(t2, i3) {
          if (!i3)
            return t2;
          var e2 = this.getPixelBounds(), n2 = new P(e2.min.add(t2), e2.max.add(t2));
          return t2.add(this._getBoundsOffset(n2, i3));
        }, _getBoundsOffset: function(t2, i3, e2) {
          var n2 = b(this.project(i3.getNorthEast(), e2), this.project(i3.getSouthWest(), e2)), o2 = n2.min.subtract(t2.min), s2 = n2.max.subtract(t2.max);
          return new x(this._rebound(o2.x, -s2.x), this._rebound(o2.y, -s2.y));
        }, _rebound: function(t2, i3) {
          return t2 + i3 > 0 ? Math.round(t2 - i3) / 2 : Math.max(0, Math.ceil(t2)) - Math.max(0, Math.floor(i3));
        }, _limitZoom: function(t2) {
          var i3 = this.getMinZoom(), e2 = this.getMaxZoom(), n2 = Oi ? this.options.zoomSnap : 1;
          return n2 && (t2 = Math.round(t2 / n2) * n2), Math.max(i3, Math.min(e2, t2));
        }, _onPanTransitionStep: function() {
          this.fire("move");
        }, _onPanTransitionEnd: function() {
          mt(this._mapPane, "leaflet-pan-anim"), this.fire("moveend");
        }, _tryAnimatedPan: function(t2, i3) {
          var e2 = this._getCenterOffset(t2)._floor();
          return !(true !== (i3 && i3.animate) && !this.getSize().contains(e2)) && (this.panBy(e2, i3), true);
        }, _createAnimProxy: function() {
          var t2 = this._proxy = ht("div", "leaflet-proxy leaflet-zoom-animated");
          this._panes.mapPane.appendChild(t2), this.on("zoomanim", function(t3) {
            var i3 = ce, e2 = this._proxy.style[i3];
            wt(this._proxy, this.project(t3.center, t3.zoom), this.getZoomScale(t3.zoom, 1)), e2 === this._proxy.style[i3] && this._animatingZoom && this._onZoomTransitionEnd();
          }, this), this.on("load moveend", function() {
            var t3 = this.getCenter(), i3 = this.getZoom();
            wt(this._proxy, this.project(t3, i3), this.getZoomScale(i3, 1));
          }, this), this._on("unload", this._destroyAnimProxy, this);
        }, _destroyAnimProxy: function() {
          ut(this._proxy), delete this._proxy;
        }, _catchTransitionEnd: function(t2) {
          this._animatingZoom && t2.propertyName.indexOf("transform") >= 0 && this._onZoomTransitionEnd();
        }, _nothingToAnimate: function() {
          return !this._container.getElementsByClassName("leaflet-zoom-animated").length;
        }, _tryAnimatedZoom: function(t2, i3, e2) {
          if (this._animatingZoom)
            return true;
          if (e2 = e2 || {}, !this._zoomAnimated || false === e2.animate || this._nothingToAnimate() || Math.abs(i3 - this._zoom) > this.options.zoomAnimationThreshold)
            return false;
          var n2 = this.getZoomScale(i3), o2 = this._getCenterOffset(t2)._divideBy(1 - 1 / n2);
          return !(true !== e2.animate && !this.getSize().contains(o2)) && (f(function() {
            this._moveStart(true)._animateZoom(t2, i3, true);
          }, this), true);
        }, _animateZoom: function(t2, i3, n2, o2) {
          n2 && (this._animatingZoom = true, this._animateToCenter = t2, this._animateToZoom = i3, pt(this._mapPane, "leaflet-zoom-anim")), this.fire("zoomanim", { center: t2, zoom: i3, noUpdate: o2 }), setTimeout(e(this._onZoomTransitionEnd, this), 250);
        }, _onZoomTransitionEnd: function() {
          this._animatingZoom && (mt(this._mapPane, "leaflet-zoom-anim"), this._animatingZoom = false, this._move(this._animateToCenter, this._animateToZoom), f(function() {
            this._moveEnd(true);
          }, this));
        } }), xe = v.extend({ options: { position: "topright" }, initialize: function(t2) {
          l(this, t2);
        }, getPosition: function() {
          return this.options.position;
        }, setPosition: function(t2) {
          var i3 = this._map;
          return i3 && i3.removeControl(this), this.options.position = t2, i3 && i3.addControl(this), this;
        }, getContainer: function() {
          return this._container;
        }, addTo: function(t2) {
          this.remove(), this._map = t2;
          var i3 = this._container = this.onAdd(t2), e2 = this.getPosition(), n2 = t2._controlCorners[e2];
          return pt(i3, "leaflet-control"), -1 !== e2.indexOf("bottom") ? n2.insertBefore(i3, n2.firstChild) : n2.appendChild(i3), this;
        }, remove: function() {
          return this._map ? (ut(this._container), this.onRemove && this.onRemove(this._map), this._map = null, this) : this;
        }, _refocusOnMap: function(t2) {
          this._map && t2 && t2.screenX > 0 && t2.screenY > 0 && this._map.getContainer().focus();
        } }), we = function(t2) {
          return new xe(t2);
        };
        ye.include({ addControl: function(t2) {
          return t2.addTo(this), this;
        }, removeControl: function(t2) {
          return t2.remove(), this;
        }, _initControlPos: function() {
          function t2(t3, o2) {
            var s2 = e2 + t3 + " " + e2 + o2;
            i3[t3 + o2] = ht("div", s2, n2);
          }
          var i3 = this._controlCorners = {}, e2 = "leaflet-", n2 = this._controlContainer = ht("div", e2 + "control-container", this._container);
          t2("top", "left"), t2("top", "right"), t2("bottom", "left"), t2("bottom", "right");
        }, _clearControlPos: function() {
          for (var t2 in this._controlCorners)
            ut(this._controlCorners[t2]);
          ut(this._controlContainer), delete this._controlCorners, delete this._controlContainer;
        } });
        var Le = xe.extend({ options: { collapsed: true, position: "topright", autoZIndex: true, hideSingleBase: false, sortLayers: false, sortFunction: function(t2, i3, e2, n2) {
          return e2 < n2 ? -1 : n2 < e2 ? 1 : 0;
        } }, initialize: function(t2, i3, e2) {
          l(this, e2), this._layerControlInputs = [], this._layers = [], this._lastZIndex = 0, this._handlingClick = false;
          for (var n2 in t2)
            this._addLayer(t2[n2], n2);
          for (n2 in i3)
            this._addLayer(i3[n2], n2, true);
        }, onAdd: function(t2) {
          this._initLayout(), this._update(), this._map = t2, t2.on("zoomend", this._checkDisabledLayers, this);
          for (var i3 = 0; i3 < this._layers.length; i3++)
            this._layers[i3].layer.on("add remove", this._onLayerChange, this);
          return this._container;
        }, addTo: function(t2) {
          return xe.prototype.addTo.call(this, t2), this._expandIfNotCollapsed();
        }, onRemove: function() {
          this._map.off("zoomend", this._checkDisabledLayers, this);
          for (var t2 = 0; t2 < this._layers.length; t2++)
            this._layers[t2].layer.off("add remove", this._onLayerChange, this);
        }, addBaseLayer: function(t2, i3) {
          return this._addLayer(t2, i3), this._map ? this._update() : this;
        }, addOverlay: function(t2, i3) {
          return this._addLayer(t2, i3, true), this._map ? this._update() : this;
        }, removeLayer: function(t2) {
          t2.off("add remove", this._onLayerChange, this);
          var i3 = this._getLayer(n(t2));
          return i3 && this._layers.splice(this._layers.indexOf(i3), 1), this._map ? this._update() : this;
        }, expand: function() {
          pt(this._container, "leaflet-control-layers-expanded"), this._form.style.height = null;
          var t2 = this._map.getSize().y - (this._container.offsetTop + 50);
          return t2 < this._form.clientHeight ? (pt(this._form, "leaflet-control-layers-scrollbar"), this._form.style.height = t2 + "px") : mt(this._form, "leaflet-control-layers-scrollbar"), this._checkDisabledLayers(), this;
        }, collapse: function() {
          return mt(this._container, "leaflet-control-layers-expanded"), this;
        }, _initLayout: function() {
          var t2 = "leaflet-control-layers", i3 = this._container = ht("div", t2), e2 = this.options.collapsed;
          i3.setAttribute("aria-haspopup", true), J(i3), X(i3);
          var n2 = this._form = ht("form", t2 + "-list");
          e2 && (this._map.on("click", this.collapse, this), bi || V(i3, { mouseenter: this.expand, mouseleave: this.collapse }, this));
          var o2 = this._layersLink = ht("a", t2 + "-toggle", i3);
          o2.href = "#", o2.title = "Layers", Hi ? (V(o2, "click", Q), V(o2, "click", this.expand, this)) : V(o2, "focus", this.expand, this), e2 || this.expand(), this._baseLayersList = ht("div", t2 + "-base", n2), this._separator = ht("div", t2 + "-separator", n2), this._overlaysList = ht("div", t2 + "-overlays", n2), i3.appendChild(n2);
        }, _getLayer: function(t2) {
          for (var i3 = 0; i3 < this._layers.length; i3++)
            if (this._layers[i3] && n(this._layers[i3].layer) === t2)
              return this._layers[i3];
        }, _addLayer: function(t2, i3, n2) {
          this._map && t2.on("add remove", this._onLayerChange, this), this._layers.push({ layer: t2, name: i3, overlay: n2 }), this.options.sortLayers && this._layers.sort(e(function(t3, i4) {
            return this.options.sortFunction(t3.layer, i4.layer, t3.name, i4.name);
          }, this)), this.options.autoZIndex && t2.setZIndex && (this._lastZIndex++, t2.setZIndex(this._lastZIndex)), this._expandIfNotCollapsed();
        }, _update: function() {
          if (!this._container)
            return this;
          lt(this._baseLayersList), lt(this._overlaysList), this._layerControlInputs = [];
          var t2, i3, e2, n2, o2 = 0;
          for (e2 = 0; e2 < this._layers.length; e2++)
            n2 = this._layers[e2], this._addItem(n2), i3 = i3 || n2.overlay, t2 = t2 || !n2.overlay, o2 += n2.overlay ? 0 : 1;
          return this.options.hideSingleBase && (t2 = t2 && o2 > 1, this._baseLayersList.style.display = t2 ? "" : "none"), this._separator.style.display = i3 && t2 ? "" : "none", this;
        }, _onLayerChange: function(t2) {
          this._handlingClick || this._update();
          var i3 = this._getLayer(n(t2.target)), e2 = i3.overlay ? "add" === t2.type ? "overlayadd" : "overlayremove" : "add" === t2.type ? "baselayerchange" : null;
          e2 && this._map.fire(e2, i3);
        }, _createRadioElement: function(t2, i3) {
          var e2 = '<input type="radio" class="leaflet-control-layers-selector" name="' + t2 + '"' + (i3 ? ' checked="checked"' : "") + "/>", n2 = document.createElement("div");
          return n2.innerHTML = e2, n2.firstChild;
        }, _addItem: function(t2) {
          var i3, e2 = document.createElement("label"), o2 = this._map.hasLayer(t2.layer);
          t2.overlay ? ((i3 = document.createElement("input")).type = "checkbox", i3.className = "leaflet-control-layers-selector", i3.defaultChecked = o2) : i3 = this._createRadioElement("leaflet-base-layers", o2), this._layerControlInputs.push(i3), i3.layerId = n(t2.layer), V(i3, "click", this._onInputClick, this);
          var s2 = document.createElement("span");
          s2.innerHTML = " " + t2.name;
          var r2 = document.createElement("div");
          return e2.appendChild(r2), r2.appendChild(i3), r2.appendChild(s2), (t2.overlay ? this._overlaysList : this._baseLayersList).appendChild(e2), this._checkDisabledLayers(), e2;
        }, _onInputClick: function() {
          var t2, i3, e2 = this._layerControlInputs, n2 = [], o2 = [];
          this._handlingClick = true;
          for (var s2 = e2.length - 1; s2 >= 0; s2--)
            t2 = e2[s2], i3 = this._getLayer(t2.layerId).layer, t2.checked ? n2.push(i3) : t2.checked || o2.push(i3);
          for (s2 = 0; s2 < o2.length; s2++)
            this._map.hasLayer(o2[s2]) && this._map.removeLayer(o2[s2]);
          for (s2 = 0; s2 < n2.length; s2++)
            this._map.hasLayer(n2[s2]) || this._map.addLayer(n2[s2]);
          this._handlingClick = false, this._refocusOnMap();
        }, _checkDisabledLayers: function() {
          for (var t2, i3, e2 = this._layerControlInputs, n2 = this._map.getZoom(), o2 = e2.length - 1; o2 >= 0; o2--)
            t2 = e2[o2], i3 = this._getLayer(t2.layerId).layer, t2.disabled = void 0 !== i3.options.minZoom && n2 < i3.options.minZoom || void 0 !== i3.options.maxZoom && n2 > i3.options.maxZoom;
        }, _expandIfNotCollapsed: function() {
          return this._map && !this.options.collapsed && this.expand(), this;
        }, _expand: function() {
          return this.expand();
        }, _collapse: function() {
          return this.collapse();
        } }), Pe = xe.extend({ options: { position: "topleft", zoomInText: "+", zoomInTitle: "Zoom in", zoomOutText: "&#x2212;", zoomOutTitle: "Zoom out" }, onAdd: function(t2) {
          var i3 = "leaflet-control-zoom", e2 = ht("div", i3 + " leaflet-bar"), n2 = this.options;
          return this._zoomInButton = this._createButton(n2.zoomInText, n2.zoomInTitle, i3 + "-in", e2, this._zoomIn), this._zoomOutButton = this._createButton(n2.zoomOutText, n2.zoomOutTitle, i3 + "-out", e2, this._zoomOut), this._updateDisabled(), t2.on("zoomend zoomlevelschange", this._updateDisabled, this), e2;
        }, onRemove: function(t2) {
          t2.off("zoomend zoomlevelschange", this._updateDisabled, this);
        }, disable: function() {
          return this._disabled = true, this._updateDisabled(), this;
        }, enable: function() {
          return this._disabled = false, this._updateDisabled(), this;
        }, _zoomIn: function(t2) {
          !this._disabled && this._map._zoom < this._map.getMaxZoom() && this._map.zoomIn(this._map.options.zoomDelta * (t2.shiftKey ? 3 : 1));
        }, _zoomOut: function(t2) {
          !this._disabled && this._map._zoom > this._map.getMinZoom() && this._map.zoomOut(this._map.options.zoomDelta * (t2.shiftKey ? 3 : 1));
        }, _createButton: function(t2, i3, e2, n2, o2) {
          var s2 = ht("a", e2, n2);
          return s2.innerHTML = t2, s2.href = "#", s2.title = i3, s2.setAttribute("role", "button"), s2.setAttribute("aria-label", i3), J(s2), V(s2, "click", Q), V(s2, "click", o2, this), V(s2, "click", this._refocusOnMap, this), s2;
        }, _updateDisabled: function() {
          var t2 = this._map, i3 = "leaflet-disabled";
          mt(this._zoomInButton, i3), mt(this._zoomOutButton, i3), (this._disabled || t2._zoom === t2.getMinZoom()) && pt(this._zoomOutButton, i3), (this._disabled || t2._zoom === t2.getMaxZoom()) && pt(this._zoomInButton, i3);
        } });
        ye.mergeOptions({ zoomControl: true }), ye.addInitHook(function() {
          this.options.zoomControl && (this.zoomControl = new Pe(), this.addControl(this.zoomControl));
        });
        var be = xe.extend({ options: { position: "bottomleft", maxWidth: 100, metric: true, imperial: true }, onAdd: function(t2) {
          var i3 = ht("div", "leaflet-control-scale"), e2 = this.options;
          return this._addScales(e2, "leaflet-control-scale-line", i3), t2.on(e2.updateWhenIdle ? "moveend" : "move", this._update, this), t2.whenReady(this._update, this), i3;
        }, onRemove: function(t2) {
          t2.off(this.options.updateWhenIdle ? "moveend" : "move", this._update, this);
        }, _addScales: function(t2, i3, e2) {
          t2.metric && (this._mScale = ht("div", i3, e2)), t2.imperial && (this._iScale = ht("div", i3, e2));
        }, _update: function() {
          var t2 = this._map, i3 = t2.getSize().y / 2, e2 = t2.distance(t2.containerPointToLatLng([0, i3]), t2.containerPointToLatLng([this.options.maxWidth, i3]));
          this._updateScales(e2);
        }, _updateScales: function(t2) {
          this.options.metric && t2 && this._updateMetric(t2), this.options.imperial && t2 && this._updateImperial(t2);
        }, _updateMetric: function(t2) {
          var i3 = this._getRoundNum(t2), e2 = i3 < 1e3 ? i3 + " m" : i3 / 1e3 + " km";
          this._updateScale(this._mScale, e2, i3 / t2);
        }, _updateImperial: function(t2) {
          var i3, e2, n2, o2 = 3.2808399 * t2;
          o2 > 5280 ? (i3 = o2 / 5280, e2 = this._getRoundNum(i3), this._updateScale(this._iScale, e2 + " mi", e2 / i3)) : (n2 = this._getRoundNum(o2), this._updateScale(this._iScale, n2 + " ft", n2 / o2));
        }, _updateScale: function(t2, i3, e2) {
          t2.style.width = Math.round(this.options.maxWidth * e2) + "px", t2.innerHTML = i3;
        }, _getRoundNum: function(t2) {
          var i3 = Math.pow(10, (Math.floor(t2) + "").length - 1), e2 = t2 / i3;
          return e2 = e2 >= 10 ? 10 : e2 >= 5 ? 5 : e2 >= 3 ? 3 : e2 >= 2 ? 2 : 1, i3 * e2;
        } }), Te = xe.extend({ options: { position: "bottomright", prefix: '<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>' }, initialize: function(t2) {
          l(this, t2), this._attributions = {};
        }, onAdd: function(t2) {
          t2.attributionControl = this, this._container = ht("div", "leaflet-control-attribution"), J(this._container);
          for (var i3 in t2._layers)
            t2._layers[i3].getAttribution && this.addAttribution(t2._layers[i3].getAttribution());
          return this._update(), this._container;
        }, setPrefix: function(t2) {
          return this.options.prefix = t2, this._update(), this;
        }, addAttribution: function(t2) {
          return t2 ? (this._attributions[t2] || (this._attributions[t2] = 0), this._attributions[t2]++, this._update(), this) : this;
        }, removeAttribution: function(t2) {
          return t2 ? (this._attributions[t2] && (this._attributions[t2]--, this._update()), this) : this;
        }, _update: function() {
          if (this._map) {
            var t2 = [];
            for (var i3 in this._attributions)
              this._attributions[i3] && t2.push(i3);
            var e2 = [];
            this.options.prefix && e2.push(this.options.prefix), t2.length && e2.push(t2.join(", ")), this._container.innerHTML = e2.join(" | ");
          }
        } });
        ye.mergeOptions({ attributionControl: true }), ye.addInitHook(function() {
          this.options.attributionControl && new Te().addTo(this);
        });
        xe.Layers = Le, xe.Zoom = Pe, xe.Scale = be, xe.Attribution = Te, we.layers = function(t2, i3, e2) {
          return new Le(t2, i3, e2);
        }, we.zoom = function(t2) {
          return new Pe(t2);
        }, we.scale = function(t2) {
          return new be(t2);
        }, we.attribution = function(t2) {
          return new Te(t2);
        };
        var ze, Me = v.extend({ initialize: function(t2) {
          this._map = t2;
        }, enable: function() {
          return this._enabled ? this : (this._enabled = true, this.addHooks(), this);
        }, disable: function() {
          return this._enabled ? (this._enabled = false, this.removeHooks(), this) : this;
        }, enabled: function() {
          return !!this._enabled;
        } }), Ce = { Events: hi }, Ze = Hi ? "touchstart mousedown" : "mousedown", Ee = { mousedown: "mouseup", touchstart: "touchend", pointerdown: "touchend", MSPointerDown: "touchend" }, Se = { mousedown: "mousemove", touchstart: "touchmove", pointerdown: "touchmove", MSPointerDown: "touchmove" }, ke = ui.extend({ options: { clickTolerance: 3 }, initialize: function(t2, i3, e2, n2) {
          l(this, n2), this._element = t2, this._dragStartTarget = i3 || t2, this._preventOutline = e2;
        }, enable: function() {
          this._enabled || (V(this._dragStartTarget, Ze, this._onDown, this), this._enabled = true);
        }, disable: function() {
          this._enabled && (ke._dragging === this && this.finishDrag(), G(this._dragStartTarget, Ze, this._onDown, this), this._enabled = false, this._moved = false);
        }, _onDown: function(t2) {
          if (!t2._simulated && this._enabled && (this._moved = false, !dt(this._element, "leaflet-zoom-anim") && !(ke._dragging || t2.shiftKey || 1 !== t2.which && 1 !== t2.button && !t2.touches || (ke._dragging = this, this._preventOutline && zt(this._element), bt(), pi(), this._moving)))) {
            this.fire("down");
            var i3 = t2.touches ? t2.touches[0] : t2;
            this._startPoint = new x(i3.clientX, i3.clientY), V(document, Se[t2.type], this._onMove, this), V(document, Ee[t2.type], this._onUp, this);
          }
        }, _onMove: function(t2) {
          if (!t2._simulated && this._enabled)
            if (t2.touches && t2.touches.length > 1)
              this._moved = true;
            else {
              var i3 = t2.touches && 1 === t2.touches.length ? t2.touches[0] : t2, e2 = new x(i3.clientX, i3.clientY).subtract(this._startPoint);
              (e2.x || e2.y) && (Math.abs(e2.x) + Math.abs(e2.y) < this.options.clickTolerance || ($2(t2), this._moved || (this.fire("dragstart"), this._moved = true, this._startPos = Pt(this._element).subtract(e2), pt(document.body, "leaflet-dragging"), this._lastTarget = t2.target || t2.srcElement, window.SVGElementInstance && this._lastTarget instanceof SVGElementInstance && (this._lastTarget = this._lastTarget.correspondingUseElement), pt(this._lastTarget, "leaflet-drag-target")), this._newPos = this._startPos.add(e2), this._moving = true, g(this._animRequest), this._lastEvent = t2, this._animRequest = f(this._updatePosition, this, true)));
            }
        }, _updatePosition: function() {
          var t2 = { originalEvent: this._lastEvent };
          this.fire("predrag", t2), Lt(this._element, this._newPos), this.fire("drag", t2);
        }, _onUp: function(t2) {
          !t2._simulated && this._enabled && this.finishDrag();
        }, finishDrag: function() {
          mt(document.body, "leaflet-dragging"), this._lastTarget && (mt(this._lastTarget, "leaflet-drag-target"), this._lastTarget = null);
          for (var t2 in Se)
            G(document, Se[t2], this._onMove, this), G(document, Ee[t2], this._onUp, this);
          Tt(), mi(), this._moved && this._moving && (g(this._animRequest), this.fire("dragend", { distance: this._newPos.distanceTo(this._startPos) })), this._moving = false, ke._dragging = false;
        } }), Be = (Object.freeze || Object)({ simplify: Ct, pointToSegmentDistance: Zt, closestPointOnSegment: function(t2, i3, e2) {
          return Rt(t2, i3, e2);
        }, clipSegment: Bt, _getEdgeIntersection: It, _getBitCode: At, _sqClosestPointOnSegment: Rt, isFlat: Dt, _flat: Nt }), Ie = (Object.freeze || Object)({ clipPolygon: jt }), Ae = { project: function(t2) {
          return new x(t2.lng, t2.lat);
        }, unproject: function(t2) {
          return new M(t2.y, t2.x);
        }, bounds: new P([-180, -90], [180, 90]) }, Oe = { R: 6378137, R_MINOR: 6356752314245179e-9, bounds: new P([-2003750834279e-5, -1549657073972e-5], [2003750834279e-5, 1876465623138e-5]), project: function(t2) {
          var i3 = Math.PI / 180, e2 = this.R, n2 = t2.lat * i3, o2 = this.R_MINOR / e2, s2 = Math.sqrt(1 - o2 * o2), r2 = s2 * Math.sin(n2), a2 = Math.tan(Math.PI / 4 - n2 / 2) / Math.pow((1 - r2) / (1 + r2), s2 / 2);
          return n2 = -e2 * Math.log(Math.max(a2, 1e-10)), new x(t2.lng * i3 * e2, n2);
        }, unproject: function(t2) {
          for (var i3, e2 = 180 / Math.PI, n2 = this.R, o2 = this.R_MINOR / n2, s2 = Math.sqrt(1 - o2 * o2), r2 = Math.exp(-t2.y / n2), a2 = Math.PI / 2 - 2 * Math.atan(r2), h2 = 0, u2 = 0.1; h2 < 15 && Math.abs(u2) > 1e-7; h2++)
            i3 = s2 * Math.sin(a2), i3 = Math.pow((1 - i3) / (1 + i3), s2 / 2), a2 += u2 = Math.PI / 2 - 2 * Math.atan(r2 * i3) - a2;
          return new M(a2 * e2, t2.x * e2 / n2);
        } }, Re = (Object.freeze || Object)({ LonLat: Ae, Mercator: Oe, SphericalMercator: _i }), De = i2({}, ci, { code: "EPSG:3395", projection: Oe, transformation: function() {
          var t2 = 0.5 / (Math.PI * Oe.R);
          return E(t2, 0.5, -t2, 0.5);
        }() }), Ne = i2({}, ci, { code: "EPSG:4326", projection: Ae, transformation: E(1 / 180, 1, -1 / 180, 0.5) }), je = i2({}, li, { projection: Ae, transformation: E(1, 0, -1, 0), scale: function(t2) {
          return Math.pow(2, t2);
        }, zoom: function(t2) {
          return Math.log(t2) / Math.LN2;
        }, distance: function(t2, i3) {
          var e2 = i3.lng - t2.lng, n2 = i3.lat - t2.lat;
          return Math.sqrt(e2 * e2 + n2 * n2);
        }, infinite: true });
        li.Earth = ci, li.EPSG3395 = De, li.EPSG3857 = gi, li.EPSG900913 = vi, li.EPSG4326 = Ne, li.Simple = je;
        var We = ui.extend({ options: { pane: "overlayPane", attribution: null, bubblingMouseEvents: true }, addTo: function(t2) {
          return t2.addLayer(this), this;
        }, remove: function() {
          return this.removeFrom(this._map || this._mapToAdd);
        }, removeFrom: function(t2) {
          return t2 && t2.removeLayer(this), this;
        }, getPane: function(t2) {
          return this._map.getPane(t2 ? this.options[t2] || t2 : this.options.pane);
        }, addInteractiveTarget: function(t2) {
          return this._map._targets[n(t2)] = this, this;
        }, removeInteractiveTarget: function(t2) {
          return delete this._map._targets[n(t2)], this;
        }, getAttribution: function() {
          return this.options.attribution;
        }, _layerAdd: function(t2) {
          var i3 = t2.target;
          if (i3.hasLayer(this)) {
            if (this._map = i3, this._zoomAnimated = i3._zoomAnimated, this.getEvents) {
              var e2 = this.getEvents();
              i3.on(e2, this), this.once("remove", function() {
                i3.off(e2, this);
              }, this);
            }
            this.onAdd(i3), this.getAttribution && i3.attributionControl && i3.attributionControl.addAttribution(this.getAttribution()), this.fire("add"), i3.fire("layeradd", { layer: this });
          }
        } });
        ye.include({ addLayer: function(t2) {
          if (!t2._layerAdd)
            throw new Error("The provided object is not a Layer.");
          var i3 = n(t2);
          return this._layers[i3] ? this : (this._layers[i3] = t2, t2._mapToAdd = this, t2.beforeAdd && t2.beforeAdd(this), this.whenReady(t2._layerAdd, t2), this);
        }, removeLayer: function(t2) {
          var i3 = n(t2);
          return this._layers[i3] ? (this._loaded && t2.onRemove(this), t2.getAttribution && this.attributionControl && this.attributionControl.removeAttribution(t2.getAttribution()), delete this._layers[i3], this._loaded && (this.fire("layerremove", { layer: t2 }), t2.fire("remove")), t2._map = t2._mapToAdd = null, this) : this;
        }, hasLayer: function(t2) {
          return !!t2 && n(t2) in this._layers;
        }, eachLayer: function(t2, i3) {
          for (var e2 in this._layers)
            t2.call(i3, this._layers[e2]);
          return this;
        }, _addLayers: function(t2) {
          for (var i3 = 0, e2 = (t2 = t2 ? ei(t2) ? t2 : [t2] : []).length; i3 < e2; i3++)
            this.addLayer(t2[i3]);
        }, _addZoomLimit: function(t2) {
          !isNaN(t2.options.maxZoom) && isNaN(t2.options.minZoom) || (this._zoomBoundLayers[n(t2)] = t2, this._updateZoomLevels());
        }, _removeZoomLimit: function(t2) {
          var i3 = n(t2);
          this._zoomBoundLayers[i3] && (delete this._zoomBoundLayers[i3], this._updateZoomLevels());
        }, _updateZoomLevels: function() {
          var t2 = 1 / 0, i3 = -1 / 0, e2 = this._getZoomSpan();
          for (var n2 in this._zoomBoundLayers) {
            var o2 = this._zoomBoundLayers[n2].options;
            t2 = void 0 === o2.minZoom ? t2 : Math.min(t2, o2.minZoom), i3 = void 0 === o2.maxZoom ? i3 : Math.max(i3, o2.maxZoom);
          }
          this._layersMaxZoom = i3 === -1 / 0 ? void 0 : i3, this._layersMinZoom = t2 === 1 / 0 ? void 0 : t2, e2 !== this._getZoomSpan() && this.fire("zoomlevelschange"), void 0 === this.options.maxZoom && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom && this.setZoom(this._layersMaxZoom), void 0 === this.options.minZoom && this._layersMinZoom && this.getZoom() < this._layersMinZoom && this.setZoom(this._layersMinZoom);
        } });
        var He = We.extend({ initialize: function(t2) {
          this._layers = {};
          var i3, e2;
          if (t2)
            for (i3 = 0, e2 = t2.length; i3 < e2; i3++)
              this.addLayer(t2[i3]);
        }, addLayer: function(t2) {
          var i3 = this.getLayerId(t2);
          return this._layers[i3] = t2, this._map && this._map.addLayer(t2), this;
        }, removeLayer: function(t2) {
          var i3 = t2 in this._layers ? t2 : this.getLayerId(t2);
          return this._map && this._layers[i3] && this._map.removeLayer(this._layers[i3]), delete this._layers[i3], this;
        }, hasLayer: function(t2) {
          return !!t2 && (t2 in this._layers || this.getLayerId(t2) in this._layers);
        }, clearLayers: function() {
          for (var t2 in this._layers)
            this.removeLayer(this._layers[t2]);
          return this;
        }, invoke: function(t2) {
          var i3, e2, n2 = Array.prototype.slice.call(arguments, 1);
          for (i3 in this._layers)
            (e2 = this._layers[i3])[t2] && e2[t2].apply(e2, n2);
          return this;
        }, onAdd: function(t2) {
          for (var i3 in this._layers)
            t2.addLayer(this._layers[i3]);
        }, onRemove: function(t2) {
          for (var i3 in this._layers)
            t2.removeLayer(this._layers[i3]);
        }, eachLayer: function(t2, i3) {
          for (var e2 in this._layers)
            t2.call(i3, this._layers[e2]);
          return this;
        }, getLayer: function(t2) {
          return this._layers[t2];
        }, getLayers: function() {
          var t2 = [];
          for (var i3 in this._layers)
            t2.push(this._layers[i3]);
          return t2;
        }, setZIndex: function(t2) {
          return this.invoke("setZIndex", t2);
        }, getLayerId: function(t2) {
          return n(t2);
        } }), Fe = He.extend({ addLayer: function(t2) {
          return this.hasLayer(t2) ? this : (t2.addEventParent(this), He.prototype.addLayer.call(this, t2), this.fire("layeradd", { layer: t2 }));
        }, removeLayer: function(t2) {
          return this.hasLayer(t2) ? (t2 in this._layers && (t2 = this._layers[t2]), t2.removeEventParent(this), He.prototype.removeLayer.call(this, t2), this.fire("layerremove", { layer: t2 })) : this;
        }, setStyle: function(t2) {
          return this.invoke("setStyle", t2);
        }, bringToFront: function() {
          return this.invoke("bringToFront");
        }, bringToBack: function() {
          return this.invoke("bringToBack");
        }, getBounds: function() {
          var t2 = new T();
          for (var i3 in this._layers) {
            var e2 = this._layers[i3];
            t2.extend(e2.getBounds ? e2.getBounds() : e2.getLatLng());
          }
          return t2;
        } }), Ue = v.extend({ initialize: function(t2) {
          l(this, t2);
        }, createIcon: function(t2) {
          return this._createIcon("icon", t2);
        }, createShadow: function(t2) {
          return this._createIcon("shadow", t2);
        }, _createIcon: function(t2, i3) {
          var e2 = this._getIconUrl(t2);
          if (!e2) {
            if ("icon" === t2)
              throw new Error("iconUrl not set in Icon options (see the docs).");
            return null;
          }
          var n2 = this._createImg(e2, i3 && "IMG" === i3.tagName ? i3 : null);
          return this._setIconStyles(n2, t2), n2;
        }, _setIconStyles: function(t2, i3) {
          var e2 = this.options, n2 = e2[i3 + "Size"];
          "number" == typeof n2 && (n2 = [n2, n2]);
          var o2 = w(n2), s2 = w("shadow" === i3 && e2.shadowAnchor || e2.iconAnchor || o2 && o2.divideBy(2, true));
          t2.className = "leaflet-marker-" + i3 + " " + (e2.className || ""), s2 && (t2.style.marginLeft = -s2.x + "px", t2.style.marginTop = -s2.y + "px"), o2 && (t2.style.width = o2.x + "px", t2.style.height = o2.y + "px");
        }, _createImg: function(t2, i3) {
          return i3 = i3 || document.createElement("img"), i3.src = t2, i3;
        }, _getIconUrl: function(t2) {
          return Vi && this.options[t2 + "RetinaUrl"] || this.options[t2 + "Url"];
        } }), Ve = Ue.extend({ options: { iconUrl: "marker-icon.png", iconRetinaUrl: "marker-icon-2x.png", shadowUrl: "marker-shadow.png", iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], tooltipAnchor: [16, -28], shadowSize: [41, 41] }, _getIconUrl: function(t2) {
          return Ve.imagePath || (Ve.imagePath = this._detectIconPath()), (this.options.imagePath || Ve.imagePath) + Ue.prototype._getIconUrl.call(this, t2);
        }, _detectIconPath: function() {
          var t2 = ht("div", "leaflet-default-icon-path", document.body), i3 = at(t2, "background-image") || at(t2, "backgroundImage");
          return document.body.removeChild(t2), i3 = null === i3 || 0 !== i3.indexOf("url") ? "" : i3.replace(/^url\([\"\']?/, "").replace(/marker-icon\.png[\"\']?\)$/, "");
        } }), Ge = Me.extend({ initialize: function(t2) {
          this._marker = t2;
        }, addHooks: function() {
          var t2 = this._marker._icon;
          this._draggable || (this._draggable = new ke(t2, t2, true)), this._draggable.on({ dragstart: this._onDragStart, drag: this._onDrag, dragend: this._onDragEnd }, this).enable(), pt(t2, "leaflet-marker-draggable");
        }, removeHooks: function() {
          this._draggable.off({ dragstart: this._onDragStart, drag: this._onDrag, dragend: this._onDragEnd }, this).disable(), this._marker._icon && mt(this._marker._icon, "leaflet-marker-draggable");
        }, moved: function() {
          return this._draggable && this._draggable._moved;
        }, _onDragStart: function() {
          this._oldLatLng = this._marker.getLatLng(), this._marker.closePopup().fire("movestart").fire("dragstart");
        }, _onDrag: function(t2) {
          var i3 = this._marker, e2 = i3._shadow, n2 = Pt(i3._icon), o2 = i3._map.layerPointToLatLng(n2);
          e2 && Lt(e2, n2), i3._latlng = o2, t2.latlng = o2, t2.oldLatLng = this._oldLatLng, i3.fire("move", t2).fire("drag", t2);
        }, _onDragEnd: function(t2) {
          delete this._oldLatLng, this._marker.fire("moveend").fire("dragend", t2);
        } }), qe = We.extend({ options: { icon: new Ve(), interactive: true, draggable: false, keyboard: true, title: "", alt: "", zIndexOffset: 0, opacity: 1, riseOnHover: false, riseOffset: 250, pane: "markerPane", bubblingMouseEvents: false }, initialize: function(t2, i3) {
          l(this, i3), this._latlng = C(t2);
        }, onAdd: function(t2) {
          this._zoomAnimated = this._zoomAnimated && t2.options.markerZoomAnimation, this._zoomAnimated && t2.on("zoomanim", this._animateZoom, this), this._initIcon(), this.update();
        }, onRemove: function(t2) {
          this.dragging && this.dragging.enabled() && (this.options.draggable = true, this.dragging.removeHooks()), delete this.dragging, this._zoomAnimated && t2.off("zoomanim", this._animateZoom, this), this._removeIcon(), this._removeShadow();
        }, getEvents: function() {
          return { zoom: this.update, viewreset: this.update };
        }, getLatLng: function() {
          return this._latlng;
        }, setLatLng: function(t2) {
          var i3 = this._latlng;
          return this._latlng = C(t2), this.update(), this.fire("move", { oldLatLng: i3, latlng: this._latlng });
        }, setZIndexOffset: function(t2) {
          return this.options.zIndexOffset = t2, this.update();
        }, setIcon: function(t2) {
          return this.options.icon = t2, this._map && (this._initIcon(), this.update()), this._popup && this.bindPopup(this._popup, this._popup.options), this;
        }, getElement: function() {
          return this._icon;
        }, update: function() {
          if (this._icon) {
            var t2 = this._map.latLngToLayerPoint(this._latlng).round();
            this._setPos(t2);
          }
          return this;
        }, _initIcon: function() {
          var t2 = this.options, i3 = "leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide"), e2 = t2.icon.createIcon(this._icon), n2 = false;
          e2 !== this._icon && (this._icon && this._removeIcon(), n2 = true, t2.title && (e2.title = t2.title), t2.alt && (e2.alt = t2.alt)), pt(e2, i3), t2.keyboard && (e2.tabIndex = "0"), this._icon = e2, t2.riseOnHover && this.on({ mouseover: this._bringToFront, mouseout: this._resetZIndex });
          var o2 = t2.icon.createShadow(this._shadow), s2 = false;
          o2 !== this._shadow && (this._removeShadow(), s2 = true), o2 && (pt(o2, i3), o2.alt = ""), this._shadow = o2, t2.opacity < 1 && this._updateOpacity(), n2 && this.getPane().appendChild(this._icon), this._initInteraction(), o2 && s2 && this.getPane("shadowPane").appendChild(this._shadow);
        }, _removeIcon: function() {
          this.options.riseOnHover && this.off({ mouseover: this._bringToFront, mouseout: this._resetZIndex }), ut(this._icon), this.removeInteractiveTarget(this._icon), this._icon = null;
        }, _removeShadow: function() {
          this._shadow && ut(this._shadow), this._shadow = null;
        }, _setPos: function(t2) {
          Lt(this._icon, t2), this._shadow && Lt(this._shadow, t2), this._zIndex = t2.y + this.options.zIndexOffset, this._resetZIndex();
        }, _updateZIndex: function(t2) {
          this._icon.style.zIndex = this._zIndex + t2;
        }, _animateZoom: function(t2) {
          var i3 = this._map._latLngToNewLayerPoint(this._latlng, t2.zoom, t2.center).round();
          this._setPos(i3);
        }, _initInteraction: function() {
          if (this.options.interactive && (pt(this._icon, "leaflet-interactive"), this.addInteractiveTarget(this._icon), Ge)) {
            var t2 = this.options.draggable;
            this.dragging && (t2 = this.dragging.enabled(), this.dragging.disable()), this.dragging = new Ge(this), t2 && this.dragging.enable();
          }
        }, setOpacity: function(t2) {
          return this.options.opacity = t2, this._map && this._updateOpacity(), this;
        }, _updateOpacity: function() {
          var t2 = this.options.opacity;
          vt(this._icon, t2), this._shadow && vt(this._shadow, t2);
        }, _bringToFront: function() {
          this._updateZIndex(this.options.riseOffset);
        }, _resetZIndex: function() {
          this._updateZIndex(0);
        }, _getPopupAnchor: function() {
          return this.options.icon.options.popupAnchor || [0, 0];
        }, _getTooltipAnchor: function() {
          return this.options.icon.options.tooltipAnchor || [0, 0];
        } }), Ke = We.extend({ options: { stroke: true, color: "#3388ff", weight: 3, opacity: 1, lineCap: "round", lineJoin: "round", dashArray: null, dashOffset: null, fill: false, fillColor: null, fillOpacity: 0.2, fillRule: "evenodd", interactive: true, bubblingMouseEvents: true }, beforeAdd: function(t2) {
          this._renderer = t2.getRenderer(this);
        }, onAdd: function() {
          this._renderer._initPath(this), this._reset(), this._renderer._addPath(this);
        }, onRemove: function() {
          this._renderer._removePath(this);
        }, redraw: function() {
          return this._map && this._renderer._updatePath(this), this;
        }, setStyle: function(t2) {
          return l(this, t2), this._renderer && this._renderer._updateStyle(this), this;
        }, bringToFront: function() {
          return this._renderer && this._renderer._bringToFront(this), this;
        }, bringToBack: function() {
          return this._renderer && this._renderer._bringToBack(this), this;
        }, getElement: function() {
          return this._path;
        }, _reset: function() {
          this._project(), this._update();
        }, _clickTolerance: function() {
          return (this.options.stroke ? this.options.weight / 2 : 0) + (Hi ? 10 : 0);
        } }), Ye = Ke.extend({ options: { fill: true, radius: 10 }, initialize: function(t2, i3) {
          l(this, i3), this._latlng = C(t2), this._radius = this.options.radius;
        }, setLatLng: function(t2) {
          return this._latlng = C(t2), this.redraw(), this.fire("move", { latlng: this._latlng });
        }, getLatLng: function() {
          return this._latlng;
        }, setRadius: function(t2) {
          return this.options.radius = this._radius = t2, this.redraw();
        }, getRadius: function() {
          return this._radius;
        }, setStyle: function(t2) {
          var i3 = t2 && t2.radius || this._radius;
          return Ke.prototype.setStyle.call(this, t2), this.setRadius(i3), this;
        }, _project: function() {
          this._point = this._map.latLngToLayerPoint(this._latlng), this._updateBounds();
        }, _updateBounds: function() {
          var t2 = this._radius, i3 = this._radiusY || t2, e2 = this._clickTolerance(), n2 = [t2 + e2, i3 + e2];
          this._pxBounds = new P(this._point.subtract(n2), this._point.add(n2));
        }, _update: function() {
          this._map && this._updatePath();
        }, _updatePath: function() {
          this._renderer._updateCircle(this);
        }, _empty: function() {
          return this._radius && !this._renderer._bounds.intersects(this._pxBounds);
        }, _containsPoint: function(t2) {
          return t2.distanceTo(this._point) <= this._radius + this._clickTolerance();
        } }), Xe = Ye.extend({ initialize: function(t2, e2, n2) {
          if ("number" == typeof e2 && (e2 = i2({}, n2, { radius: e2 })), l(this, e2), this._latlng = C(t2), isNaN(this.options.radius))
            throw new Error("Circle radius cannot be NaN");
          this._mRadius = this.options.radius;
        }, setRadius: function(t2) {
          return this._mRadius = t2, this.redraw();
        }, getRadius: function() {
          return this._mRadius;
        }, getBounds: function() {
          var t2 = [this._radius, this._radiusY || this._radius];
          return new T(this._map.layerPointToLatLng(this._point.subtract(t2)), this._map.layerPointToLatLng(this._point.add(t2)));
        }, setStyle: Ke.prototype.setStyle, _project: function() {
          var t2 = this._latlng.lng, i3 = this._latlng.lat, e2 = this._map, n2 = e2.options.crs;
          if (n2.distance === ci.distance) {
            var o2 = Math.PI / 180, s2 = this._mRadius / ci.R / o2, r2 = e2.project([i3 + s2, t2]), a2 = e2.project([i3 - s2, t2]), h2 = r2.add(a2).divideBy(2), u2 = e2.unproject(h2).lat, l2 = Math.acos((Math.cos(s2 * o2) - Math.sin(i3 * o2) * Math.sin(u2 * o2)) / (Math.cos(i3 * o2) * Math.cos(u2 * o2))) / o2;
            (isNaN(l2) || 0 === l2) && (l2 = s2 / Math.cos(Math.PI / 180 * i3)), this._point = h2.subtract(e2.getPixelOrigin()), this._radius = isNaN(l2) ? 0 : Math.max(Math.round(h2.x - e2.project([u2, t2 - l2]).x), 1), this._radiusY = Math.max(Math.round(h2.y - r2.y), 1);
          } else {
            var c2 = n2.unproject(n2.project(this._latlng).subtract([this._mRadius, 0]));
            this._point = e2.latLngToLayerPoint(this._latlng), this._radius = this._point.x - e2.latLngToLayerPoint(c2).x;
          }
          this._updateBounds();
        } }), Je = Ke.extend({ options: { smoothFactor: 1, noClip: false }, initialize: function(t2, i3) {
          l(this, i3), this._setLatLngs(t2);
        }, getLatLngs: function() {
          return this._latlngs;
        }, setLatLngs: function(t2) {
          return this._setLatLngs(t2), this.redraw();
        }, isEmpty: function() {
          return !this._latlngs.length;
        }, closestLayerPoint: function(t2) {
          for (var i3, e2, n2 = 1 / 0, o2 = null, s2 = Rt, r2 = 0, a2 = this._parts.length; r2 < a2; r2++)
            for (var h2 = this._parts[r2], u2 = 1, l2 = h2.length; u2 < l2; u2++) {
              var c2 = s2(t2, i3 = h2[u2 - 1], e2 = h2[u2], true);
              c2 < n2 && (n2 = c2, o2 = s2(t2, i3, e2));
            }
          return o2 && (o2.distance = Math.sqrt(n2)), o2;
        }, getCenter: function() {
          if (!this._map)
            throw new Error("Must add layer to map before using getCenter()");
          var t2, i3, e2, n2, o2, s2, r2, a2 = this._rings[0], h2 = a2.length;
          if (!h2)
            return null;
          for (t2 = 0, i3 = 0; t2 < h2 - 1; t2++)
            i3 += a2[t2].distanceTo(a2[t2 + 1]) / 2;
          if (0 === i3)
            return this._map.layerPointToLatLng(a2[0]);
          for (t2 = 0, n2 = 0; t2 < h2 - 1; t2++)
            if (o2 = a2[t2], s2 = a2[t2 + 1], e2 = o2.distanceTo(s2), (n2 += e2) > i3)
              return r2 = (n2 - i3) / e2, this._map.layerPointToLatLng([s2.x - r2 * (s2.x - o2.x), s2.y - r2 * (s2.y - o2.y)]);
        }, getBounds: function() {
          return this._bounds;
        }, addLatLng: function(t2, i3) {
          return i3 = i3 || this._defaultShape(), t2 = C(t2), i3.push(t2), this._bounds.extend(t2), this.redraw();
        }, _setLatLngs: function(t2) {
          this._bounds = new T(), this._latlngs = this._convertLatLngs(t2);
        }, _defaultShape: function() {
          return Dt(this._latlngs) ? this._latlngs : this._latlngs[0];
        }, _convertLatLngs: function(t2) {
          for (var i3 = [], e2 = Dt(t2), n2 = 0, o2 = t2.length; n2 < o2; n2++)
            e2 ? (i3[n2] = C(t2[n2]), this._bounds.extend(i3[n2])) : i3[n2] = this._convertLatLngs(t2[n2]);
          return i3;
        }, _project: function() {
          var t2 = new P();
          this._rings = [], this._projectLatlngs(this._latlngs, this._rings, t2);
          var i3 = this._clickTolerance(), e2 = new x(i3, i3);
          this._bounds.isValid() && t2.isValid() && (t2.min._subtract(e2), t2.max._add(e2), this._pxBounds = t2);
        }, _projectLatlngs: function(t2, i3, e2) {
          var n2, o2, s2 = t2[0] instanceof M, r2 = t2.length;
          if (s2) {
            for (o2 = [], n2 = 0; n2 < r2; n2++)
              o2[n2] = this._map.latLngToLayerPoint(t2[n2]), e2.extend(o2[n2]);
            i3.push(o2);
          } else
            for (n2 = 0; n2 < r2; n2++)
              this._projectLatlngs(t2[n2], i3, e2);
        }, _clipPoints: function() {
          var t2 = this._renderer._bounds;
          if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t2))
            if (this.options.noClip)
              this._parts = this._rings;
            else {
              var i3, e2, n2, o2, s2, r2, a2, h2 = this._parts;
              for (i3 = 0, n2 = 0, o2 = this._rings.length; i3 < o2; i3++)
                for (e2 = 0, s2 = (a2 = this._rings[i3]).length; e2 < s2 - 1; e2++)
                  (r2 = Bt(a2[e2], a2[e2 + 1], t2, e2, true)) && (h2[n2] = h2[n2] || [], h2[n2].push(r2[0]), r2[1] === a2[e2 + 1] && e2 !== s2 - 2 || (h2[n2].push(r2[1]), n2++));
            }
        }, _simplifyPoints: function() {
          for (var t2 = this._parts, i3 = this.options.smoothFactor, e2 = 0, n2 = t2.length; e2 < n2; e2++)
            t2[e2] = Ct(t2[e2], i3);
        }, _update: function() {
          this._map && (this._clipPoints(), this._simplifyPoints(), this._updatePath());
        }, _updatePath: function() {
          this._renderer._updatePoly(this);
        }, _containsPoint: function(t2, i3) {
          var e2, n2, o2, s2, r2, a2, h2 = this._clickTolerance();
          if (!this._pxBounds || !this._pxBounds.contains(t2))
            return false;
          for (e2 = 0, s2 = this._parts.length; e2 < s2; e2++)
            for (n2 = 0, o2 = (r2 = (a2 = this._parts[e2]).length) - 1; n2 < r2; o2 = n2++)
              if ((i3 || 0 !== n2) && Zt(t2, a2[o2], a2[n2]) <= h2)
                return true;
          return false;
        } });
        Je._flat = Nt;
        var $e = Je.extend({ options: { fill: true }, isEmpty: function() {
          return !this._latlngs.length || !this._latlngs[0].length;
        }, getCenter: function() {
          if (!this._map)
            throw new Error("Must add layer to map before using getCenter()");
          var t2, i3, e2, n2, o2, s2, r2, a2, h2, u2 = this._rings[0], l2 = u2.length;
          if (!l2)
            return null;
          for (s2 = r2 = a2 = 0, t2 = 0, i3 = l2 - 1; t2 < l2; i3 = t2++)
            e2 = u2[t2], n2 = u2[i3], o2 = e2.y * n2.x - n2.y * e2.x, r2 += (e2.x + n2.x) * o2, a2 += (e2.y + n2.y) * o2, s2 += 3 * o2;
          return h2 = 0 === s2 ? u2[0] : [r2 / s2, a2 / s2], this._map.layerPointToLatLng(h2);
        }, _convertLatLngs: function(t2) {
          var i3 = Je.prototype._convertLatLngs.call(this, t2), e2 = i3.length;
          return e2 >= 2 && i3[0] instanceof M && i3[0].equals(i3[e2 - 1]) && i3.pop(), i3;
        }, _setLatLngs: function(t2) {
          Je.prototype._setLatLngs.call(this, t2), Dt(this._latlngs) && (this._latlngs = [this._latlngs]);
        }, _defaultShape: function() {
          return Dt(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];
        }, _clipPoints: function() {
          var t2 = this._renderer._bounds, i3 = this.options.weight, e2 = new x(i3, i3);
          if (t2 = new P(t2.min.subtract(e2), t2.max.add(e2)), this._parts = [], this._pxBounds && this._pxBounds.intersects(t2))
            if (this.options.noClip)
              this._parts = this._rings;
            else
              for (var n2, o2 = 0, s2 = this._rings.length; o2 < s2; o2++)
                (n2 = jt(this._rings[o2], t2, true)).length && this._parts.push(n2);
        }, _updatePath: function() {
          this._renderer._updatePoly(this, true);
        }, _containsPoint: function(t2) {
          var i3, e2, n2, o2, s2, r2, a2, h2, u2 = false;
          if (!this._pxBounds.contains(t2))
            return false;
          for (o2 = 0, a2 = this._parts.length; o2 < a2; o2++)
            for (s2 = 0, r2 = (h2 = (i3 = this._parts[o2]).length) - 1; s2 < h2; r2 = s2++)
              e2 = i3[s2], n2 = i3[r2], e2.y > t2.y != n2.y > t2.y && t2.x < (n2.x - e2.x) * (t2.y - e2.y) / (n2.y - e2.y) + e2.x && (u2 = !u2);
          return u2 || Je.prototype._containsPoint.call(this, t2, true);
        } }), Qe = Fe.extend({ initialize: function(t2, i3) {
          l(this, i3), this._layers = {}, t2 && this.addData(t2);
        }, addData: function(t2) {
          var i3, e2, n2, o2 = ei(t2) ? t2 : t2.features;
          if (o2) {
            for (i3 = 0, e2 = o2.length; i3 < e2; i3++)
              ((n2 = o2[i3]).geometries || n2.geometry || n2.features || n2.coordinates) && this.addData(n2);
            return this;
          }
          var s2 = this.options;
          if (s2.filter && !s2.filter(t2))
            return this;
          var r2 = Wt(t2, s2);
          return r2 ? (r2.feature = qt(t2), r2.defaultOptions = r2.options, this.resetStyle(r2), s2.onEachFeature && s2.onEachFeature(t2, r2), this.addLayer(r2)) : this;
        }, resetStyle: function(t2) {
          return t2.options = i2({}, t2.defaultOptions), this._setLayerStyle(t2, this.options.style), this;
        }, setStyle: function(t2) {
          return this.eachLayer(function(i3) {
            this._setLayerStyle(i3, t2);
          }, this);
        }, _setLayerStyle: function(t2, i3) {
          "function" == typeof i3 && (i3 = i3(t2.feature)), t2.setStyle && t2.setStyle(i3);
        } }), tn = { toGeoJSON: function(t2) {
          return Gt(this, { type: "Point", coordinates: Ut(this.getLatLng(), t2) });
        } };
        qe.include(tn), Xe.include(tn), Ye.include(tn), Je.include({ toGeoJSON: function(t2) {
          var i3 = !Dt(this._latlngs), e2 = Vt(this._latlngs, i3 ? 1 : 0, false, t2);
          return Gt(this, { type: (i3 ? "Multi" : "") + "LineString", coordinates: e2 });
        } }), $e.include({ toGeoJSON: function(t2) {
          var i3 = !Dt(this._latlngs), e2 = i3 && !Dt(this._latlngs[0]), n2 = Vt(this._latlngs, e2 ? 2 : i3 ? 1 : 0, true, t2);
          return i3 || (n2 = [n2]), Gt(this, { type: (e2 ? "Multi" : "") + "Polygon", coordinates: n2 });
        } }), He.include({ toMultiPoint: function(t2) {
          var i3 = [];
          return this.eachLayer(function(e2) {
            i3.push(e2.toGeoJSON(t2).geometry.coordinates);
          }), Gt(this, { type: "MultiPoint", coordinates: i3 });
        }, toGeoJSON: function(t2) {
          var i3 = this.feature && this.feature.geometry && this.feature.geometry.type;
          if ("MultiPoint" === i3)
            return this.toMultiPoint(t2);
          var e2 = "GeometryCollection" === i3, n2 = [];
          return this.eachLayer(function(i4) {
            if (i4.toGeoJSON) {
              var o2 = i4.toGeoJSON(t2);
              if (e2)
                n2.push(o2.geometry);
              else {
                var s2 = qt(o2);
                "FeatureCollection" === s2.type ? n2.push.apply(n2, s2.features) : n2.push(s2);
              }
            }
          }), e2 ? Gt(this, { geometries: n2, type: "GeometryCollection" }) : { type: "FeatureCollection", features: n2 };
        } });
        var en = Kt, nn = We.extend({ options: { opacity: 1, alt: "", interactive: false, crossOrigin: false, errorOverlayUrl: "", zIndex: 1, className: "" }, initialize: function(t2, i3, e2) {
          this._url = t2, this._bounds = z(i3), l(this, e2);
        }, onAdd: function() {
          this._image || (this._initImage(), this.options.opacity < 1 && this._updateOpacity()), this.options.interactive && (pt(this._image, "leaflet-interactive"), this.addInteractiveTarget(this._image)), this.getPane().appendChild(this._image), this._reset();
        }, onRemove: function() {
          ut(this._image), this.options.interactive && this.removeInteractiveTarget(this._image);
        }, setOpacity: function(t2) {
          return this.options.opacity = t2, this._image && this._updateOpacity(), this;
        }, setStyle: function(t2) {
          return t2.opacity && this.setOpacity(t2.opacity), this;
        }, bringToFront: function() {
          return this._map && ct(this._image), this;
        }, bringToBack: function() {
          return this._map && _t(this._image), this;
        }, setUrl: function(t2) {
          return this._url = t2, this._image && (this._image.src = t2), this;
        }, setBounds: function(t2) {
          return this._bounds = z(t2), this._map && this._reset(), this;
        }, getEvents: function() {
          var t2 = { zoom: this._reset, viewreset: this._reset };
          return this._zoomAnimated && (t2.zoomanim = this._animateZoom), t2;
        }, setZIndex: function(t2) {
          return this.options.zIndex = t2, this._updateZIndex(), this;
        }, getBounds: function() {
          return this._bounds;
        }, getElement: function() {
          return this._image;
        }, _initImage: function() {
          var t2 = this._image = ht("img", "leaflet-image-layer " + (this._zoomAnimated ? "leaflet-zoom-animated" : "") + (this.options.className || ""));
          t2.onselectstart = r, t2.onmousemove = r, t2.onload = e(this.fire, this, "load"), t2.onerror = e(this._overlayOnError, this, "error"), this.options.crossOrigin && (t2.crossOrigin = ""), this.options.zIndex && this._updateZIndex(), t2.src = this._url, t2.alt = this.options.alt;
        }, _animateZoom: function(t2) {
          var i3 = this._map.getZoomScale(t2.zoom), e2 = this._map._latLngBoundsToNewLayerBounds(this._bounds, t2.zoom, t2.center).min;
          wt(this._image, e2, i3);
        }, _reset: function() {
          var t2 = this._image, i3 = new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()), this._map.latLngToLayerPoint(this._bounds.getSouthEast())), e2 = i3.getSize();
          Lt(t2, i3.min), t2.style.width = e2.x + "px", t2.style.height = e2.y + "px";
        }, _updateOpacity: function() {
          vt(this._image, this.options.opacity);
        }, _updateZIndex: function() {
          this._image && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this._image.style.zIndex = this.options.zIndex);
        }, _overlayOnError: function() {
          this.fire("error");
          var t2 = this.options.errorOverlayUrl;
          t2 && this._url !== t2 && (this._url = t2, this._image.src = t2);
        } }), on2 = nn.extend({ options: { autoplay: true, loop: true }, _initImage: function() {
          var t2 = "VIDEO" === this._url.tagName, i3 = this._image = t2 ? this._url : ht("video");
          if (i3.class = i3.class || "", i3.class += "leaflet-image-layer " + (this._zoomAnimated ? "leaflet-zoom-animated" : ""), i3.onselectstart = r, i3.onmousemove = r, i3.onloadeddata = e(this.fire, this, "load"), !t2) {
            ei(this._url) || (this._url = [this._url]), i3.autoplay = !!this.options.autoplay, i3.loop = !!this.options.loop;
            for (var n2 = 0; n2 < this._url.length; n2++) {
              var o2 = ht("source");
              o2.src = this._url[n2], i3.appendChild(o2);
            }
          }
        } }), sn = We.extend({ options: { offset: [0, 7], className: "", pane: "popupPane" }, initialize: function(t2, i3) {
          l(this, t2), this._source = i3;
        }, onAdd: function(t2) {
          this._zoomAnimated = t2._zoomAnimated, this._container || this._initLayout(), t2._fadeAnimated && vt(this._container, 0), clearTimeout(this._removeTimeout), this.getPane().appendChild(this._container), this.update(), t2._fadeAnimated && vt(this._container, 1), this.bringToFront();
        }, onRemove: function(t2) {
          t2._fadeAnimated ? (vt(this._container, 0), this._removeTimeout = setTimeout(e(ut, void 0, this._container), 200)) : ut(this._container);
        }, getLatLng: function() {
          return this._latlng;
        }, setLatLng: function(t2) {
          return this._latlng = C(t2), this._map && (this._updatePosition(), this._adjustPan()), this;
        }, getContent: function() {
          return this._content;
        }, setContent: function(t2) {
          return this._content = t2, this.update(), this;
        }, getElement: function() {
          return this._container;
        }, update: function() {
          this._map && (this._container.style.visibility = "hidden", this._updateContent(), this._updateLayout(), this._updatePosition(), this._container.style.visibility = "", this._adjustPan());
        }, getEvents: function() {
          var t2 = { zoom: this._updatePosition, viewreset: this._updatePosition };
          return this._zoomAnimated && (t2.zoomanim = this._animateZoom), t2;
        }, isOpen: function() {
          return !!this._map && this._map.hasLayer(this);
        }, bringToFront: function() {
          return this._map && ct(this._container), this;
        }, bringToBack: function() {
          return this._map && _t(this._container), this;
        }, _updateContent: function() {
          if (this._content) {
            var t2 = this._contentNode, i3 = "function" == typeof this._content ? this._content(this._source || this) : this._content;
            if ("string" == typeof i3)
              t2.innerHTML = i3;
            else {
              for (; t2.hasChildNodes(); )
                t2.removeChild(t2.firstChild);
              t2.appendChild(i3);
            }
            this.fire("contentupdate");
          }
        }, _updatePosition: function() {
          if (this._map) {
            var t2 = this._map.latLngToLayerPoint(this._latlng), i3 = w(this.options.offset), e2 = this._getAnchor();
            this._zoomAnimated ? Lt(this._container, t2.add(e2)) : i3 = i3.add(t2).add(e2);
            var n2 = this._containerBottom = -i3.y, o2 = this._containerLeft = -Math.round(this._containerWidth / 2) + i3.x;
            this._container.style.bottom = n2 + "px", this._container.style.left = o2 + "px";
          }
        }, _getAnchor: function() {
          return [0, 0];
        } }), rn = sn.extend({ options: { maxWidth: 300, minWidth: 50, maxHeight: null, autoPan: true, autoPanPaddingTopLeft: null, autoPanPaddingBottomRight: null, autoPanPadding: [5, 5], keepInView: false, closeButton: true, autoClose: true, className: "" }, openOn: function(t2) {
          return t2.openPopup(this), this;
        }, onAdd: function(t2) {
          sn.prototype.onAdd.call(this, t2), t2.fire("popupopen", { popup: this }), this._source && (this._source.fire("popupopen", { popup: this }, true), this._source instanceof Ke || this._source.on("preclick", Y));
        }, onRemove: function(t2) {
          sn.prototype.onRemove.call(this, t2), t2.fire("popupclose", { popup: this }), this._source && (this._source.fire("popupclose", { popup: this }, true), this._source instanceof Ke || this._source.off("preclick", Y));
        }, getEvents: function() {
          var t2 = sn.prototype.getEvents.call(this);
          return (void 0 !== this.options.closeOnClick ? this.options.closeOnClick : this._map.options.closePopupOnClick) && (t2.preclick = this._close), this.options.keepInView && (t2.moveend = this._adjustPan), t2;
        }, _close: function() {
          this._map && this._map.closePopup(this);
        }, _initLayout: function() {
          var t2 = "leaflet-popup", i3 = this._container = ht("div", t2 + " " + (this.options.className || "") + " leaflet-zoom-animated"), e2 = this._wrapper = ht("div", t2 + "-content-wrapper", i3);
          if (this._contentNode = ht("div", t2 + "-content", e2), J(e2), X(this._contentNode), V(e2, "contextmenu", Y), this._tipContainer = ht("div", t2 + "-tip-container", i3), this._tip = ht("div", t2 + "-tip", this._tipContainer), this.options.closeButton) {
            var n2 = this._closeButton = ht("a", t2 + "-close-button", i3);
            n2.href = "#close", n2.innerHTML = "&#215;", V(n2, "click", this._onCloseButtonClick, this);
          }
        }, _updateLayout: function() {
          var t2 = this._contentNode, i3 = t2.style;
          i3.width = "", i3.whiteSpace = "nowrap";
          var e2 = t2.offsetWidth;
          e2 = Math.min(e2, this.options.maxWidth), e2 = Math.max(e2, this.options.minWidth), i3.width = e2 + 1 + "px", i3.whiteSpace = "", i3.height = "";
          var n2 = t2.offsetHeight, o2 = this.options.maxHeight;
          o2 && n2 > o2 ? (i3.height = o2 + "px", pt(t2, "leaflet-popup-scrolled")) : mt(t2, "leaflet-popup-scrolled"), this._containerWidth = this._container.offsetWidth;
        }, _animateZoom: function(t2) {
          var i3 = this._map._latLngToNewLayerPoint(this._latlng, t2.zoom, t2.center), e2 = this._getAnchor();
          Lt(this._container, i3.add(e2));
        }, _adjustPan: function() {
          if (!(!this.options.autoPan || this._map._panAnim && this._map._panAnim._inProgress)) {
            var t2 = this._map, i3 = parseInt(at(this._container, "marginBottom"), 10) || 0, e2 = this._container.offsetHeight + i3, n2 = this._containerWidth, o2 = new x(this._containerLeft, -e2 - this._containerBottom);
            o2._add(Pt(this._container));
            var s2 = t2.layerPointToContainerPoint(o2), r2 = w(this.options.autoPanPadding), a2 = w(this.options.autoPanPaddingTopLeft || r2), h2 = w(this.options.autoPanPaddingBottomRight || r2), u2 = t2.getSize(), l2 = 0, c2 = 0;
            s2.x + n2 + h2.x > u2.x && (l2 = s2.x + n2 - u2.x + h2.x), s2.x - l2 - a2.x < 0 && (l2 = s2.x - a2.x), s2.y + e2 + h2.y > u2.y && (c2 = s2.y + e2 - u2.y + h2.y), s2.y - c2 - a2.y < 0 && (c2 = s2.y - a2.y), (l2 || c2) && t2.fire("autopanstart").panBy([l2, c2]);
          }
        }, _onCloseButtonClick: function(t2) {
          this._close(), Q(t2);
        }, _getAnchor: function() {
          return w(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);
        } });
        ye.mergeOptions({ closePopupOnClick: true }), ye.include({ openPopup: function(t2, i3, e2) {
          return t2 instanceof rn || (t2 = new rn(e2).setContent(t2)), i3 && t2.setLatLng(i3), this.hasLayer(t2) ? this : (this._popup && this._popup.options.autoClose && this.closePopup(), this._popup = t2, this.addLayer(t2));
        }, closePopup: function(t2) {
          return t2 && t2 !== this._popup || (t2 = this._popup, this._popup = null), t2 && this.removeLayer(t2), this;
        } }), We.include({ bindPopup: function(t2, i3) {
          return t2 instanceof rn ? (l(t2, i3), this._popup = t2, t2._source = this) : (this._popup && !i3 || (this._popup = new rn(i3, this)), this._popup.setContent(t2)), this._popupHandlersAdded || (this.on({ click: this._openPopup, keypress: this._onKeyPress, remove: this.closePopup, move: this._movePopup }), this._popupHandlersAdded = true), this;
        }, unbindPopup: function() {
          return this._popup && (this.off({ click: this._openPopup, keypress: this._onKeyPress, remove: this.closePopup, move: this._movePopup }), this._popupHandlersAdded = false, this._popup = null), this;
        }, openPopup: function(t2, i3) {
          if (t2 instanceof We || (i3 = t2, t2 = this), t2 instanceof Fe)
            for (var e2 in this._layers) {
              t2 = this._layers[e2];
              break;
            }
          return i3 || (i3 = t2.getCenter ? t2.getCenter() : t2.getLatLng()), this._popup && this._map && (this._popup._source = t2, this._popup.update(), this._map.openPopup(this._popup, i3)), this;
        }, closePopup: function() {
          return this._popup && this._popup._close(), this;
        }, togglePopup: function(t2) {
          return this._popup && (this._popup._map ? this.closePopup() : this.openPopup(t2)), this;
        }, isPopupOpen: function() {
          return !!this._popup && this._popup.isOpen();
        }, setPopupContent: function(t2) {
          return this._popup && this._popup.setContent(t2), this;
        }, getPopup: function() {
          return this._popup;
        }, _openPopup: function(t2) {
          var i3 = t2.layer || t2.target;
          this._popup && this._map && (Q(t2), i3 instanceof Ke ? this.openPopup(t2.layer || t2.target, t2.latlng) : this._map.hasLayer(this._popup) && this._popup._source === i3 ? this.closePopup() : this.openPopup(i3, t2.latlng));
        }, _movePopup: function(t2) {
          this._popup.setLatLng(t2.latlng);
        }, _onKeyPress: function(t2) {
          13 === t2.originalEvent.keyCode && this._openPopup(t2);
        } });
        var an = sn.extend({ options: { pane: "tooltipPane", offset: [0, 0], direction: "auto", permanent: false, sticky: false, interactive: false, opacity: 0.9 }, onAdd: function(t2) {
          sn.prototype.onAdd.call(this, t2), this.setOpacity(this.options.opacity), t2.fire("tooltipopen", { tooltip: this }), this._source && this._source.fire("tooltipopen", { tooltip: this }, true);
        }, onRemove: function(t2) {
          sn.prototype.onRemove.call(this, t2), t2.fire("tooltipclose", { tooltip: this }), this._source && this._source.fire("tooltipclose", { tooltip: this }, true);
        }, getEvents: function() {
          var t2 = sn.prototype.getEvents.call(this);
          return Hi && !this.options.permanent && (t2.preclick = this._close), t2;
        }, _close: function() {
          this._map && this._map.closeTooltip(this);
        }, _initLayout: function() {
          var t2 = "leaflet-tooltip " + (this.options.className || "") + " leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide");
          this._contentNode = this._container = ht("div", t2);
        }, _updateLayout: function() {
        }, _adjustPan: function() {
        }, _setPosition: function(t2) {
          var i3 = this._map, e2 = this._container, n2 = i3.latLngToContainerPoint(i3.getCenter()), o2 = i3.layerPointToContainerPoint(t2), s2 = this.options.direction, r2 = e2.offsetWidth, a2 = e2.offsetHeight, h2 = w(this.options.offset), u2 = this._getAnchor();
          "top" === s2 ? t2 = t2.add(w(-r2 / 2 + h2.x, -a2 + h2.y + u2.y, true)) : "bottom" === s2 ? t2 = t2.subtract(w(r2 / 2 - h2.x, -h2.y, true)) : "center" === s2 ? t2 = t2.subtract(w(r2 / 2 + h2.x, a2 / 2 - u2.y + h2.y, true)) : "right" === s2 || "auto" === s2 && o2.x < n2.x ? (s2 = "right", t2 = t2.add(w(h2.x + u2.x, u2.y - a2 / 2 + h2.y, true))) : (s2 = "left", t2 = t2.subtract(w(r2 + u2.x - h2.x, a2 / 2 - u2.y - h2.y, true))), mt(e2, "leaflet-tooltip-right"), mt(e2, "leaflet-tooltip-left"), mt(e2, "leaflet-tooltip-top"), mt(e2, "leaflet-tooltip-bottom"), pt(e2, "leaflet-tooltip-" + s2), Lt(e2, t2);
        }, _updatePosition: function() {
          var t2 = this._map.latLngToLayerPoint(this._latlng);
          this._setPosition(t2);
        }, setOpacity: function(t2) {
          this.options.opacity = t2, this._container && vt(this._container, t2);
        }, _animateZoom: function(t2) {
          var i3 = this._map._latLngToNewLayerPoint(this._latlng, t2.zoom, t2.center);
          this._setPosition(i3);
        }, _getAnchor: function() {
          return w(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);
        } });
        ye.include({ openTooltip: function(t2, i3, e2) {
          return t2 instanceof an || (t2 = new an(e2).setContent(t2)), i3 && t2.setLatLng(i3), this.hasLayer(t2) ? this : this.addLayer(t2);
        }, closeTooltip: function(t2) {
          return t2 && this.removeLayer(t2), this;
        } }), We.include({ bindTooltip: function(t2, i3) {
          return t2 instanceof an ? (l(t2, i3), this._tooltip = t2, t2._source = this) : (this._tooltip && !i3 || (this._tooltip = new an(i3, this)), this._tooltip.setContent(t2)), this._initTooltipInteractions(), this._tooltip.options.permanent && this._map && this._map.hasLayer(this) && this.openTooltip(), this;
        }, unbindTooltip: function() {
          return this._tooltip && (this._initTooltipInteractions(true), this.closeTooltip(), this._tooltip = null), this;
        }, _initTooltipInteractions: function(t2) {
          if (t2 || !this._tooltipHandlersAdded) {
            var i3 = t2 ? "off" : "on", e2 = { remove: this.closeTooltip, move: this._moveTooltip };
            this._tooltip.options.permanent ? e2.add = this._openTooltip : (e2.mouseover = this._openTooltip, e2.mouseout = this.closeTooltip, this._tooltip.options.sticky && (e2.mousemove = this._moveTooltip), Hi && (e2.click = this._openTooltip)), this[i3](e2), this._tooltipHandlersAdded = !t2;
          }
        }, openTooltip: function(t2, i3) {
          if (t2 instanceof We || (i3 = t2, t2 = this), t2 instanceof Fe)
            for (var e2 in this._layers) {
              t2 = this._layers[e2];
              break;
            }
          return i3 || (i3 = t2.getCenter ? t2.getCenter() : t2.getLatLng()), this._tooltip && this._map && (this._tooltip._source = t2, this._tooltip.update(), this._map.openTooltip(this._tooltip, i3), this._tooltip.options.interactive && this._tooltip._container && (pt(this._tooltip._container, "leaflet-clickable"), this.addInteractiveTarget(this._tooltip._container))), this;
        }, closeTooltip: function() {
          return this._tooltip && (this._tooltip._close(), this._tooltip.options.interactive && this._tooltip._container && (mt(this._tooltip._container, "leaflet-clickable"), this.removeInteractiveTarget(this._tooltip._container))), this;
        }, toggleTooltip: function(t2) {
          return this._tooltip && (this._tooltip._map ? this.closeTooltip() : this.openTooltip(t2)), this;
        }, isTooltipOpen: function() {
          return this._tooltip.isOpen();
        }, setTooltipContent: function(t2) {
          return this._tooltip && this._tooltip.setContent(t2), this;
        }, getTooltip: function() {
          return this._tooltip;
        }, _openTooltip: function(t2) {
          var i3 = t2.layer || t2.target;
          this._tooltip && this._map && this.openTooltip(i3, this._tooltip.options.sticky ? t2.latlng : void 0);
        }, _moveTooltip: function(t2) {
          var i3, e2, n2 = t2.latlng;
          this._tooltip.options.sticky && t2.originalEvent && (i3 = this._map.mouseEventToContainerPoint(t2.originalEvent), e2 = this._map.containerPointToLayerPoint(i3), n2 = this._map.layerPointToLatLng(e2)), this._tooltip.setLatLng(n2);
        } });
        var hn = Ue.extend({ options: { iconSize: [12, 12], html: false, bgPos: null, className: "leaflet-div-icon" }, createIcon: function(t2) {
          var i3 = t2 && "DIV" === t2.tagName ? t2 : document.createElement("div"), e2 = this.options;
          if (i3.innerHTML = false !== e2.html ? e2.html : "", e2.bgPos) {
            var n2 = w(e2.bgPos);
            i3.style.backgroundPosition = -n2.x + "px " + -n2.y + "px";
          }
          return this._setIconStyles(i3, "icon"), i3;
        }, createShadow: function() {
          return null;
        } });
        Ue.Default = Ve;
        var un = We.extend({ options: { tileSize: 256, opacity: 1, updateWhenIdle: Ri, updateWhenZooming: true, updateInterval: 200, zIndex: 1, bounds: null, minZoom: 0, maxZoom: void 0, maxNativeZoom: void 0, minNativeZoom: void 0, noWrap: false, pane: "tilePane", className: "", keepBuffer: 2 }, initialize: function(t2) {
          l(this, t2);
        }, onAdd: function() {
          this._initContainer(), this._levels = {}, this._tiles = {}, this._resetView(), this._update();
        }, beforeAdd: function(t2) {
          t2._addZoomLimit(this);
        }, onRemove: function(t2) {
          this._removeAllTiles(), ut(this._container), t2._removeZoomLimit(this), this._container = null, this._tileZoom = null;
        }, bringToFront: function() {
          return this._map && (ct(this._container), this._setAutoZIndex(Math.max)), this;
        }, bringToBack: function() {
          return this._map && (_t(this._container), this._setAutoZIndex(Math.min)), this;
        }, getContainer: function() {
          return this._container;
        }, setOpacity: function(t2) {
          return this.options.opacity = t2, this._updateOpacity(), this;
        }, setZIndex: function(t2) {
          return this.options.zIndex = t2, this._updateZIndex(), this;
        }, isLoading: function() {
          return this._loading;
        }, redraw: function() {
          return this._map && (this._removeAllTiles(), this._update()), this;
        }, getEvents: function() {
          var t2 = { viewprereset: this._invalidateAll, viewreset: this._resetView, zoom: this._resetView, moveend: this._onMoveEnd };
          return this.options.updateWhenIdle || (this._onMove || (this._onMove = o(this._onMoveEnd, this.options.updateInterval, this)), t2.move = this._onMove), this._zoomAnimated && (t2.zoomanim = this._animateZoom), t2;
        }, createTile: function() {
          return document.createElement("div");
        }, getTileSize: function() {
          var t2 = this.options.tileSize;
          return t2 instanceof x ? t2 : new x(t2, t2);
        }, _updateZIndex: function() {
          this._container && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this._container.style.zIndex = this.options.zIndex);
        }, _setAutoZIndex: function(t2) {
          for (var i3, e2 = this.getPane().children, n2 = -t2(-1 / 0, 1 / 0), o2 = 0, s2 = e2.length; o2 < s2; o2++)
            i3 = e2[o2].style.zIndex, e2[o2] !== this._container && i3 && (n2 = t2(n2, +i3));
          isFinite(n2) && (this.options.zIndex = n2 + t2(-1, 1), this._updateZIndex());
        }, _updateOpacity: function() {
          if (this._map && !wi) {
            vt(this._container, this.options.opacity);
            var t2 = +new Date(), i3 = false, e2 = false;
            for (var n2 in this._tiles) {
              var o2 = this._tiles[n2];
              if (o2.current && o2.loaded) {
                var s2 = Math.min(1, (t2 - o2.loaded) / 200);
                vt(o2.el, s2), s2 < 1 ? i3 = true : (o2.active ? e2 = true : this._onOpaqueTile(o2), o2.active = true);
              }
            }
            e2 && !this._noPrune && this._pruneTiles(), i3 && (g(this._fadeFrame), this._fadeFrame = f(this._updateOpacity, this));
          }
        }, _onOpaqueTile: r, _initContainer: function() {
          this._container || (this._container = ht("div", "leaflet-layer " + (this.options.className || "")), this._updateZIndex(), this.options.opacity < 1 && this._updateOpacity(), this.getPane().appendChild(this._container));
        }, _updateLevels: function() {
          var t2 = this._tileZoom, i3 = this.options.maxZoom;
          if (void 0 !== t2) {
            for (var e2 in this._levels)
              this._levels[e2].el.children.length || e2 === t2 ? (this._levels[e2].el.style.zIndex = i3 - Math.abs(t2 - e2), this._onUpdateLevel(e2)) : (ut(this._levels[e2].el), this._removeTilesAtZoom(e2), this._onRemoveLevel(e2), delete this._levels[e2]);
            var n2 = this._levels[t2], o2 = this._map;
            return n2 || ((n2 = this._levels[t2] = {}).el = ht("div", "leaflet-tile-container leaflet-zoom-animated", this._container), n2.el.style.zIndex = i3, n2.origin = o2.project(o2.unproject(o2.getPixelOrigin()), t2).round(), n2.zoom = t2, this._setZoomTransform(n2, o2.getCenter(), o2.getZoom()), n2.el.offsetWidth, this._onCreateLevel(n2)), this._level = n2, n2;
          }
        }, _onUpdateLevel: r, _onRemoveLevel: r, _onCreateLevel: r, _pruneTiles: function() {
          if (this._map) {
            var t2, i3, e2 = this._map.getZoom();
            if (e2 > this.options.maxZoom || e2 < this.options.minZoom)
              this._removeAllTiles();
            else {
              for (t2 in this._tiles)
                (i3 = this._tiles[t2]).retain = i3.current;
              for (t2 in this._tiles)
                if ((i3 = this._tiles[t2]).current && !i3.active) {
                  var n2 = i3.coords;
                  this._retainParent(n2.x, n2.y, n2.z, n2.z - 5) || this._retainChildren(n2.x, n2.y, n2.z, n2.z + 2);
                }
              for (t2 in this._tiles)
                this._tiles[t2].retain || this._removeTile(t2);
            }
          }
        }, _removeTilesAtZoom: function(t2) {
          for (var i3 in this._tiles)
            this._tiles[i3].coords.z === t2 && this._removeTile(i3);
        }, _removeAllTiles: function() {
          for (var t2 in this._tiles)
            this._removeTile(t2);
        }, _invalidateAll: function() {
          for (var t2 in this._levels)
            ut(this._levels[t2].el), this._onRemoveLevel(t2), delete this._levels[t2];
          this._removeAllTiles(), this._tileZoom = null;
        }, _retainParent: function(t2, i3, e2, n2) {
          var o2 = Math.floor(t2 / 2), s2 = Math.floor(i3 / 2), r2 = e2 - 1, a2 = new x(+o2, +s2);
          a2.z = +r2;
          var h2 = this._tileCoordsToKey(a2), u2 = this._tiles[h2];
          return u2 && u2.active ? (u2.retain = true, true) : (u2 && u2.loaded && (u2.retain = true), r2 > n2 && this._retainParent(o2, s2, r2, n2));
        }, _retainChildren: function(t2, i3, e2, n2) {
          for (var o2 = 2 * t2; o2 < 2 * t2 + 2; o2++)
            for (var s2 = 2 * i3; s2 < 2 * i3 + 2; s2++) {
              var r2 = new x(o2, s2);
              r2.z = e2 + 1;
              var a2 = this._tileCoordsToKey(r2), h2 = this._tiles[a2];
              h2 && h2.active ? h2.retain = true : (h2 && h2.loaded && (h2.retain = true), e2 + 1 < n2 && this._retainChildren(o2, s2, e2 + 1, n2));
            }
        }, _resetView: function(t2) {
          var i3 = t2 && (t2.pinch || t2.flyTo);
          this._setView(this._map.getCenter(), this._map.getZoom(), i3, i3);
        }, _animateZoom: function(t2) {
          this._setView(t2.center, t2.zoom, true, t2.noUpdate);
        }, _clampZoom: function(t2) {
          var i3 = this.options;
          return void 0 !== i3.minNativeZoom && t2 < i3.minNativeZoom ? i3.minNativeZoom : void 0 !== i3.maxNativeZoom && i3.maxNativeZoom < t2 ? i3.maxNativeZoom : t2;
        }, _setView: function(t2, i3, e2, n2) {
          var o2 = this._clampZoom(Math.round(i3));
          (void 0 !== this.options.maxZoom && o2 > this.options.maxZoom || void 0 !== this.options.minZoom && o2 < this.options.minZoom) && (o2 = void 0);
          var s2 = this.options.updateWhenZooming && o2 !== this._tileZoom;
          n2 && !s2 || (this._tileZoom = o2, this._abortLoading && this._abortLoading(), this._updateLevels(), this._resetGrid(), void 0 !== o2 && this._update(t2), e2 || this._pruneTiles(), this._noPrune = !!e2), this._setZoomTransforms(t2, i3);
        }, _setZoomTransforms: function(t2, i3) {
          for (var e2 in this._levels)
            this._setZoomTransform(this._levels[e2], t2, i3);
        }, _setZoomTransform: function(t2, i3, e2) {
          var n2 = this._map.getZoomScale(e2, t2.zoom), o2 = t2.origin.multiplyBy(n2).subtract(this._map._getNewPixelOrigin(i3, e2)).round();
          Oi ? wt(t2.el, o2, n2) : Lt(t2.el, o2);
        }, _resetGrid: function() {
          var t2 = this._map, i3 = t2.options.crs, e2 = this._tileSize = this.getTileSize(), n2 = this._tileZoom, o2 = this._map.getPixelWorldBounds(this._tileZoom);
          o2 && (this._globalTileRange = this._pxBoundsToTileRange(o2)), this._wrapX = i3.wrapLng && !this.options.noWrap && [Math.floor(t2.project([0, i3.wrapLng[0]], n2).x / e2.x), Math.ceil(t2.project([0, i3.wrapLng[1]], n2).x / e2.y)], this._wrapY = i3.wrapLat && !this.options.noWrap && [Math.floor(t2.project([i3.wrapLat[0], 0], n2).y / e2.x), Math.ceil(t2.project([i3.wrapLat[1], 0], n2).y / e2.y)];
        }, _onMoveEnd: function() {
          this._map && !this._map._animatingZoom && this._update();
        }, _getTiledPixelBounds: function(t2) {
          var i3 = this._map, e2 = i3._animatingZoom ? Math.max(i3._animateToZoom, i3.getZoom()) : i3.getZoom(), n2 = i3.getZoomScale(e2, this._tileZoom), o2 = i3.project(t2, this._tileZoom).floor(), s2 = i3.getSize().divideBy(2 * n2);
          return new P(o2.subtract(s2), o2.add(s2));
        }, _update: function(t2) {
          var i3 = this._map;
          if (i3) {
            var e2 = this._clampZoom(i3.getZoom());
            if (void 0 === t2 && (t2 = i3.getCenter()), void 0 !== this._tileZoom) {
              var n2 = this._getTiledPixelBounds(t2), o2 = this._pxBoundsToTileRange(n2), s2 = o2.getCenter(), r2 = [], a2 = this.options.keepBuffer, h2 = new P(o2.getBottomLeft().subtract([a2, -a2]), o2.getTopRight().add([a2, -a2]));
              if (!(isFinite(o2.min.x) && isFinite(o2.min.y) && isFinite(o2.max.x) && isFinite(o2.max.y)))
                throw new Error("Attempted to load an infinite number of tiles");
              for (var u2 in this._tiles) {
                var l2 = this._tiles[u2].coords;
                l2.z === this._tileZoom && h2.contains(new x(l2.x, l2.y)) || (this._tiles[u2].current = false);
              }
              if (Math.abs(e2 - this._tileZoom) > 1)
                this._setView(t2, e2);
              else {
                for (var c2 = o2.min.y; c2 <= o2.max.y; c2++)
                  for (var _2 = o2.min.x; _2 <= o2.max.x; _2++) {
                    var d2 = new x(_2, c2);
                    d2.z = this._tileZoom, this._isValidTile(d2) && (this._tiles[this._tileCoordsToKey(d2)] || r2.push(d2));
                  }
                if (r2.sort(function(t3, i4) {
                  return t3.distanceTo(s2) - i4.distanceTo(s2);
                }), 0 !== r2.length) {
                  this._loading || (this._loading = true, this.fire("loading"));
                  var p2 = document.createDocumentFragment();
                  for (_2 = 0; _2 < r2.length; _2++)
                    this._addTile(r2[_2], p2);
                  this._level.el.appendChild(p2);
                }
              }
            }
          }
        }, _isValidTile: function(t2) {
          var i3 = this._map.options.crs;
          if (!i3.infinite) {
            var e2 = this._globalTileRange;
            if (!i3.wrapLng && (t2.x < e2.min.x || t2.x > e2.max.x) || !i3.wrapLat && (t2.y < e2.min.y || t2.y > e2.max.y))
              return false;
          }
          if (!this.options.bounds)
            return true;
          var n2 = this._tileCoordsToBounds(t2);
          return z(this.options.bounds).overlaps(n2);
        }, _keyToBounds: function(t2) {
          return this._tileCoordsToBounds(this._keyToTileCoords(t2));
        }, _tileCoordsToBounds: function(t2) {
          var i3 = this._map, e2 = this.getTileSize(), n2 = t2.scaleBy(e2), o2 = n2.add(e2), s2 = new T(i3.unproject(n2, t2.z), i3.unproject(o2, t2.z));
          return this.options.noWrap || i3.wrapLatLngBounds(s2), s2;
        }, _tileCoordsToKey: function(t2) {
          return t2.x + ":" + t2.y + ":" + t2.z;
        }, _keyToTileCoords: function(t2) {
          var i3 = t2.split(":"), e2 = new x(+i3[0], +i3[1]);
          return e2.z = +i3[2], e2;
        }, _removeTile: function(t2) {
          var i3 = this._tiles[t2];
          i3 && (ut(i3.el), delete this._tiles[t2], this.fire("tileunload", { tile: i3.el, coords: this._keyToTileCoords(t2) }));
        }, _initTile: function(t2) {
          pt(t2, "leaflet-tile");
          var i3 = this.getTileSize();
          t2.style.width = i3.x + "px", t2.style.height = i3.y + "px", t2.onselectstart = r, t2.onmousemove = r, wi && this.options.opacity < 1 && vt(t2, this.options.opacity), bi && !Ti && (t2.style.WebkitBackfaceVisibility = "hidden");
        }, _addTile: function(t2, i3) {
          var n2 = this._getTilePos(t2), o2 = this._tileCoordsToKey(t2), s2 = this.createTile(this._wrapCoords(t2), e(this._tileReady, this, t2));
          this._initTile(s2), this.createTile.length < 2 && f(e(this._tileReady, this, t2, null, s2)), Lt(s2, n2), this._tiles[o2] = { el: s2, coords: t2, current: true }, i3.appendChild(s2), this.fire("tileloadstart", { tile: s2, coords: t2 });
        }, _tileReady: function(t2, i3, n2) {
          if (this._map) {
            i3 && this.fire("tileerror", { error: i3, tile: n2, coords: t2 });
            var o2 = this._tileCoordsToKey(t2);
            (n2 = this._tiles[o2]) && (n2.loaded = +new Date(), this._map._fadeAnimated ? (vt(n2.el, 0), g(this._fadeFrame), this._fadeFrame = f(this._updateOpacity, this)) : (n2.active = true, this._pruneTiles()), i3 || (pt(n2.el, "leaflet-tile-loaded"), this.fire("tileload", { tile: n2.el, coords: t2 })), this._noTilesToLoad() && (this._loading = false, this.fire("load"), wi || !this._map._fadeAnimated ? f(this._pruneTiles, this) : setTimeout(e(this._pruneTiles, this), 250)));
          }
        }, _getTilePos: function(t2) {
          return t2.scaleBy(this.getTileSize()).subtract(this._level.origin);
        }, _wrapCoords: function(t2) {
          var i3 = new x(this._wrapX ? s(t2.x, this._wrapX) : t2.x, this._wrapY ? s(t2.y, this._wrapY) : t2.y);
          return i3.z = t2.z, i3;
        }, _pxBoundsToTileRange: function(t2) {
          var i3 = this.getTileSize();
          return new P(t2.min.unscaleBy(i3).floor(), t2.max.unscaleBy(i3).ceil().subtract([1, 1]));
        }, _noTilesToLoad: function() {
          for (var t2 in this._tiles)
            if (!this._tiles[t2].loaded)
              return false;
          return true;
        } }), ln = un.extend({ options: { minZoom: 0, maxZoom: 18, subdomains: "abc", errorTileUrl: "", zoomOffset: 0, tms: false, zoomReverse: false, detectRetina: false, crossOrigin: false }, initialize: function(t2, i3) {
          this._url = t2, (i3 = l(this, i3)).detectRetina && Vi && i3.maxZoom > 0 && (i3.tileSize = Math.floor(i3.tileSize / 2), i3.zoomReverse ? (i3.zoomOffset--, i3.minZoom++) : (i3.zoomOffset++, i3.maxZoom--), i3.minZoom = Math.max(0, i3.minZoom)), "string" == typeof i3.subdomains && (i3.subdomains = i3.subdomains.split("")), bi || this.on("tileunload", this._onTileRemove);
        }, setUrl: function(t2, i3) {
          return this._url = t2, i3 || this.redraw(), this;
        }, createTile: function(t2, i3) {
          var n2 = document.createElement("img");
          return V(n2, "load", e(this._tileOnLoad, this, i3, n2)), V(n2, "error", e(this._tileOnError, this, i3, n2)), this.options.crossOrigin && (n2.crossOrigin = ""), n2.alt = "", n2.setAttribute("role", "presentation"), n2.src = this.getTileUrl(t2), n2;
        }, getTileUrl: function(t2) {
          var e2 = { r: Vi ? "@2x" : "", s: this._getSubdomain(t2), x: t2.x, y: t2.y, z: this._getZoomForUrl() };
          if (this._map && !this._map.options.crs.infinite) {
            var n2 = this._globalTileRange.max.y - t2.y;
            this.options.tms && (e2.y = n2), e2["-y"] = n2;
          }
          return _(this._url, i2(e2, this.options));
        }, _tileOnLoad: function(t2, i3) {
          wi ? setTimeout(e(t2, this, null, i3), 0) : t2(null, i3);
        }, _tileOnError: function(t2, i3, e2) {
          var n2 = this.options.errorTileUrl;
          n2 && i3.src !== n2 && (i3.src = n2), t2(e2, i3);
        }, _onTileRemove: function(t2) {
          t2.tile.onload = null;
        }, _getZoomForUrl: function() {
          var t2 = this._tileZoom, i3 = this.options.maxZoom, e2 = this.options.zoomReverse, n2 = this.options.zoomOffset;
          return e2 && (t2 = i3 - t2), t2 + n2;
        }, _getSubdomain: function(t2) {
          var i3 = Math.abs(t2.x + t2.y) % this.options.subdomains.length;
          return this.options.subdomains[i3];
        }, _abortLoading: function() {
          var t2, i3;
          for (t2 in this._tiles)
            this._tiles[t2].coords.z !== this._tileZoom && ((i3 = this._tiles[t2].el).onload = r, i3.onerror = r, i3.complete || (i3.src = ni, ut(i3)));
        } }), cn = ln.extend({ defaultWmsParams: { service: "WMS", request: "GetMap", layers: "", styles: "", format: "image/jpeg", transparent: false, version: "1.1.1" }, options: { crs: null, uppercase: false }, initialize: function(t2, e2) {
          this._url = t2;
          var n2 = i2({}, this.defaultWmsParams);
          for (var o2 in e2)
            o2 in this.options || (n2[o2] = e2[o2]);
          e2 = l(this, e2), n2.width = n2.height = e2.tileSize * (e2.detectRetina && Vi ? 2 : 1), this.wmsParams = n2;
        }, onAdd: function(t2) {
          this._crs = this.options.crs || t2.options.crs, this._wmsVersion = parseFloat(this.wmsParams.version);
          var i3 = this._wmsVersion >= 1.3 ? "crs" : "srs";
          this.wmsParams[i3] = this._crs.code, ln.prototype.onAdd.call(this, t2);
        }, getTileUrl: function(t2) {
          var i3 = this._tileCoordsToBounds(t2), e2 = this._crs.project(i3.getNorthWest()), n2 = this._crs.project(i3.getSouthEast()), o2 = (this._wmsVersion >= 1.3 && this._crs === Ne ? [n2.y, e2.x, e2.y, n2.x] : [e2.x, n2.y, n2.x, e2.y]).join(","), s2 = ln.prototype.getTileUrl.call(this, t2);
          return s2 + c(this.wmsParams, s2, this.options.uppercase) + (this.options.uppercase ? "&BBOX=" : "&bbox=") + o2;
        }, setParams: function(t2, e2) {
          return i2(this.wmsParams, t2), e2 || this.redraw(), this;
        } });
        ln.WMS = cn, Yt.wms = function(t2, i3) {
          return new cn(t2, i3);
        };
        var _n = We.extend({ options: { padding: 0.1 }, initialize: function(t2) {
          l(this, t2), n(this), this._layers = this._layers || {};
        }, onAdd: function() {
          this._container || (this._initContainer(), this._zoomAnimated && pt(this._container, "leaflet-zoom-animated")), this.getPane().appendChild(this._container), this._update(), this.on("update", this._updatePaths, this);
        }, onRemove: function() {
          this.off("update", this._updatePaths, this), this._destroyContainer();
        }, getEvents: function() {
          var t2 = { viewreset: this._reset, zoom: this._onZoom, moveend: this._update, zoomend: this._onZoomEnd };
          return this._zoomAnimated && (t2.zoomanim = this._onAnimZoom), t2;
        }, _onAnimZoom: function(t2) {
          this._updateTransform(t2.center, t2.zoom);
        }, _onZoom: function() {
          this._updateTransform(this._map.getCenter(), this._map.getZoom());
        }, _updateTransform: function(t2, i3) {
          var e2 = this._map.getZoomScale(i3, this._zoom), n2 = Pt(this._container), o2 = this._map.getSize().multiplyBy(0.5 + this.options.padding), s2 = this._map.project(this._center, i3), r2 = this._map.project(t2, i3).subtract(s2), a2 = o2.multiplyBy(-e2).add(n2).add(o2).subtract(r2);
          Oi ? wt(this._container, a2, e2) : Lt(this._container, a2);
        }, _reset: function() {
          this._update(), this._updateTransform(this._center, this._zoom);
          for (var t2 in this._layers)
            this._layers[t2]._reset();
        }, _onZoomEnd: function() {
          for (var t2 in this._layers)
            this._layers[t2]._project();
        }, _updatePaths: function() {
          for (var t2 in this._layers)
            this._layers[t2]._update();
        }, _update: function() {
          var t2 = this.options.padding, i3 = this._map.getSize(), e2 = this._map.containerPointToLayerPoint(i3.multiplyBy(-t2)).round();
          this._bounds = new P(e2, e2.add(i3.multiplyBy(1 + 2 * t2)).round()), this._center = this._map.getCenter(), this._zoom = this._map.getZoom();
        } }), dn = _n.extend({ getEvents: function() {
          var t2 = _n.prototype.getEvents.call(this);
          return t2.viewprereset = this._onViewPreReset, t2;
        }, _onViewPreReset: function() {
          this._postponeUpdatePaths = true;
        }, onAdd: function() {
          _n.prototype.onAdd.call(this), this._draw();
        }, _initContainer: function() {
          var t2 = this._container = document.createElement("canvas");
          V(t2, "mousemove", o(this._onMouseMove, 32, this), this), V(t2, "click dblclick mousedown mouseup contextmenu", this._onClick, this), V(t2, "mouseout", this._handleMouseOut, this), this._ctx = t2.getContext("2d");
        }, _destroyContainer: function() {
          delete this._ctx, ut(this._container), G(this._container), delete this._container;
        }, _updatePaths: function() {
          if (!this._postponeUpdatePaths) {
            this._redrawBounds = null;
            for (var t2 in this._layers)
              this._layers[t2]._update();
            this._redraw();
          }
        }, _update: function() {
          if (!this._map._animatingZoom || !this._bounds) {
            this._drawnLayers = {}, _n.prototype._update.call(this);
            var t2 = this._bounds, i3 = this._container, e2 = t2.getSize(), n2 = Vi ? 2 : 1;
            Lt(i3, t2.min), i3.width = n2 * e2.x, i3.height = n2 * e2.y, i3.style.width = e2.x + "px", i3.style.height = e2.y + "px", Vi && this._ctx.scale(2, 2), this._ctx.translate(-t2.min.x, -t2.min.y), this.fire("update");
          }
        }, _reset: function() {
          _n.prototype._reset.call(this), this._postponeUpdatePaths && (this._postponeUpdatePaths = false, this._updatePaths());
        }, _initPath: function(t2) {
          this._updateDashArray(t2), this._layers[n(t2)] = t2;
          var i3 = t2._order = { layer: t2, prev: this._drawLast, next: null };
          this._drawLast && (this._drawLast.next = i3), this._drawLast = i3, this._drawFirst = this._drawFirst || this._drawLast;
        }, _addPath: function(t2) {
          this._requestRedraw(t2);
        }, _removePath: function(t2) {
          var i3 = t2._order, e2 = i3.next, n2 = i3.prev;
          e2 ? e2.prev = n2 : this._drawLast = n2, n2 ? n2.next = e2 : this._drawFirst = e2, delete t2._order, delete this._layers[L.stamp(t2)], this._requestRedraw(t2);
        }, _updatePath: function(t2) {
          this._extendRedrawBounds(t2), t2._project(), t2._update(), this._requestRedraw(t2);
        }, _updateStyle: function(t2) {
          this._updateDashArray(t2), this._requestRedraw(t2);
        }, _updateDashArray: function(t2) {
          if (t2.options.dashArray) {
            var i3, e2 = t2.options.dashArray.split(","), n2 = [];
            for (i3 = 0; i3 < e2.length; i3++)
              n2.push(Number(e2[i3]));
            t2.options._dashArray = n2;
          }
        }, _requestRedraw: function(t2) {
          this._map && (this._extendRedrawBounds(t2), this._redrawRequest = this._redrawRequest || f(this._redraw, this));
        }, _extendRedrawBounds: function(t2) {
          if (t2._pxBounds) {
            var i3 = (t2.options.weight || 0) + 1;
            this._redrawBounds = this._redrawBounds || new P(), this._redrawBounds.extend(t2._pxBounds.min.subtract([i3, i3])), this._redrawBounds.extend(t2._pxBounds.max.add([i3, i3]));
          }
        }, _redraw: function() {
          this._redrawRequest = null, this._redrawBounds && (this._redrawBounds.min._floor(), this._redrawBounds.max._ceil()), this._clear(), this._draw(), this._redrawBounds = null;
        }, _clear: function() {
          var t2 = this._redrawBounds;
          if (t2) {
            var i3 = t2.getSize();
            this._ctx.clearRect(t2.min.x, t2.min.y, i3.x, i3.y);
          } else
            this._ctx.clearRect(0, 0, this._container.width, this._container.height);
        }, _draw: function() {
          var t2, i3 = this._redrawBounds;
          if (this._ctx.save(), i3) {
            var e2 = i3.getSize();
            this._ctx.beginPath(), this._ctx.rect(i3.min.x, i3.min.y, e2.x, e2.y), this._ctx.clip();
          }
          this._drawing = true;
          for (var n2 = this._drawFirst; n2; n2 = n2.next)
            t2 = n2.layer, (!i3 || t2._pxBounds && t2._pxBounds.intersects(i3)) && t2._updatePath();
          this._drawing = false, this._ctx.restore();
        }, _updatePoly: function(t2, i3) {
          if (this._drawing) {
            var e2, n2, o2, s2, r2 = t2._parts, a2 = r2.length, h2 = this._ctx;
            if (a2) {
              for (this._drawnLayers[t2._leaflet_id] = t2, h2.beginPath(), e2 = 0; e2 < a2; e2++) {
                for (n2 = 0, o2 = r2[e2].length; n2 < o2; n2++)
                  s2 = r2[e2][n2], h2[n2 ? "lineTo" : "moveTo"](s2.x, s2.y);
                i3 && h2.closePath();
              }
              this._fillStroke(h2, t2);
            }
          }
        }, _updateCircle: function(t2) {
          if (this._drawing && !t2._empty()) {
            var i3 = t2._point, e2 = this._ctx, n2 = t2._radius, o2 = (t2._radiusY || n2) / n2;
            this._drawnLayers[t2._leaflet_id] = t2, 1 !== o2 && (e2.save(), e2.scale(1, o2)), e2.beginPath(), e2.arc(i3.x, i3.y / o2, n2, 0, 2 * Math.PI, false), 1 !== o2 && e2.restore(), this._fillStroke(e2, t2);
          }
        }, _fillStroke: function(t2, i3) {
          var e2 = i3.options;
          e2.fill && (t2.globalAlpha = e2.fillOpacity, t2.fillStyle = e2.fillColor || e2.color, t2.fill(e2.fillRule || "evenodd")), e2.stroke && 0 !== e2.weight && (t2.setLineDash && t2.setLineDash(i3.options && i3.options._dashArray || []), t2.globalAlpha = e2.opacity, t2.lineWidth = e2.weight, t2.strokeStyle = e2.color, t2.lineCap = e2.lineCap, t2.lineJoin = e2.lineJoin, t2.stroke());
        }, _onClick: function(t2) {
          for (var i3, e2, n2 = this._map.mouseEventToLayerPoint(t2), o2 = this._drawFirst; o2; o2 = o2.next)
            (i3 = o2.layer).options.interactive && i3._containsPoint(n2) && !this._map._draggableMoved(i3) && (e2 = i3);
          e2 && (et(t2), this._fireEvent([e2], t2));
        }, _onMouseMove: function(t2) {
          if (this._map && !this._map.dragging.moving() && !this._map._animatingZoom) {
            var i3 = this._map.mouseEventToLayerPoint(t2);
            this._handleMouseHover(t2, i3);
          }
        }, _handleMouseOut: function(t2) {
          var i3 = this._hoveredLayer;
          i3 && (mt(this._container, "leaflet-interactive"), this._fireEvent([i3], t2, "mouseout"), this._hoveredLayer = null);
        }, _handleMouseHover: function(t2, i3) {
          for (var e2, n2, o2 = this._drawFirst; o2; o2 = o2.next)
            (e2 = o2.layer).options.interactive && e2._containsPoint(i3) && (n2 = e2);
          n2 !== this._hoveredLayer && (this._handleMouseOut(t2), n2 && (pt(this._container, "leaflet-interactive"), this._fireEvent([n2], t2, "mouseover"), this._hoveredLayer = n2)), this._hoveredLayer && this._fireEvent([this._hoveredLayer], t2);
        }, _fireEvent: function(t2, i3, e2) {
          this._map._fireDOMEvent(i3, e2 || i3.type, t2);
        }, _bringToFront: function(t2) {
          var i3 = t2._order, e2 = i3.next, n2 = i3.prev;
          e2 && (e2.prev = n2, n2 ? n2.next = e2 : e2 && (this._drawFirst = e2), i3.prev = this._drawLast, this._drawLast.next = i3, i3.next = null, this._drawLast = i3, this._requestRedraw(t2));
        }, _bringToBack: function(t2) {
          var i3 = t2._order, e2 = i3.next, n2 = i3.prev;
          n2 && (n2.next = e2, e2 ? e2.prev = n2 : n2 && (this._drawLast = n2), i3.prev = null, i3.next = this._drawFirst, this._drawFirst.prev = i3, this._drawFirst = i3, this._requestRedraw(t2));
        } }), pn = function() {
          try {
            return document.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"), function(t2) {
              return document.createElement("<lvml:" + t2 + ' class="lvml">');
            };
          } catch (t2) {
            return function(t3) {
              return document.createElement("<" + t3 + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">');
            };
          }
        }(), mn = { _initContainer: function() {
          this._container = ht("div", "leaflet-vml-container");
        }, _update: function() {
          this._map._animatingZoom || (_n.prototype._update.call(this), this.fire("update"));
        }, _initPath: function(t2) {
          var i3 = t2._container = pn("shape");
          pt(i3, "leaflet-vml-shape " + (this.options.className || "")), i3.coordsize = "1 1", t2._path = pn("path"), i3.appendChild(t2._path), this._updateStyle(t2), this._layers[n(t2)] = t2;
        }, _addPath: function(t2) {
          var i3 = t2._container;
          this._container.appendChild(i3), t2.options.interactive && t2.addInteractiveTarget(i3);
        }, _removePath: function(t2) {
          var i3 = t2._container;
          ut(i3), t2.removeInteractiveTarget(i3), delete this._layers[n(t2)];
        }, _updateStyle: function(t2) {
          var i3 = t2._stroke, e2 = t2._fill, n2 = t2.options, o2 = t2._container;
          o2.stroked = !!n2.stroke, o2.filled = !!n2.fill, n2.stroke ? (i3 || (i3 = t2._stroke = pn("stroke")), o2.appendChild(i3), i3.weight = n2.weight + "px", i3.color = n2.color, i3.opacity = n2.opacity, n2.dashArray ? i3.dashStyle = ei(n2.dashArray) ? n2.dashArray.join(" ") : n2.dashArray.replace(/( *, *)/g, " ") : i3.dashStyle = "", i3.endcap = n2.lineCap.replace("butt", "flat"), i3.joinstyle = n2.lineJoin) : i3 && (o2.removeChild(i3), t2._stroke = null), n2.fill ? (e2 || (e2 = t2._fill = pn("fill")), o2.appendChild(e2), e2.color = n2.fillColor || n2.color, e2.opacity = n2.fillOpacity) : e2 && (o2.removeChild(e2), t2._fill = null);
        }, _updateCircle: function(t2) {
          var i3 = t2._point.round(), e2 = Math.round(t2._radius), n2 = Math.round(t2._radiusY || e2);
          this._setPath(t2, t2._empty() ? "M0 0" : "AL " + i3.x + "," + i3.y + " " + e2 + "," + n2 + " 0,23592600");
        }, _setPath: function(t2, i3) {
          t2._path.v = i3;
        }, _bringToFront: function(t2) {
          ct(t2._container);
        }, _bringToBack: function(t2) {
          _t(t2._container);
        } }, fn = Ki ? pn : S, gn = _n.extend({ getEvents: function() {
          var t2 = _n.prototype.getEvents.call(this);
          return t2.zoomstart = this._onZoomStart, t2;
        }, _initContainer: function() {
          this._container = fn("svg"), this._container.setAttribute("pointer-events", "none"), this._rootGroup = fn("g"), this._container.appendChild(this._rootGroup);
        }, _destroyContainer: function() {
          ut(this._container), G(this._container), delete this._container, delete this._rootGroup;
        }, _onZoomStart: function() {
          this._update();
        }, _update: function() {
          if (!this._map._animatingZoom || !this._bounds) {
            _n.prototype._update.call(this);
            var t2 = this._bounds, i3 = t2.getSize(), e2 = this._container;
            this._svgSize && this._svgSize.equals(i3) || (this._svgSize = i3, e2.setAttribute("width", i3.x), e2.setAttribute("height", i3.y)), Lt(e2, t2.min), e2.setAttribute("viewBox", [t2.min.x, t2.min.y, i3.x, i3.y].join(" ")), this.fire("update");
          }
        }, _initPath: function(t2) {
          var i3 = t2._path = fn("path");
          t2.options.className && pt(i3, t2.options.className), t2.options.interactive && pt(i3, "leaflet-interactive"), this._updateStyle(t2), this._layers[n(t2)] = t2;
        }, _addPath: function(t2) {
          this._rootGroup || this._initContainer(), this._rootGroup.appendChild(t2._path), t2.addInteractiveTarget(t2._path);
        }, _removePath: function(t2) {
          ut(t2._path), t2.removeInteractiveTarget(t2._path), delete this._layers[n(t2)];
        }, _updatePath: function(t2) {
          t2._project(), t2._update();
        }, _updateStyle: function(t2) {
          var i3 = t2._path, e2 = t2.options;
          i3 && (e2.stroke ? (i3.setAttribute("stroke", e2.color), i3.setAttribute("stroke-opacity", e2.opacity), i3.setAttribute("stroke-width", e2.weight), i3.setAttribute("stroke-linecap", e2.lineCap), i3.setAttribute("stroke-linejoin", e2.lineJoin), e2.dashArray ? i3.setAttribute("stroke-dasharray", e2.dashArray) : i3.removeAttribute("stroke-dasharray"), e2.dashOffset ? i3.setAttribute("stroke-dashoffset", e2.dashOffset) : i3.removeAttribute("stroke-dashoffset")) : i3.setAttribute("stroke", "none"), e2.fill ? (i3.setAttribute("fill", e2.fillColor || e2.color), i3.setAttribute("fill-opacity", e2.fillOpacity), i3.setAttribute("fill-rule", e2.fillRule || "evenodd")) : i3.setAttribute("fill", "none"));
        }, _updatePoly: function(t2, i3) {
          this._setPath(t2, k(t2._parts, i3));
        }, _updateCircle: function(t2) {
          var i3 = t2._point, e2 = t2._radius, n2 = "a" + e2 + "," + (t2._radiusY || e2) + " 0 1,0 ", o2 = t2._empty() ? "M0 0" : "M" + (i3.x - e2) + "," + i3.y + n2 + 2 * e2 + ",0 " + n2 + 2 * -e2 + ",0 ";
          this._setPath(t2, o2);
        }, _setPath: function(t2, i3) {
          t2._path.setAttribute("d", i3);
        }, _bringToFront: function(t2) {
          ct(t2._path);
        }, _bringToBack: function(t2) {
          _t(t2._path);
        } });
        Ki && gn.include(mn), ye.include({ getRenderer: function(t2) {
          var i3 = t2.options.renderer || this._getPaneRenderer(t2.options.pane) || this.options.renderer || this._renderer;
          return i3 || (i3 = this._renderer = this.options.preferCanvas && Xt() || Jt()), this.hasLayer(i3) || this.addLayer(i3), i3;
        }, _getPaneRenderer: function(t2) {
          if ("overlayPane" === t2 || void 0 === t2)
            return false;
          var i3 = this._paneRenderers[t2];
          return void 0 === i3 && (i3 = gn && Jt({ pane: t2 }) || dn && Xt({ pane: t2 }), this._paneRenderers[t2] = i3), i3;
        } });
        var vn = $e.extend({ initialize: function(t2, i3) {
          $e.prototype.initialize.call(this, this._boundsToLatLngs(t2), i3);
        }, setBounds: function(t2) {
          return this.setLatLngs(this._boundsToLatLngs(t2));
        }, _boundsToLatLngs: function(t2) {
          return t2 = z(t2), [t2.getSouthWest(), t2.getNorthWest(), t2.getNorthEast(), t2.getSouthEast()];
        } });
        gn.create = fn, gn.pointsToPath = k, Qe.geometryToLayer = Wt, Qe.coordsToLatLng = Ht, Qe.coordsToLatLngs = Ft, Qe.latLngToCoords = Ut, Qe.latLngsToCoords = Vt, Qe.getFeature = Gt, Qe.asFeature = qt, ye.mergeOptions({ boxZoom: true });
        var yn = Me.extend({ initialize: function(t2) {
          this._map = t2, this._container = t2._container, this._pane = t2._panes.overlayPane, this._resetStateTimeout = 0, t2.on("unload", this._destroy, this);
        }, addHooks: function() {
          V(this._container, "mousedown", this._onMouseDown, this);
        }, removeHooks: function() {
          G(this._container, "mousedown", this._onMouseDown, this);
        }, moved: function() {
          return this._moved;
        }, _destroy: function() {
          ut(this._pane), delete this._pane;
        }, _resetState: function() {
          this._resetStateTimeout = 0, this._moved = false;
        }, _clearDeferredResetState: function() {
          0 !== this._resetStateTimeout && (clearTimeout(this._resetStateTimeout), this._resetStateTimeout = 0);
        }, _onMouseDown: function(t2) {
          if (!t2.shiftKey || 1 !== t2.which && 1 !== t2.button)
            return false;
          this._clearDeferredResetState(), this._resetState(), pi(), bt(), this._startPoint = this._map.mouseEventToContainerPoint(t2), V(document, { contextmenu: Q, mousemove: this._onMouseMove, mouseup: this._onMouseUp, keydown: this._onKeyDown }, this);
        }, _onMouseMove: function(t2) {
          this._moved || (this._moved = true, this._box = ht("div", "leaflet-zoom-box", this._container), pt(this._container, "leaflet-crosshair"), this._map.fire("boxzoomstart")), this._point = this._map.mouseEventToContainerPoint(t2);
          var i3 = new P(this._point, this._startPoint), e2 = i3.getSize();
          Lt(this._box, i3.min), this._box.style.width = e2.x + "px", this._box.style.height = e2.y + "px";
        }, _finish: function() {
          this._moved && (ut(this._box), mt(this._container, "leaflet-crosshair")), mi(), Tt(), G(document, { contextmenu: Q, mousemove: this._onMouseMove, mouseup: this._onMouseUp, keydown: this._onKeyDown }, this);
        }, _onMouseUp: function(t2) {
          if ((1 === t2.which || 1 === t2.button) && (this._finish(), this._moved)) {
            this._clearDeferredResetState(), this._resetStateTimeout = setTimeout(e(this._resetState, this), 0);
            var i3 = new T(this._map.containerPointToLatLng(this._startPoint), this._map.containerPointToLatLng(this._point));
            this._map.fitBounds(i3).fire("boxzoomend", { boxZoomBounds: i3 });
          }
        }, _onKeyDown: function(t2) {
          27 === t2.keyCode && this._finish();
        } });
        ye.addInitHook("addHandler", "boxZoom", yn), ye.mergeOptions({ doubleClickZoom: true });
        var xn = Me.extend({ addHooks: function() {
          this._map.on("dblclick", this._onDoubleClick, this);
        }, removeHooks: function() {
          this._map.off("dblclick", this._onDoubleClick, this);
        }, _onDoubleClick: function(t2) {
          var i3 = this._map, e2 = i3.getZoom(), n2 = i3.options.zoomDelta, o2 = t2.originalEvent.shiftKey ? e2 - n2 : e2 + n2;
          "center" === i3.options.doubleClickZoom ? i3.setZoom(o2) : i3.setZoomAround(t2.containerPoint, o2);
        } });
        ye.addInitHook("addHandler", "doubleClickZoom", xn), ye.mergeOptions({ dragging: true, inertia: !Ti, inertiaDeceleration: 3400, inertiaMaxSpeed: 1 / 0, easeLinearity: 0.2, worldCopyJump: false, maxBoundsViscosity: 0 });
        var wn = Me.extend({ addHooks: function() {
          if (!this._draggable) {
            var t2 = this._map;
            this._draggable = new ke(t2._mapPane, t2._container), this._draggable.on({ dragstart: this._onDragStart, drag: this._onDrag, dragend: this._onDragEnd }, this), this._draggable.on("predrag", this._onPreDragLimit, this), t2.options.worldCopyJump && (this._draggable.on("predrag", this._onPreDragWrap, this), t2.on("zoomend", this._onZoomEnd, this), t2.whenReady(this._onZoomEnd, this));
          }
          pt(this._map._container, "leaflet-grab leaflet-touch-drag"), this._draggable.enable(), this._positions = [], this._times = [];
        }, removeHooks: function() {
          mt(this._map._container, "leaflet-grab"), mt(this._map._container, "leaflet-touch-drag"), this._draggable.disable();
        }, moved: function() {
          return this._draggable && this._draggable._moved;
        }, moving: function() {
          return this._draggable && this._draggable._moving;
        }, _onDragStart: function() {
          var t2 = this._map;
          if (t2._stop(), this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {
            var i3 = z(this._map.options.maxBounds);
            this._offsetLimit = b(this._map.latLngToContainerPoint(i3.getNorthWest()).multiplyBy(-1), this._map.latLngToContainerPoint(i3.getSouthEast()).multiplyBy(-1).add(this._map.getSize())), this._viscosity = Math.min(1, Math.max(0, this._map.options.maxBoundsViscosity));
          } else
            this._offsetLimit = null;
          t2.fire("movestart").fire("dragstart"), t2.options.inertia && (this._positions = [], this._times = []);
        }, _onDrag: function(t2) {
          if (this._map.options.inertia) {
            var i3 = this._lastTime = +new Date(), e2 = this._lastPos = this._draggable._absPos || this._draggable._newPos;
            this._positions.push(e2), this._times.push(i3), i3 - this._times[0] > 50 && (this._positions.shift(), this._times.shift());
          }
          this._map.fire("move", t2).fire("drag", t2);
        }, _onZoomEnd: function() {
          var t2 = this._map.getSize().divideBy(2), i3 = this._map.latLngToLayerPoint([0, 0]);
          this._initialWorldOffset = i3.subtract(t2).x, this._worldWidth = this._map.getPixelWorldBounds().getSize().x;
        }, _viscousLimit: function(t2, i3) {
          return t2 - (t2 - i3) * this._viscosity;
        }, _onPreDragLimit: function() {
          if (this._viscosity && this._offsetLimit) {
            var t2 = this._draggable._newPos.subtract(this._draggable._startPos), i3 = this._offsetLimit;
            t2.x < i3.min.x && (t2.x = this._viscousLimit(t2.x, i3.min.x)), t2.y < i3.min.y && (t2.y = this._viscousLimit(t2.y, i3.min.y)), t2.x > i3.max.x && (t2.x = this._viscousLimit(t2.x, i3.max.x)), t2.y > i3.max.y && (t2.y = this._viscousLimit(t2.y, i3.max.y)), this._draggable._newPos = this._draggable._startPos.add(t2);
          }
        }, _onPreDragWrap: function() {
          var t2 = this._worldWidth, i3 = Math.round(t2 / 2), e2 = this._initialWorldOffset, n2 = this._draggable._newPos.x, o2 = (n2 - i3 + e2) % t2 + i3 - e2, s2 = (n2 + i3 + e2) % t2 - i3 - e2, r2 = Math.abs(o2 + e2) < Math.abs(s2 + e2) ? o2 : s2;
          this._draggable._absPos = this._draggable._newPos.clone(), this._draggable._newPos.x = r2;
        }, _onDragEnd: function(t2) {
          var i3 = this._map, e2 = i3.options, n2 = !e2.inertia || this._times.length < 2;
          if (i3.fire("dragend", t2), n2)
            i3.fire("moveend");
          else {
            var o2 = this._lastPos.subtract(this._positions[0]), s2 = (this._lastTime - this._times[0]) / 1e3, r2 = e2.easeLinearity, a2 = o2.multiplyBy(r2 / s2), h2 = a2.distanceTo([0, 0]), u2 = Math.min(e2.inertiaMaxSpeed, h2), l2 = a2.multiplyBy(u2 / h2), c2 = u2 / (e2.inertiaDeceleration * r2), _2 = l2.multiplyBy(-c2 / 2).round();
            _2.x || _2.y ? (_2 = i3._limitOffset(_2, i3.options.maxBounds), f(function() {
              i3.panBy(_2, { duration: c2, easeLinearity: r2, noMoveStart: true, animate: true });
            })) : i3.fire("moveend");
          }
        } });
        ye.addInitHook("addHandler", "dragging", wn), ye.mergeOptions({ keyboard: true, keyboardPanDelta: 80 });
        var Ln = Me.extend({ keyCodes: { left: [37], right: [39], down: [40], up: [38], zoomIn: [187, 107, 61, 171], zoomOut: [189, 109, 54, 173] }, initialize: function(t2) {
          this._map = t2, this._setPanDelta(t2.options.keyboardPanDelta), this._setZoomDelta(t2.options.zoomDelta);
        }, addHooks: function() {
          var t2 = this._map._container;
          t2.tabIndex <= 0 && (t2.tabIndex = "0"), V(t2, { focus: this._onFocus, blur: this._onBlur, mousedown: this._onMouseDown }, this), this._map.on({ focus: this._addHooks, blur: this._removeHooks }, this);
        }, removeHooks: function() {
          this._removeHooks(), G(this._map._container, { focus: this._onFocus, blur: this._onBlur, mousedown: this._onMouseDown }, this), this._map.off({ focus: this._addHooks, blur: this._removeHooks }, this);
        }, _onMouseDown: function() {
          if (!this._focused) {
            var t2 = document.body, i3 = document.documentElement, e2 = t2.scrollTop || i3.scrollTop, n2 = t2.scrollLeft || i3.scrollLeft;
            this._map._container.focus(), window.scrollTo(n2, e2);
          }
        }, _onFocus: function() {
          this._focused = true, this._map.fire("focus");
        }, _onBlur: function() {
          this._focused = false, this._map.fire("blur");
        }, _setPanDelta: function(t2) {
          var i3, e2, n2 = this._panKeys = {}, o2 = this.keyCodes;
          for (i3 = 0, e2 = o2.left.length; i3 < e2; i3++)
            n2[o2.left[i3]] = [-1 * t2, 0];
          for (i3 = 0, e2 = o2.right.length; i3 < e2; i3++)
            n2[o2.right[i3]] = [t2, 0];
          for (i3 = 0, e2 = o2.down.length; i3 < e2; i3++)
            n2[o2.down[i3]] = [0, t2];
          for (i3 = 0, e2 = o2.up.length; i3 < e2; i3++)
            n2[o2.up[i3]] = [0, -1 * t2];
        }, _setZoomDelta: function(t2) {
          var i3, e2, n2 = this._zoomKeys = {}, o2 = this.keyCodes;
          for (i3 = 0, e2 = o2.zoomIn.length; i3 < e2; i3++)
            n2[o2.zoomIn[i3]] = t2;
          for (i3 = 0, e2 = o2.zoomOut.length; i3 < e2; i3++)
            n2[o2.zoomOut[i3]] = -t2;
        }, _addHooks: function() {
          V(document, "keydown", this._onKeyDown, this);
        }, _removeHooks: function() {
          G(document, "keydown", this._onKeyDown, this);
        }, _onKeyDown: function(t2) {
          if (!(t2.altKey || t2.ctrlKey || t2.metaKey)) {
            var i3, e2 = t2.keyCode, n2 = this._map;
            if (e2 in this._panKeys) {
              if (n2._panAnim && n2._panAnim._inProgress)
                return;
              i3 = this._panKeys[e2], t2.shiftKey && (i3 = w(i3).multiplyBy(3)), n2.panBy(i3), n2.options.maxBounds && n2.panInsideBounds(n2.options.maxBounds);
            } else if (e2 in this._zoomKeys)
              n2.setZoom(n2.getZoom() + (t2.shiftKey ? 3 : 1) * this._zoomKeys[e2]);
            else {
              if (27 !== e2 || !n2._popup)
                return;
              n2.closePopup();
            }
            Q(t2);
          }
        } });
        ye.addInitHook("addHandler", "keyboard", Ln), ye.mergeOptions({ scrollWheelZoom: true, wheelDebounceTime: 40, wheelPxPerZoomLevel: 60 });
        var Pn = Me.extend({ addHooks: function() {
          V(this._map._container, "mousewheel", this._onWheelScroll, this), this._delta = 0;
        }, removeHooks: function() {
          G(this._map._container, "mousewheel", this._onWheelScroll, this);
        }, _onWheelScroll: function(t2) {
          var i3 = it(t2), n2 = this._map.options.wheelDebounceTime;
          this._delta += i3, this._lastMousePos = this._map.mouseEventToContainerPoint(t2), this._startTime || (this._startTime = +new Date());
          var o2 = Math.max(n2 - (+new Date() - this._startTime), 0);
          clearTimeout(this._timer), this._timer = setTimeout(e(this._performZoom, this), o2), Q(t2);
        }, _performZoom: function() {
          var t2 = this._map, i3 = t2.getZoom(), e2 = this._map.options.zoomSnap || 0;
          t2._stop();
          var n2 = this._delta / (4 * this._map.options.wheelPxPerZoomLevel), o2 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(n2)))) / Math.LN2, s2 = e2 ? Math.ceil(o2 / e2) * e2 : o2, r2 = t2._limitZoom(i3 + (this._delta > 0 ? s2 : -s2)) - i3;
          this._delta = 0, this._startTime = null, r2 && ("center" === t2.options.scrollWheelZoom ? t2.setZoom(i3 + r2) : t2.setZoomAround(this._lastMousePos, i3 + r2));
        } });
        ye.addInitHook("addHandler", "scrollWheelZoom", Pn), ye.mergeOptions({ tap: true, tapTolerance: 15 });
        var bn = Me.extend({ addHooks: function() {
          V(this._map._container, "touchstart", this._onDown, this);
        }, removeHooks: function() {
          G(this._map._container, "touchstart", this._onDown, this);
        }, _onDown: function(t2) {
          if (t2.touches) {
            if ($2(t2), this._fireClick = true, t2.touches.length > 1)
              return this._fireClick = false, void clearTimeout(this._holdTimeout);
            var i3 = t2.touches[0], n2 = i3.target;
            this._startPos = this._newPos = new x(i3.clientX, i3.clientY), n2.tagName && "a" === n2.tagName.toLowerCase() && pt(n2, "leaflet-active"), this._holdTimeout = setTimeout(e(function() {
              this._isTapValid() && (this._fireClick = false, this._onUp(), this._simulateEvent("contextmenu", i3));
            }, this), 1e3), this._simulateEvent("mousedown", i3), V(document, { touchmove: this._onMove, touchend: this._onUp }, this);
          }
        }, _onUp: function(t2) {
          if (clearTimeout(this._holdTimeout), G(document, { touchmove: this._onMove, touchend: this._onUp }, this), this._fireClick && t2 && t2.changedTouches) {
            var i3 = t2.changedTouches[0], e2 = i3.target;
            e2 && e2.tagName && "a" === e2.tagName.toLowerCase() && mt(e2, "leaflet-active"), this._simulateEvent("mouseup", i3), this._isTapValid() && this._simulateEvent("click", i3);
          }
        }, _isTapValid: function() {
          return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;
        }, _onMove: function(t2) {
          var i3 = t2.touches[0];
          this._newPos = new x(i3.clientX, i3.clientY), this._simulateEvent("mousemove", i3);
        }, _simulateEvent: function(t2, i3) {
          var e2 = document.createEvent("MouseEvents");
          e2._simulated = true, i3.target._simulatedClick = true, e2.initMouseEvent(t2, true, true, window, 1, i3.screenX, i3.screenY, i3.clientX, i3.clientY, false, false, false, false, 0, null), i3.target.dispatchEvent(e2);
        } });
        Hi && !Wi && ye.addInitHook("addHandler", "tap", bn), ye.mergeOptions({ touchZoom: Hi && !Ti, bounceAtZoomLimits: true });
        var Tn = Me.extend({ addHooks: function() {
          pt(this._map._container, "leaflet-touch-zoom"), V(this._map._container, "touchstart", this._onTouchStart, this);
        }, removeHooks: function() {
          mt(this._map._container, "leaflet-touch-zoom"), G(this._map._container, "touchstart", this._onTouchStart, this);
        }, _onTouchStart: function(t2) {
          var i3 = this._map;
          if (t2.touches && 2 === t2.touches.length && !i3._animatingZoom && !this._zooming) {
            var e2 = i3.mouseEventToContainerPoint(t2.touches[0]), n2 = i3.mouseEventToContainerPoint(t2.touches[1]);
            this._centerPoint = i3.getSize()._divideBy(2), this._startLatLng = i3.containerPointToLatLng(this._centerPoint), "center" !== i3.options.touchZoom && (this._pinchStartLatLng = i3.containerPointToLatLng(e2.add(n2)._divideBy(2))), this._startDist = e2.distanceTo(n2), this._startZoom = i3.getZoom(), this._moved = false, this._zooming = true, i3._stop(), V(document, "touchmove", this._onTouchMove, this), V(document, "touchend", this._onTouchEnd, this), $2(t2);
          }
        }, _onTouchMove: function(t2) {
          if (t2.touches && 2 === t2.touches.length && this._zooming) {
            var i3 = this._map, n2 = i3.mouseEventToContainerPoint(t2.touches[0]), o2 = i3.mouseEventToContainerPoint(t2.touches[1]), s2 = n2.distanceTo(o2) / this._startDist;
            if (this._zoom = i3.getScaleZoom(s2, this._startZoom), !i3.options.bounceAtZoomLimits && (this._zoom < i3.getMinZoom() && s2 < 1 || this._zoom > i3.getMaxZoom() && s2 > 1) && (this._zoom = i3._limitZoom(this._zoom)), "center" === i3.options.touchZoom) {
              if (this._center = this._startLatLng, 1 === s2)
                return;
            } else {
              var r2 = n2._add(o2)._divideBy(2)._subtract(this._centerPoint);
              if (1 === s2 && 0 === r2.x && 0 === r2.y)
                return;
              this._center = i3.unproject(i3.project(this._pinchStartLatLng, this._zoom).subtract(r2), this._zoom);
            }
            this._moved || (i3._moveStart(true), this._moved = true), g(this._animRequest);
            var a2 = e(i3._move, i3, this._center, this._zoom, { pinch: true, round: false });
            this._animRequest = f(a2, this, true), $2(t2);
          }
        }, _onTouchEnd: function() {
          this._moved && this._zooming ? (this._zooming = false, g(this._animRequest), G(document, "touchmove", this._onTouchMove), G(document, "touchend", this._onTouchEnd), this._map.options.zoomAnimation ? this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap) : this._map._resetView(this._center, this._map._limitZoom(this._zoom))) : this._zooming = false;
        } });
        ye.addInitHook("addHandler", "touchZoom", Tn), ye.BoxZoom = yn, ye.DoubleClickZoom = xn, ye.Drag = wn, ye.Keyboard = Ln, ye.ScrollWheelZoom = Pn, ye.Tap = bn, ye.TouchZoom = Tn;
        var zn = window.L;
        window.L = t, Object.freeze = $t, t.version = "1.2.0", t.noConflict = function() {
          return window.L = zn, this;
        }, t.Control = xe, t.control = we, t.Browser = Yi, t.Evented = ui, t.Mixin = Ce, t.Util = ai, t.Class = v, t.Handler = Me, t.extend = i2, t.bind = e, t.stamp = n, t.setOptions = l, t.DomEvent = le, t.DomUtil = ge, t.PosAnimation = ve, t.Draggable = ke, t.LineUtil = Be, t.PolyUtil = Ie, t.Point = x, t.point = w, t.Bounds = P, t.bounds = b, t.Transformation = Z, t.transformation = E, t.Projection = Re, t.LatLng = M, t.latLng = C, t.LatLngBounds = T, t.latLngBounds = z, t.CRS = li, t.GeoJSON = Qe, t.geoJSON = Kt, t.geoJson = en, t.Layer = We, t.LayerGroup = He, t.layerGroup = function(t2) {
          return new He(t2);
        }, t.FeatureGroup = Fe, t.featureGroup = function(t2) {
          return new Fe(t2);
        }, t.ImageOverlay = nn, t.imageOverlay = function(t2, i3, e2) {
          return new nn(t2, i3, e2);
        }, t.VideoOverlay = on2, t.videoOverlay = function(t2, i3, e2) {
          return new on2(t2, i3, e2);
        }, t.DivOverlay = sn, t.Popup = rn, t.popup = function(t2, i3) {
          return new rn(t2, i3);
        }, t.Tooltip = an, t.tooltip = function(t2, i3) {
          return new an(t2, i3);
        }, t.Icon = Ue, t.icon = function(t2) {
          return new Ue(t2);
        }, t.DivIcon = hn, t.divIcon = function(t2) {
          return new hn(t2);
        }, t.Marker = qe, t.marker = function(t2, i3) {
          return new qe(t2, i3);
        }, t.TileLayer = ln, t.tileLayer = Yt, t.GridLayer = un, t.gridLayer = function(t2) {
          return new un(t2);
        }, t.SVG = gn, t.svg = Jt, t.Renderer = _n, t.Canvas = dn, t.canvas = Xt, t.Path = Ke, t.CircleMarker = Ye, t.circleMarker = function(t2, i3) {
          return new Ye(t2, i3);
        }, t.Circle = Xe, t.circle = function(t2, i3, e2) {
          return new Xe(t2, i3, e2);
        }, t.Polyline = Je, t.polyline = function(t2, i3) {
          return new Je(t2, i3);
        }, t.Polygon = $e, t.polygon = function(t2, i3) {
          return new $e(t2, i3);
        }, t.Rectangle = vn, t.rectangle = function(t2, i3) {
          return new vn(t2, i3);
        }, t.Map = ye, t.map = function(t2, i3) {
          return new ye(t2, i3);
        };
      });
    }
  });

  // frappe/public/js/lib/leaflet_control_locate/L.Control.Locate.js
  var require_L_Control_Locate = __commonJS({
    "frappe/public/js/lib/leaflet_control_locate/L.Control.Locate.js"(exports, module) {
      (function(factory, window2) {
        if (typeof define === "function" && define.amd) {
          define(["leaflet"], factory);
        } else if (typeof exports === "object") {
          if (typeof window2 !== "undefined" && window2.L) {
            module.exports = factory(L);
          } else {
            module.exports = factory(require_leaflet());
          }
        }
        if (typeof window2 !== "undefined" && window2.L) {
          window2.L.Control.Locate = factory(L);
        }
      })(function(L2) {
        var LDomUtilApplyClassesMethod = function(method, element, classNames) {
          classNames = classNames.split(" ");
          classNames.forEach(function(className) {
            L2.DomUtil[method].call(this, element, className);
          });
        };
        var addClasses = function(el, names) {
          LDomUtilApplyClassesMethod("addClass", el, names);
        };
        var removeClasses = function(el, names) {
          LDomUtilApplyClassesMethod("removeClass", el, names);
        };
        var LocateControl = L2.Control.extend({
          options: {
            position: "topleft",
            layer: void 0,
            setView: "untilPan",
            keepCurrentZoomLevel: false,
            flyTo: false,
            clickBehavior: {
              inView: "stop",
              outOfView: "setView"
            },
            returnToPrevBounds: false,
            cacheLocation: true,
            drawCircle: true,
            drawMarker: true,
            markerClass: L2.CircleMarker,
            circleStyle: {
              color: "#136AEC",
              fillColor: "#136AEC",
              fillOpacity: 0.15,
              weight: 2,
              opacity: 0.5
            },
            markerStyle: {
              color: "#136AEC",
              fillColor: "#2A93EE",
              fillOpacity: 0.7,
              weight: 2,
              opacity: 0.9,
              radius: 5
            },
            followCircleStyle: {},
            followMarkerStyle: {},
            icon: "fa fa-map-marker",
            iconLoading: "fa fa-spinner fa-spin",
            iconElementTag: "span",
            circlePadding: [0, 0],
            metric: true,
            createButtonCallback: function(container, options) {
              var link = L2.DomUtil.create("a", "leaflet-bar-part leaflet-bar-part-single", container);
              link.title = options.strings.title;
              var icon = L2.DomUtil.create(options.iconElementTag, options.icon, link);
              return { link, icon };
            },
            onLocationError: function(err, control) {
              alert(err.message);
            },
            onLocationOutsideMapBounds: function(control) {
              control.stop();
              alert(control.options.strings.outsideMapBoundsMsg);
            },
            showPopup: true,
            strings: {
              title: "Show me where I am",
              metersUnit: "meters",
              feetUnit: "feet",
              popup: "You are within {distance} {unit} from this point",
              outsideMapBoundsMsg: "You seem located outside the boundaries of the map"
            },
            locateOptions: {
              maxZoom: Infinity,
              watch: true,
              setView: false
            }
          },
          initialize: function(options) {
            for (var i2 in options) {
              if (typeof this.options[i2] === "object") {
                L2.extend(this.options[i2], options[i2]);
              } else {
                this.options[i2] = options[i2];
              }
            }
            this.options.followMarkerStyle = L2.extend({}, this.options.markerStyle, this.options.followMarkerStyle);
            this.options.followCircleStyle = L2.extend({}, this.options.circleStyle, this.options.followCircleStyle);
          },
          onAdd: function(map2) {
            var container = L2.DomUtil.create(
              "div",
              "leaflet-control-locate leaflet-bar leaflet-control"
            );
            this._layer = this.options.layer || new L2.LayerGroup();
            this._layer.addTo(map2);
            this._event = void 0;
            this._prevBounds = null;
            var linkAndIcon = this.options.createButtonCallback(container, this.options);
            this._link = linkAndIcon.link;
            this._icon = linkAndIcon.icon;
            L2.DomEvent.on(this._link, "click", L2.DomEvent.stopPropagation).on(this._link, "click", L2.DomEvent.preventDefault).on(this._link, "click", this._onClick, this).on(this._link, "dblclick", L2.DomEvent.stopPropagation);
            this._resetVariables();
            this._map.on("unload", this._unload, this);
            return container;
          },
          _onClick: function() {
            this._justClicked = true;
            this._userPanned = false;
            if (this._active && !this._event) {
              this.stop();
            } else if (this._active && this._event !== void 0) {
              var behavior = this._map.getBounds().contains(this._event.latlng) ? this.options.clickBehavior.inView : this.options.clickBehavior.outOfView;
              switch (behavior) {
                case "setView":
                  this.setView();
                  break;
                case "stop":
                  this.stop();
                  if (this.options.returnToPrevBounds) {
                    var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;
                    f.bind(this._map)(this._prevBounds);
                  }
                  break;
              }
            } else {
              if (this.options.returnToPrevBounds) {
                this._prevBounds = this._map.getBounds();
              }
              this.start();
            }
            this._updateContainerStyle();
          },
          start: function() {
            this._activate();
            if (this._event) {
              this._drawMarker(this._map);
              if (this.options.setView) {
                this.setView();
              }
            }
            this._updateContainerStyle();
          },
          stop: function() {
            this._deactivate();
            this._cleanClasses();
            this._resetVariables();
            this._removeMarker();
          },
          _activate: function() {
            if (!this._active) {
              this._map.locate(this.options.locateOptions);
              this._active = true;
              this._map.on("locationfound", this._onLocationFound, this);
              this._map.on("locationerror", this._onLocationError, this);
              this._map.on("dragstart", this._onDrag, this);
            }
          },
          _deactivate: function() {
            this._map.stopLocate();
            this._active = false;
            if (!this.options.cacheLocation) {
              this._event = void 0;
            }
            this._map.off("locationfound", this._onLocationFound, this);
            this._map.off("locationerror", this._onLocationError, this);
            this._map.off("dragstart", this._onDrag, this);
          },
          setView: function() {
            this._drawMarker();
            if (this._isOutsideMapBounds()) {
              this._event = void 0;
              this.options.onLocationOutsideMapBounds(this);
            } else {
              if (this.options.keepCurrentZoomLevel) {
                var f = this.options.flyTo ? this._map.flyTo : this._map.panTo;
                f.bind(this._map)([this._event.latitude, this._event.longitude]);
              } else {
                var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;
                f.bind(this._map)(this._event.bounds, {
                  padding: this.options.circlePadding,
                  maxZoom: this.options.locateOptions.maxZoom
                });
              }
            }
          },
          _drawMarker: function() {
            if (this._event.accuracy === void 0) {
              this._event.accuracy = 0;
            }
            var radius = this._event.accuracy;
            var latlng = this._event.latlng;
            if (this.options.drawCircle) {
              var style = this._isFollowing() ? this.options.followCircleStyle : this.options.circleStyle;
              if (!this._circle) {
                this._circle = L2.circle(latlng, radius, style).addTo(this._layer);
              } else {
                this._circle.setLatLng(latlng).setRadius(radius).setStyle(style);
              }
            }
            var distance, unit;
            if (this.options.metric) {
              distance = radius.toFixed(0);
              unit = this.options.strings.metersUnit;
            } else {
              distance = (radius * 3.2808399).toFixed(0);
              unit = this.options.strings.feetUnit;
            }
            if (this.options.drawMarker) {
              var mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle;
              if (!this._marker) {
                this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer);
              } else {
                this._marker.setLatLng(latlng);
                if (this._marker.setStyle) {
                  this._marker.setStyle(mStyle);
                }
              }
            }
            var t = this.options.strings.popup;
            if (this.options.showPopup && t && this._marker) {
              this._marker.bindPopup(L2.Util.template(t, { distance, unit }))._popup.setLatLng(latlng);
            }
          },
          _removeMarker: function() {
            this._layer.clearLayers();
            this._marker = void 0;
            this._circle = void 0;
          },
          _unload: function() {
            this.stop();
            this._map.off("unload", this._unload, this);
          },
          _onLocationError: function(err) {
            if (err.code == 3 && this.options.locateOptions.watch) {
              return;
            }
            this.stop();
            this.options.onLocationError(err, this);
          },
          _onLocationFound: function(e) {
            if (this._event && (this._event.latlng.lat === e.latlng.lat && this._event.latlng.lng === e.latlng.lng && this._event.accuracy === e.accuracy)) {
              return;
            }
            if (!this._active) {
              return;
            }
            this._event = e;
            this._drawMarker();
            this._updateContainerStyle();
            switch (this.options.setView) {
              case "once":
                if (this._justClicked) {
                  this.setView();
                }
                break;
              case "untilPan":
                if (!this._userPanned) {
                  this.setView();
                }
                break;
              case "always":
                this.setView();
                break;
              case false:
                break;
            }
            this._justClicked = false;
          },
          _onDrag: function() {
            if (this._event) {
              this._userPanned = true;
              this._updateContainerStyle();
              this._drawMarker();
            }
          },
          _isFollowing: function() {
            if (!this._active) {
              return false;
            }
            if (this.options.setView === "always") {
              return true;
            } else if (this.options.setView === "untilPan") {
              return !this._userPanned;
            }
          },
          _isOutsideMapBounds: function() {
            if (this._event === void 0) {
              return false;
            }
            return this._map.options.maxBounds && !this._map.options.maxBounds.contains(this._event.latlng);
          },
          _updateContainerStyle: function() {
            if (!this._container) {
              return;
            }
            if (this._active && !this._event) {
              this._setClasses("requesting");
            } else if (this._isFollowing()) {
              this._setClasses("following");
            } else if (this._active) {
              this._setClasses("active");
            } else {
              this._cleanClasses();
            }
          },
          _setClasses: function(state) {
            if (state == "requesting") {
              removeClasses(this._container, "active following");
              addClasses(this._container, "requesting");
              removeClasses(this._icon, this.options.icon);
              addClasses(this._icon, this.options.iconLoading);
            } else if (state == "active") {
              removeClasses(this._container, "requesting following");
              addClasses(this._container, "active");
              removeClasses(this._icon, this.options.iconLoading);
              addClasses(this._icon, this.options.icon);
            } else if (state == "following") {
              removeClasses(this._container, "requesting");
              addClasses(this._container, "active following");
              removeClasses(this._icon, this.options.iconLoading);
              addClasses(this._icon, this.options.icon);
            }
          },
          _cleanClasses: function() {
            L2.DomUtil.removeClass(this._container, "requesting");
            L2.DomUtil.removeClass(this._container, "active");
            L2.DomUtil.removeClass(this._container, "following");
            removeClasses(this._icon, this.options.iconLoading);
            addClasses(this._icon, this.options.icon);
          },
          _resetVariables: function() {
            this._active = false;
            this._justClicked = false;
            this._userPanned = false;
          }
        });
        L2.control.locate = function(options) {
          return new L2.Control.Locate(options);
        };
        return LocateControl;
      }, window);
    }
  });

  // node_modules/sortablejs/Sortable.min.js
  var require_Sortable_min = __commonJS({
    "node_modules/sortablejs/Sortable.min.js"(exports, module) {
      !function(t, e) {
        "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = t || self).Sortable = e();
      }(exports, function() {
        "use strict";
        function e(e2, t2) {
          var n2, o2 = Object.keys(e2);
          return Object.getOwnPropertySymbols && (n2 = Object.getOwnPropertySymbols(e2), t2 && (n2 = n2.filter(function(t3) {
            return Object.getOwnPropertyDescriptor(e2, t3).enumerable;
          })), o2.push.apply(o2, n2)), o2;
        }
        function M(o2) {
          for (var t2 = 1; t2 < arguments.length; t2++) {
            var i3 = null != arguments[t2] ? arguments[t2] : {};
            t2 % 2 ? e(Object(i3), true).forEach(function(t3) {
              var e2, n2;
              e2 = o2, t3 = i3[n2 = t3], n2 in e2 ? Object.defineProperty(e2, n2, { value: t3, enumerable: true, configurable: true, writable: true }) : e2[n2] = t3;
            }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o2, Object.getOwnPropertyDescriptors(i3)) : e(Object(i3)).forEach(function(t3) {
              Object.defineProperty(o2, t3, Object.getOwnPropertyDescriptor(i3, t3));
            });
          }
          return o2;
        }
        function o(t2) {
          return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t3) {
            return typeof t3;
          } : function(t3) {
            return t3 && "function" == typeof Symbol && t3.constructor === Symbol && t3 !== Symbol.prototype ? "symbol" : typeof t3;
          })(t2);
        }
        function a() {
          return (a = Object.assign || function(t2) {
            for (var e2 = 1; e2 < arguments.length; e2++) {
              var n2, o2 = arguments[e2];
              for (n2 in o2)
                Object.prototype.hasOwnProperty.call(o2, n2) && (t2[n2] = o2[n2]);
            }
            return t2;
          }).apply(this, arguments);
        }
        function i2(t2, e2) {
          if (null == t2)
            return {};
          var n2, o2 = function(t3, e3) {
            if (null == t3)
              return {};
            for (var n3, o3 = {}, i4 = Object.keys(t3), r3 = 0; r3 < i4.length; r3++)
              n3 = i4[r3], 0 <= e3.indexOf(n3) || (o3[n3] = t3[n3]);
            return o3;
          }(t2, e2);
          if (Object.getOwnPropertySymbols)
            for (var i3 = Object.getOwnPropertySymbols(t2), r2 = 0; r2 < i3.length; r2++)
              n2 = i3[r2], 0 <= e2.indexOf(n2) || Object.prototype.propertyIsEnumerable.call(t2, n2) && (o2[n2] = t2[n2]);
          return o2;
        }
        function r(t2) {
          return function(t3) {
            if (Array.isArray(t3))
              return l(t3);
          }(t2) || function(t3) {
            if ("undefined" != typeof Symbol && null != t3[Symbol.iterator] || null != t3["@@iterator"])
              return Array.from(t3);
          }(t2) || function(t3, e2) {
            if (t3) {
              if ("string" == typeof t3)
                return l(t3, e2);
              var n2 = Object.prototype.toString.call(t3).slice(8, -1);
              return "Map" === (n2 = "Object" === n2 && t3.constructor ? t3.constructor.name : n2) || "Set" === n2 ? Array.from(t3) : "Arguments" === n2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2) ? l(t3, e2) : void 0;
            }
          }(t2) || function() {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
          }();
        }
        function l(t2, e2) {
          (null == e2 || e2 > t2.length) && (e2 = t2.length);
          for (var n2 = 0, o2 = new Array(e2); n2 < e2; n2++)
            o2[n2] = t2[n2];
          return o2;
        }
        function t(t2) {
          if ("undefined" != typeof window && window.navigator)
            return !!navigator.userAgent.match(t2);
        }
        var y = t(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), w = t(/Edge/i), s = t(/firefox/i), u = t(/safari/i) && !t(/chrome/i) && !t(/android/i), n = t(/iP(ad|od|hone)/i), c = t(/chrome/i) && t(/android/i), d = { capture: false, passive: false };
        function h(t2, e2, n2) {
          t2.addEventListener(e2, n2, !y && d);
        }
        function f(t2, e2, n2) {
          t2.removeEventListener(e2, n2, !y && d);
        }
        function p(t2, e2) {
          if (e2 && (">" === e2[0] && (e2 = e2.substring(1)), t2))
            try {
              if (t2.matches)
                return t2.matches(e2);
              if (t2.msMatchesSelector)
                return t2.msMatchesSelector(e2);
              if (t2.webkitMatchesSelector)
                return t2.webkitMatchesSelector(e2);
            } catch (t3) {
              return;
            }
        }
        function N(t2, e2, n2, o2) {
          if (t2) {
            n2 = n2 || document;
            do {
              if (null != e2 && (">" !== e2[0] || t2.parentNode === n2) && p(t2, e2) || o2 && t2 === n2)
                return t2;
            } while (t2 !== n2 && (t2 = (i3 = t2).host && i3 !== document && i3.host.nodeType ? i3.host : i3.parentNode));
          }
          var i3;
          return null;
        }
        var g, m = /\s+/g;
        function I(t2, e2, n2) {
          var o2;
          t2 && e2 && (t2.classList ? t2.classList[n2 ? "add" : "remove"](e2) : (o2 = (" " + t2.className + " ").replace(m, " ").replace(" " + e2 + " ", " "), t2.className = (o2 + (n2 ? " " + e2 : "")).replace(m, " ")));
        }
        function P(t2, e2, n2) {
          var o2 = t2 && t2.style;
          if (o2) {
            if (void 0 === n2)
              return document.defaultView && document.defaultView.getComputedStyle ? n2 = document.defaultView.getComputedStyle(t2, "") : t2.currentStyle && (n2 = t2.currentStyle), void 0 === e2 ? n2 : n2[e2];
            o2[e2 = !(e2 in o2 || -1 !== e2.indexOf("webkit")) ? "-webkit-" + e2 : e2] = n2 + ("string" == typeof n2 ? "" : "px");
          }
        }
        function v(t2, e2) {
          var n2 = "";
          if ("string" == typeof t2)
            n2 = t2;
          else
            do {
              var o2 = P(t2, "transform");
            } while (o2 && "none" !== o2 && (n2 = o2 + " " + n2), !e2 && (t2 = t2.parentNode));
          var i3 = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;
          return i3 && new i3(n2);
        }
        function b(t2, e2, n2) {
          if (t2) {
            var o2 = t2.getElementsByTagName(e2), i3 = 0, r2 = o2.length;
            if (n2)
              for (; i3 < r2; i3++)
                n2(o2[i3], i3);
            return o2;
          }
          return [];
        }
        function O() {
          var t2 = document.scrollingElement;
          return t2 || document.documentElement;
        }
        function k(t2, e2, n2, o2, i3) {
          if (t2.getBoundingClientRect || t2 === window) {
            var r2, a2, l2, s2, c2, u2, d2 = t2 !== window && t2.parentNode && t2 !== O() ? (a2 = (r2 = t2.getBoundingClientRect()).top, l2 = r2.left, s2 = r2.bottom, c2 = r2.right, u2 = r2.height, r2.width) : (l2 = a2 = 0, s2 = window.innerHeight, c2 = window.innerWidth, u2 = window.innerHeight, window.innerWidth);
            if ((e2 || n2) && t2 !== window && (i3 = i3 || t2.parentNode, !y))
              do {
                if (i3 && i3.getBoundingClientRect && ("none" !== P(i3, "transform") || n2 && "static" !== P(i3, "position"))) {
                  var h2 = i3.getBoundingClientRect();
                  a2 -= h2.top + parseInt(P(i3, "border-top-width")), l2 -= h2.left + parseInt(P(i3, "border-left-width")), s2 = a2 + r2.height, c2 = l2 + r2.width;
                  break;
                }
              } while (i3 = i3.parentNode);
            return o2 && t2 !== window && (o2 = (e2 = v(i3 || t2)) && e2.a, t2 = e2 && e2.d, e2 && (s2 = (a2 /= t2) + (u2 /= t2), c2 = (l2 /= o2) + (d2 /= o2))), { top: a2, left: l2, bottom: s2, right: c2, width: d2, height: u2 };
          }
        }
        function R(t2, e2, n2) {
          for (var o2 = A(t2, true), i3 = k(t2)[e2]; o2; ) {
            var r2 = k(o2)[n2];
            if (!("top" === n2 || "left" === n2 ? r2 <= i3 : i3 <= r2))
              return o2;
            if (o2 === O())
              break;
            o2 = A(o2, false);
          }
          return false;
        }
        function X(t2, e2, n2, o2) {
          for (var i3 = 0, r2 = 0, a2 = t2.children; r2 < a2.length; ) {
            if ("none" !== a2[r2].style.display && a2[r2] !== Bt.ghost && (o2 || a2[r2] !== Bt.dragged) && N(a2[r2], n2.draggable, t2, false)) {
              if (i3 === e2)
                return a2[r2];
              i3++;
            }
            r2++;
          }
          return null;
        }
        function Y(t2, e2) {
          for (var n2 = t2.lastElementChild; n2 && (n2 === Bt.ghost || "none" === P(n2, "display") || e2 && !p(n2, e2)); )
            n2 = n2.previousElementSibling;
          return n2 || null;
        }
        function B(t2, e2) {
          var n2 = 0;
          if (!t2 || !t2.parentNode)
            return -1;
          for (; t2 = t2.previousElementSibling; )
            "TEMPLATE" === t2.nodeName.toUpperCase() || t2 === Bt.clone || e2 && !p(t2, e2) || n2++;
          return n2;
        }
        function E(t2) {
          var e2 = 0, n2 = 0, o2 = O();
          if (t2)
            do {
              var i3 = v(t2), r2 = i3.a, i3 = i3.d;
            } while (e2 += t2.scrollLeft * r2, n2 += t2.scrollTop * i3, t2 !== o2 && (t2 = t2.parentNode));
          return [e2, n2];
        }
        function A(t2, e2) {
          if (!t2 || !t2.getBoundingClientRect)
            return O();
          var n2 = t2, o2 = false;
          do {
            if (n2.clientWidth < n2.scrollWidth || n2.clientHeight < n2.scrollHeight) {
              var i3 = P(n2);
              if (n2.clientWidth < n2.scrollWidth && ("auto" == i3.overflowX || "scroll" == i3.overflowX) || n2.clientHeight < n2.scrollHeight && ("auto" == i3.overflowY || "scroll" == i3.overflowY)) {
                if (!n2.getBoundingClientRect || n2 === document.body)
                  return O();
                if (o2 || e2)
                  return n2;
                o2 = true;
              }
            }
          } while (n2 = n2.parentNode);
          return O();
        }
        function D(t2, e2) {
          return Math.round(t2.top) === Math.round(e2.top) && Math.round(t2.left) === Math.round(e2.left) && Math.round(t2.height) === Math.round(e2.height) && Math.round(t2.width) === Math.round(e2.width);
        }
        function S(e2, n2) {
          return function() {
            var t2;
            g || (1 === (t2 = arguments).length ? e2.call(this, t2[0]) : e2.apply(this, t2), g = setTimeout(function() {
              g = void 0;
            }, n2));
          };
        }
        function F(t2, e2, n2) {
          t2.scrollLeft += e2, t2.scrollTop += n2;
        }
        function _(t2) {
          var e2 = window.Polymer, n2 = window.jQuery || window.Zepto;
          return e2 && e2.dom ? e2.dom(t2).cloneNode(true) : n2 ? n2(t2).clone(true)[0] : t2.cloneNode(true);
        }
        function C(t2, e2) {
          P(t2, "position", "absolute"), P(t2, "top", e2.top), P(t2, "left", e2.left), P(t2, "width", e2.width), P(t2, "height", e2.height);
        }
        function T(t2) {
          P(t2, "position", ""), P(t2, "top", ""), P(t2, "left", ""), P(t2, "width", ""), P(t2, "height", "");
        }
        var j = "Sortable" + new Date().getTime();
        function x() {
          var e2, o2 = [];
          return { captureAnimationState: function() {
            o2 = [], this.options.animation && [].slice.call(this.el.children).forEach(function(t2) {
              var e3, n2;
              "none" !== P(t2, "display") && t2 !== Bt.ghost && (o2.push({ target: t2, rect: k(t2) }), e3 = M({}, o2[o2.length - 1].rect), !t2.thisAnimationDuration || (n2 = v(t2, true)) && (e3.top -= n2.f, e3.left -= n2.e), t2.fromRect = e3);
            });
          }, addAnimationState: function(t2) {
            o2.push(t2);
          }, removeAnimationState: function(t2) {
            o2.splice(function(t3, e3) {
              for (var n2 in t3)
                if (t3.hasOwnProperty(n2)) {
                  for (var o3 in e3)
                    if (e3.hasOwnProperty(o3) && e3[o3] === t3[n2][o3])
                      return Number(n2);
                }
              return -1;
            }(o2, { target: t2 }), 1);
          }, animateAll: function(t2) {
            var c2 = this;
            if (!this.options.animation)
              return clearTimeout(e2), void ("function" == typeof t2 && t2());
            var u2 = false, d2 = 0;
            o2.forEach(function(t3) {
              var e3 = 0, n2 = t3.target, o3 = n2.fromRect, i3 = k(n2), r2 = n2.prevFromRect, a2 = n2.prevToRect, l2 = t3.rect, s2 = v(n2, true);
              s2 && (i3.top -= s2.f, i3.left -= s2.e), n2.toRect = i3, n2.thisAnimationDuration && D(r2, i3) && !D(o3, i3) && (l2.top - i3.top) / (l2.left - i3.left) == (o3.top - i3.top) / (o3.left - i3.left) && (t3 = l2, s2 = r2, r2 = a2, a2 = c2.options, e3 = Math.sqrt(Math.pow(s2.top - t3.top, 2) + Math.pow(s2.left - t3.left, 2)) / Math.sqrt(Math.pow(s2.top - r2.top, 2) + Math.pow(s2.left - r2.left, 2)) * a2.animation), D(i3, o3) || (n2.prevFromRect = o3, n2.prevToRect = i3, e3 = e3 || c2.options.animation, c2.animate(n2, l2, i3, e3)), e3 && (u2 = true, d2 = Math.max(d2, e3), clearTimeout(n2.animationResetTimer), n2.animationResetTimer = setTimeout(function() {
                n2.animationTime = 0, n2.prevFromRect = null, n2.fromRect = null, n2.prevToRect = null, n2.thisAnimationDuration = null;
              }, e3), n2.thisAnimationDuration = e3);
            }), clearTimeout(e2), u2 ? e2 = setTimeout(function() {
              "function" == typeof t2 && t2();
            }, d2) : "function" == typeof t2 && t2(), o2 = [];
          }, animate: function(t2, e3, n2, o3) {
            var i3, r2;
            o3 && (P(t2, "transition", ""), P(t2, "transform", ""), i3 = (r2 = v(this.el)) && r2.a, r2 = r2 && r2.d, i3 = (e3.left - n2.left) / (i3 || 1), r2 = (e3.top - n2.top) / (r2 || 1), t2.animatingX = !!i3, t2.animatingY = !!r2, P(t2, "transform", "translate3d(" + i3 + "px," + r2 + "px,0)"), this.forRepaintDummy = t2.offsetWidth, P(t2, "transition", "transform " + o3 + "ms" + (this.options.easing ? " " + this.options.easing : "")), P(t2, "transform", "translate3d(0,0,0)"), "number" == typeof t2.animated && clearTimeout(t2.animated), t2.animated = setTimeout(function() {
              P(t2, "transition", ""), P(t2, "transform", ""), t2.animated = false, t2.animatingX = false, t2.animatingY = false;
            }, o3));
          } };
        }
        var H = [], L2 = { initializeByDefault: true }, K = { mount: function(e2) {
          for (var t2 in L2)
            !L2.hasOwnProperty(t2) || t2 in e2 || (e2[t2] = L2[t2]);
          H.forEach(function(t3) {
            if (t3.pluginName === e2.pluginName)
              throw "Sortable: Cannot mount plugin ".concat(e2.pluginName, " more than once");
          }), H.push(e2);
        }, pluginEvent: function(e2, n2, o2) {
          var t2 = this;
          this.eventCanceled = false, o2.cancel = function() {
            t2.eventCanceled = true;
          };
          var i3 = e2 + "Global";
          H.forEach(function(t3) {
            n2[t3.pluginName] && (n2[t3.pluginName][i3] && n2[t3.pluginName][i3](M({ sortable: n2 }, o2)), n2.options[t3.pluginName] && n2[t3.pluginName][e2] && n2[t3.pluginName][e2](M({ sortable: n2 }, o2)));
          });
        }, initializePlugins: function(n2, o2, i3, t2) {
          for (var e2 in H.forEach(function(t3) {
            var e3 = t3.pluginName;
            (n2.options[e3] || t3.initializeByDefault) && ((t3 = new t3(n2, o2, n2.options)).sortable = n2, t3.options = n2.options, n2[e3] = t3, a(i3, t3.defaults));
          }), n2.options) {
            var r2;
            n2.options.hasOwnProperty(e2) && (void 0 !== (r2 = this.modifyOption(n2, e2, n2.options[e2])) && (n2.options[e2] = r2));
          }
        }, getEventProperties: function(e2, n2) {
          var o2 = {};
          return H.forEach(function(t2) {
            "function" == typeof t2.eventProperties && a(o2, t2.eventProperties.call(n2[t2.pluginName], e2));
          }), o2;
        }, modifyOption: function(e2, n2, o2) {
          var i3;
          return H.forEach(function(t2) {
            e2[t2.pluginName] && t2.optionListeners && "function" == typeof t2.optionListeners[n2] && (i3 = t2.optionListeners[n2].call(e2[t2.pluginName], o2));
          }), i3;
        } };
        function W(t2) {
          var e2 = t2.sortable, n2 = t2.rootEl, o2 = t2.name, i3 = t2.targetEl, r2 = t2.cloneEl, a2 = t2.toEl, l2 = t2.fromEl, s2 = t2.oldIndex, c2 = t2.newIndex, u2 = t2.oldDraggableIndex, d2 = t2.newDraggableIndex, h2 = t2.originalEvent, f2 = t2.putSortable, p2 = t2.extraEventProperties;
          if (e2 = e2 || n2 && n2[j]) {
            var g2, m2 = e2.options, t2 = "on" + o2.charAt(0).toUpperCase() + o2.substr(1);
            !window.CustomEvent || y || w ? (g2 = document.createEvent("Event")).initEvent(o2, true, true) : g2 = new CustomEvent(o2, { bubbles: true, cancelable: true }), g2.to = a2 || n2, g2.from = l2 || n2, g2.item = i3 || n2, g2.clone = r2, g2.oldIndex = s2, g2.newIndex = c2, g2.oldDraggableIndex = u2, g2.newDraggableIndex = d2, g2.originalEvent = h2, g2.pullMode = f2 ? f2.lastPutMode : void 0;
            var v2, b2 = M(M({}, p2), K.getEventProperties(o2, e2));
            for (v2 in b2)
              g2[v2] = b2[v2];
            n2 && n2.dispatchEvent(g2), m2[t2] && m2[t2].call(e2, g2);
          }
        }
        function z(t2, e2) {
          var n2 = (o2 = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}).evt, o2 = i2(o2, G);
          K.pluginEvent.bind(Bt)(t2, e2, M({ dragEl: q, parentEl: V, ghostEl: Z, rootEl: $2, nextEl: Q, lastDownEl: J, cloneEl: tt, cloneHidden: et, dragStarted: pt, putSortable: lt, activeSortable: Bt.active, originalEvent: n2, oldIndex: nt, oldDraggableIndex: it, newIndex: ot, newDraggableIndex: rt, hideGhostForTarget: kt, unhideGhostForTarget: Rt, cloneNowHidden: function() {
            et = true;
          }, cloneNowShown: function() {
            et = false;
          }, dispatchSortableEvent: function(t3) {
            U({ sortable: e2, name: t3, originalEvent: n2 });
          } }, o2));
        }
        var G = ["evt"];
        function U(t2) {
          W(M({ putSortable: lt, cloneEl: tt, targetEl: q, rootEl: $2, oldIndex: nt, oldDraggableIndex: it, newIndex: ot, newDraggableIndex: rt }, t2));
        }
        var q, V, Z, $2, Q, J, tt, et, nt, ot, it, rt, at, lt, st, ct, ut, dt, ht, ft, pt, gt, mt, vt, bt, yt = false, wt = false, Et = [], Dt = false, St = false, _t = [], Ct = false, Tt = [], xt = "undefined" != typeof document, Ot = n, At = w || y ? "cssFloat" : "float", Mt = xt && !c && !n && "draggable" in document.createElement("div"), Nt = function() {
          if (xt) {
            if (y)
              return false;
            var t2 = document.createElement("x");
            return t2.style.cssText = "pointer-events:auto", "auto" === t2.style.pointerEvents;
          }
        }(), It = function(t2, e2) {
          var n2 = P(t2), o2 = parseInt(n2.width) - parseInt(n2.paddingLeft) - parseInt(n2.paddingRight) - parseInt(n2.borderLeftWidth) - parseInt(n2.borderRightWidth), i3 = X(t2, 0, e2), r2 = X(t2, 1, e2), a2 = i3 && P(i3), l2 = r2 && P(r2), s2 = a2 && parseInt(a2.marginLeft) + parseInt(a2.marginRight) + k(i3).width, t2 = l2 && parseInt(l2.marginLeft) + parseInt(l2.marginRight) + k(r2).width;
          if ("flex" === n2.display)
            return "column" === n2.flexDirection || "column-reverse" === n2.flexDirection ? "vertical" : "horizontal";
          if ("grid" === n2.display)
            return n2.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal";
          if (i3 && a2.float && "none" !== a2.float) {
            e2 = "left" === a2.float ? "left" : "right";
            return !r2 || "both" !== l2.clear && l2.clear !== e2 ? "horizontal" : "vertical";
          }
          return i3 && ("block" === a2.display || "flex" === a2.display || "table" === a2.display || "grid" === a2.display || o2 <= s2 && "none" === n2[At] || r2 && "none" === n2[At] && o2 < s2 + t2) ? "vertical" : "horizontal";
        }, Pt = function(t2) {
          function l2(r2, a2) {
            return function(t3, e3, n3, o2) {
              var i3 = t3.options.group.name && e3.options.group.name && t3.options.group.name === e3.options.group.name;
              if (null == r2 && (a2 || i3))
                return true;
              if (null == r2 || false === r2)
                return false;
              if (a2 && "clone" === r2)
                return r2;
              if ("function" == typeof r2)
                return l2(r2(t3, e3, n3, o2), a2)(t3, e3, n3, o2);
              e3 = (a2 ? t3 : e3).options.group.name;
              return true === r2 || "string" == typeof r2 && r2 === e3 || r2.join && -1 < r2.indexOf(e3);
            };
          }
          var e2 = {}, n2 = t2.group;
          n2 && "object" == o(n2) || (n2 = { name: n2 }), e2.name = n2.name, e2.checkPull = l2(n2.pull, true), e2.checkPut = l2(n2.put), e2.revertClone = n2.revertClone, t2.group = e2;
        }, kt = function() {
          !Nt && Z && P(Z, "display", "none");
        }, Rt = function() {
          !Nt && Z && P(Z, "display", "");
        };
        xt && !c && document.addEventListener("click", function(t2) {
          if (wt)
            return t2.preventDefault(), t2.stopPropagation && t2.stopPropagation(), t2.stopImmediatePropagation && t2.stopImmediatePropagation(), wt = false;
        }, true);
        function Xt(t2) {
          if (q) {
            t2 = t2.touches ? t2.touches[0] : t2;
            var e2 = (i3 = t2.clientX, r2 = t2.clientY, Et.some(function(t3) {
              var e3 = t3[j].options.emptyInsertThreshold;
              if (e3 && !Y(t3)) {
                var n3 = k(t3), o3 = i3 >= n3.left - e3 && i3 <= n3.right + e3, e3 = r2 >= n3.top - e3 && r2 <= n3.bottom + e3;
                return o3 && e3 ? a2 = t3 : void 0;
              }
            }), a2);
            if (e2) {
              var n2, o2 = {};
              for (n2 in t2)
                t2.hasOwnProperty(n2) && (o2[n2] = t2[n2]);
              o2.target = o2.rootEl = e2, o2.preventDefault = void 0, o2.stopPropagation = void 0, e2[j]._onDragOver(o2);
            }
          }
          var i3, r2, a2;
        }
        function Yt(t2) {
          q && q.parentNode[j]._isOutsideThisEl(t2.target);
        }
        function Bt(t2, e2) {
          if (!t2 || !t2.nodeType || 1 !== t2.nodeType)
            throw "Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t2));
          this.el = t2, this.options = e2 = a({}, e2), t2[j] = this;
          var n2, o2, i3 = { group: null, sort: true, disabled: false, store: null, handle: null, draggable: /^[uo]l$/i.test(t2.nodeName) ? ">li" : ">*", swapThreshold: 1, invertSwap: false, invertedSwapThreshold: null, removeCloneOnHide: true, direction: function() {
            return It(t2, this.options);
          }, ghostClass: "sortable-ghost", chosenClass: "sortable-chosen", dragClass: "sortable-drag", ignore: "a, img", filter: null, preventOnFilter: true, animation: 0, easing: null, setData: function(t3, e3) {
            t3.setData("Text", e3.textContent);
          }, dropBubble: false, dragoverBubble: false, dataIdAttr: "data-id", delay: 0, delayOnTouchOnly: false, touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1, forceFallback: false, fallbackClass: "sortable-fallback", fallbackOnBody: false, fallbackTolerance: 0, fallbackOffset: { x: 0, y: 0 }, supportPointer: false !== Bt.supportPointer && "PointerEvent" in window && !u, emptyInsertThreshold: 5 };
          for (n2 in K.initializePlugins(this, t2, i3), i3)
            n2 in e2 || (e2[n2] = i3[n2]);
          for (o2 in Pt(e2), this)
            "_" === o2.charAt(0) && "function" == typeof this[o2] && (this[o2] = this[o2].bind(this));
          this.nativeDraggable = !e2.forceFallback && Mt, this.nativeDraggable && (this.options.touchStartThreshold = 1), e2.supportPointer ? h(t2, "pointerdown", this._onTapStart) : (h(t2, "mousedown", this._onTapStart), h(t2, "touchstart", this._onTapStart)), this.nativeDraggable && (h(t2, "dragover", this), h(t2, "dragenter", this)), Et.push(this.el), e2.store && e2.store.get && this.sort(e2.store.get(this) || []), a(this, x());
        }
        function Ft(t2, e2, n2, o2, i3, r2, a2, l2) {
          var s2, c2, u2 = t2[j], d2 = u2.options.onMove;
          return !window.CustomEvent || y || w ? (s2 = document.createEvent("Event")).initEvent("move", true, true) : s2 = new CustomEvent("move", { bubbles: true, cancelable: true }), s2.to = e2, s2.from = t2, s2.dragged = n2, s2.draggedRect = o2, s2.related = i3 || e2, s2.relatedRect = r2 || k(e2), s2.willInsertAfter = l2, s2.originalEvent = a2, t2.dispatchEvent(s2), c2 = d2 ? d2.call(u2, s2, a2) : c2;
        }
        function jt(t2) {
          t2.draggable = false;
        }
        function Ht() {
          Ct = false;
        }
        function Lt(t2) {
          return setTimeout(t2, 0);
        }
        function Kt(t2) {
          return clearTimeout(t2);
        }
        Bt.prototype = { constructor: Bt, _isOutsideThisEl: function(t2) {
          this.el.contains(t2) || t2 === this.el || (gt = null);
        }, _getDirection: function(t2, e2) {
          return "function" == typeof this.options.direction ? this.options.direction.call(this, t2, e2, q) : this.options.direction;
        }, _onTapStart: function(e2) {
          if (e2.cancelable) {
            var n2 = this, o2 = this.el, t2 = this.options, i3 = t2.preventOnFilter, r2 = e2.type, a2 = e2.touches && e2.touches[0] || e2.pointerType && "touch" === e2.pointerType && e2, l2 = (a2 || e2).target, s2 = e2.target.shadowRoot && (e2.path && e2.path[0] || e2.composedPath && e2.composedPath()[0]) || l2, c2 = t2.filter;
            if (!function(t3) {
              Tt.length = 0;
              var e3 = t3.getElementsByTagName("input"), n3 = e3.length;
              for (; n3--; ) {
                var o3 = e3[n3];
                o3.checked && Tt.push(o3);
              }
            }(o2), !q && !(/mousedown|pointerdown/.test(r2) && 0 !== e2.button || t2.disabled) && !s2.isContentEditable && (this.nativeDraggable || !u || !l2 || "SELECT" !== l2.tagName.toUpperCase()) && !((l2 = N(l2, t2.draggable, o2, false)) && l2.animated || J === l2)) {
              if (nt = B(l2), it = B(l2, t2.draggable), "function" == typeof c2) {
                if (c2.call(this, e2, l2, this))
                  return U({ sortable: n2, rootEl: s2, name: "filter", targetEl: l2, toEl: o2, fromEl: o2 }), z("filter", n2, { evt: e2 }), void (i3 && e2.cancelable && e2.preventDefault());
              } else if (c2 = c2 && c2.split(",").some(function(t3) {
                if (t3 = N(s2, t3.trim(), o2, false))
                  return U({ sortable: n2, rootEl: t3, name: "filter", targetEl: l2, fromEl: o2, toEl: o2 }), z("filter", n2, { evt: e2 }), true;
              }))
                return void (i3 && e2.cancelable && e2.preventDefault());
              t2.handle && !N(s2, t2.handle, o2, false) || this._prepareDragStart(e2, a2, l2);
            }
          }
        }, _prepareDragStart: function(t2, e2, n2) {
          var o2, i3 = this, r2 = i3.el, a2 = i3.options, l2 = r2.ownerDocument;
          n2 && !q && n2.parentNode === r2 && (o2 = k(n2), $2 = r2, V = (q = n2).parentNode, Q = q.nextSibling, J = n2, at = a2.group, st = { target: Bt.dragged = q, clientX: (e2 || t2).clientX, clientY: (e2 || t2).clientY }, ht = st.clientX - o2.left, ft = st.clientY - o2.top, this._lastX = (e2 || t2).clientX, this._lastY = (e2 || t2).clientY, q.style["will-change"] = "all", o2 = function() {
            z("delayEnded", i3, { evt: t2 }), Bt.eventCanceled ? i3._onDrop() : (i3._disableDelayedDragEvents(), !s && i3.nativeDraggable && (q.draggable = true), i3._triggerDragStart(t2, e2), U({ sortable: i3, name: "choose", originalEvent: t2 }), I(q, a2.chosenClass, true));
          }, a2.ignore.split(",").forEach(function(t3) {
            b(q, t3.trim(), jt);
          }), h(l2, "dragover", Xt), h(l2, "mousemove", Xt), h(l2, "touchmove", Xt), h(l2, "mouseup", i3._onDrop), h(l2, "touchend", i3._onDrop), h(l2, "touchcancel", i3._onDrop), s && this.nativeDraggable && (this.options.touchStartThreshold = 4, q.draggable = true), z("delayStart", this, { evt: t2 }), !a2.delay || a2.delayOnTouchOnly && !e2 || this.nativeDraggable && (w || y) ? o2() : Bt.eventCanceled ? this._onDrop() : (h(l2, "mouseup", i3._disableDelayedDrag), h(l2, "touchend", i3._disableDelayedDrag), h(l2, "touchcancel", i3._disableDelayedDrag), h(l2, "mousemove", i3._delayedDragTouchMoveHandler), h(l2, "touchmove", i3._delayedDragTouchMoveHandler), a2.supportPointer && h(l2, "pointermove", i3._delayedDragTouchMoveHandler), i3._dragStartTimer = setTimeout(o2, a2.delay)));
        }, _delayedDragTouchMoveHandler: function(t2) {
          t2 = t2.touches ? t2.touches[0] : t2;
          Math.max(Math.abs(t2.clientX - this._lastX), Math.abs(t2.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag();
        }, _disableDelayedDrag: function() {
          q && jt(q), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents();
        }, _disableDelayedDragEvents: function() {
          var t2 = this.el.ownerDocument;
          f(t2, "mouseup", this._disableDelayedDrag), f(t2, "touchend", this._disableDelayedDrag), f(t2, "touchcancel", this._disableDelayedDrag), f(t2, "mousemove", this._delayedDragTouchMoveHandler), f(t2, "touchmove", this._delayedDragTouchMoveHandler), f(t2, "pointermove", this._delayedDragTouchMoveHandler);
        }, _triggerDragStart: function(t2, e2) {
          e2 = e2 || "touch" == t2.pointerType && t2, !this.nativeDraggable || e2 ? this.options.supportPointer ? h(document, "pointermove", this._onTouchMove) : h(document, e2 ? "touchmove" : "mousemove", this._onTouchMove) : (h(q, "dragend", this), h($2, "dragstart", this._onDragStart));
          try {
            document.selection ? Lt(function() {
              document.selection.empty();
            }) : window.getSelection().removeAllRanges();
          } catch (t3) {
          }
        }, _dragStarted: function(t2, e2) {
          var n2;
          yt = false, $2 && q ? (z("dragStarted", this, { evt: e2 }), this.nativeDraggable && h(document, "dragover", Yt), n2 = this.options, t2 || I(q, n2.dragClass, false), I(q, n2.ghostClass, true), Bt.active = this, t2 && this._appendGhost(), U({ sortable: this, name: "start", originalEvent: e2 })) : this._nulling();
        }, _emulateDragOver: function() {
          if (ct) {
            this._lastX = ct.clientX, this._lastY = ct.clientY, kt();
            for (var t2 = document.elementFromPoint(ct.clientX, ct.clientY), e2 = t2; t2 && t2.shadowRoot && (t2 = t2.shadowRoot.elementFromPoint(ct.clientX, ct.clientY)) !== e2; )
              e2 = t2;
            if (q.parentNode[j]._isOutsideThisEl(t2), e2)
              do {
                if (e2[j]) {
                  if (e2[j]._onDragOver({ clientX: ct.clientX, clientY: ct.clientY, target: t2, rootEl: e2 }) && !this.options.dragoverBubble)
                    break;
                }
              } while (e2 = (t2 = e2).parentNode);
            Rt();
          }
        }, _onTouchMove: function(t2) {
          if (st) {
            var e2 = this.options, n2 = e2.fallbackTolerance, o2 = e2.fallbackOffset, i3 = t2.touches ? t2.touches[0] : t2, r2 = Z && v(Z, true), a2 = Z && r2 && r2.a, l2 = Z && r2 && r2.d, e2 = Ot && bt && E(bt), a2 = (i3.clientX - st.clientX + o2.x) / (a2 || 1) + (e2 ? e2[0] - _t[0] : 0) / (a2 || 1), l2 = (i3.clientY - st.clientY + o2.y) / (l2 || 1) + (e2 ? e2[1] - _t[1] : 0) / (l2 || 1);
            if (!Bt.active && !yt) {
              if (n2 && Math.max(Math.abs(i3.clientX - this._lastX), Math.abs(i3.clientY - this._lastY)) < n2)
                return;
              this._onDragStart(t2, true);
            }
            Z && (r2 ? (r2.e += a2 - (ut || 0), r2.f += l2 - (dt || 0)) : r2 = { a: 1, b: 0, c: 0, d: 1, e: a2, f: l2 }, r2 = "matrix(".concat(r2.a, ",").concat(r2.b, ",").concat(r2.c, ",").concat(r2.d, ",").concat(r2.e, ",").concat(r2.f, ")"), P(Z, "webkitTransform", r2), P(Z, "mozTransform", r2), P(Z, "msTransform", r2), P(Z, "transform", r2), ut = a2, dt = l2, ct = i3), t2.cancelable && t2.preventDefault();
          }
        }, _appendGhost: function() {
          if (!Z) {
            var t2 = this.options.fallbackOnBody ? document.body : $2, e2 = k(q, true, Ot, true, t2), n2 = this.options;
            if (Ot) {
              for (bt = t2; "static" === P(bt, "position") && "none" === P(bt, "transform") && bt !== document; )
                bt = bt.parentNode;
              bt !== document.body && bt !== document.documentElement ? (bt === document && (bt = O()), e2.top += bt.scrollTop, e2.left += bt.scrollLeft) : bt = O(), _t = E(bt);
            }
            I(Z = q.cloneNode(true), n2.ghostClass, false), I(Z, n2.fallbackClass, true), I(Z, n2.dragClass, true), P(Z, "transition", ""), P(Z, "transform", ""), P(Z, "box-sizing", "border-box"), P(Z, "margin", 0), P(Z, "top", e2.top), P(Z, "left", e2.left), P(Z, "width", e2.width), P(Z, "height", e2.height), P(Z, "opacity", "0.8"), P(Z, "position", Ot ? "absolute" : "fixed"), P(Z, "zIndex", "100000"), P(Z, "pointerEvents", "none"), Bt.ghost = Z, t2.appendChild(Z), P(Z, "transform-origin", ht / parseInt(Z.style.width) * 100 + "% " + ft / parseInt(Z.style.height) * 100 + "%");
          }
        }, _onDragStart: function(t2, e2) {
          var n2 = this, o2 = t2.dataTransfer, i3 = n2.options;
          z("dragStart", this, { evt: t2 }), Bt.eventCanceled ? this._onDrop() : (z("setupClone", this), Bt.eventCanceled || ((tt = _(q)).removeAttribute("id"), tt.draggable = false, tt.style["will-change"] = "", this._hideClone(), I(tt, this.options.chosenClass, false), Bt.clone = tt), n2.cloneId = Lt(function() {
            z("clone", n2), Bt.eventCanceled || (n2.options.removeCloneOnHide || $2.insertBefore(tt, q), n2._hideClone(), U({ sortable: n2, name: "clone" }));
          }), e2 || I(q, i3.dragClass, true), e2 ? (wt = true, n2._loopId = setInterval(n2._emulateDragOver, 50)) : (f(document, "mouseup", n2._onDrop), f(document, "touchend", n2._onDrop), f(document, "touchcancel", n2._onDrop), o2 && (o2.effectAllowed = "move", i3.setData && i3.setData.call(n2, o2, q)), h(document, "drop", n2), P(q, "transform", "translateZ(0)")), yt = true, n2._dragStartId = Lt(n2._dragStarted.bind(n2, e2, t2)), h(document, "selectstart", n2), pt = true, u && P(document.body, "user-select", "none"));
        }, _onDragOver: function(n2) {
          var o2, i3, r2, t2, a2 = this.el, l2 = n2.target, e2 = this.options, s2 = e2.group, c2 = Bt.active, u2 = at === s2, d2 = e2.sort, h2 = lt || c2, f2 = this, p2 = false;
          if (!Ct) {
            if (void 0 !== n2.preventDefault && n2.cancelable && n2.preventDefault(), l2 = N(l2, e2.draggable, a2, true), T2("dragOver"), Bt.eventCanceled)
              return p2;
            if (q.contains(n2.target) || l2.animated && l2.animatingX && l2.animatingY || f2._ignoreWhileAnimating === l2)
              return O2(false);
            if (wt = false, c2 && !e2.disabled && (u2 ? d2 || (i3 = V !== $2) : lt === this || (this.lastPutMode = at.checkPull(this, c2, q, n2)) && s2.checkPut(this, c2, q, n2))) {
              if (r2 = "vertical" === this._getDirection(n2, l2), o2 = k(q), T2("dragOverValid"), Bt.eventCanceled)
                return p2;
              if (i3)
                return V = $2, x2(), this._hideClone(), T2("revert"), Bt.eventCanceled || (Q ? $2.insertBefore(q, Q) : $2.appendChild(q)), O2(true);
              var g2 = Y(a2, e2.draggable);
              if (!g2 || function(t3, e3, n3) {
                n3 = k(Y(n3.el, n3.options.draggable));
                return e3 ? t3.clientX > n3.right + 10 || t3.clientX <= n3.right && t3.clientY > n3.bottom && t3.clientX >= n3.left : t3.clientX > n3.right && t3.clientY > n3.top || t3.clientX <= n3.right && t3.clientY > n3.bottom + 10;
              }(n2, r2, this) && !g2.animated) {
                if (g2 === q)
                  return O2(false);
                if ((l2 = g2 && a2 === n2.target ? g2 : l2) && (w2 = k(l2)), false !== Ft($2, a2, q, o2, l2, w2, n2, !!l2))
                  return x2(), g2 && g2.nextSibling ? a2.insertBefore(q, g2.nextSibling) : a2.appendChild(q), V = a2, A2(), O2(true);
              } else if (g2 && function(t3, e3, n3) {
                n3 = k(X(n3.el, 0, n3.options, true));
                return e3 ? t3.clientX < n3.left - 10 || t3.clientY < n3.top && t3.clientX < n3.right : t3.clientY < n3.top - 10 || t3.clientY < n3.bottom && t3.clientX < n3.left;
              }(n2, r2, this)) {
                var m2 = X(a2, 0, e2, true);
                if (m2 === q)
                  return O2(false);
                if (w2 = k(l2 = m2), false !== Ft($2, a2, q, o2, l2, w2, n2, false))
                  return x2(), a2.insertBefore(q, m2), V = a2, A2(), O2(true);
              } else if (l2.parentNode === a2) {
                var v2, b2, y2, w2 = k(l2), E2 = q.parentNode !== a2, D2 = (D2 = q.animated && q.toRect || o2, C2 = l2.animated && l2.toRect || w2, S2 = (t2 = r2) ? D2.left : D2.top, s2 = t2 ? D2.right : D2.bottom, g2 = t2 ? D2.width : D2.height, m2 = t2 ? C2.left : C2.top, D2 = t2 ? C2.right : C2.bottom, C2 = t2 ? C2.width : C2.height, !(S2 === m2 || s2 === D2 || S2 + g2 / 2 === m2 + C2 / 2)), S2 = r2 ? "top" : "left", g2 = R(l2, "top", "top") || R(q, "top", "top"), m2 = g2 ? g2.scrollTop : void 0;
                if (gt !== l2 && (b2 = w2[S2], Dt = false, St = !D2 && e2.invertSwap || E2), 0 !== (v2 = function(t3, e3, n3, o3, i4, r3, a3, l3) {
                  var s3 = o3 ? t3.clientY : t3.clientX, c3 = o3 ? n3.height : n3.width, t3 = o3 ? n3.top : n3.left, o3 = o3 ? n3.bottom : n3.right, n3 = false;
                  if (!a3) {
                    if (l3 && vt < c3 * i4) {
                      if (Dt = !Dt && (1 === mt ? t3 + c3 * r3 / 2 < s3 : s3 < o3 - c3 * r3 / 2) ? true : Dt)
                        n3 = true;
                      else if (1 === mt ? s3 < t3 + vt : o3 - vt < s3)
                        return -mt;
                    } else if (t3 + c3 * (1 - i4) / 2 < s3 && s3 < o3 - c3 * (1 - i4) / 2)
                      return function(t4) {
                        return B(q) < B(t4) ? 1 : -1;
                      }(e3);
                  }
                  if ((n3 = n3 || a3) && (s3 < t3 + c3 * r3 / 2 || o3 - c3 * r3 / 2 < s3))
                    return t3 + c3 / 2 < s3 ? 1 : -1;
                  return 0;
                }(n2, l2, w2, r2, D2 ? 1 : e2.swapThreshold, null == e2.invertedSwapThreshold ? e2.swapThreshold : e2.invertedSwapThreshold, St, gt === l2)))
                  for (var _2 = B(q); (y2 = V.children[_2 -= v2]) && ("none" === P(y2, "display") || y2 === Z); )
                    ;
                if (0 === v2 || y2 === l2)
                  return O2(false);
                mt = v2;
                var C2 = (gt = l2).nextElementSibling, E2 = false, D2 = Ft($2, a2, q, o2, l2, w2, n2, E2 = 1 === v2);
                if (false !== D2)
                  return 1 !== D2 && -1 !== D2 || (E2 = 1 === D2), Ct = true, setTimeout(Ht, 30), x2(), E2 && !C2 ? a2.appendChild(q) : l2.parentNode.insertBefore(q, E2 ? C2 : l2), g2 && F(g2, 0, m2 - g2.scrollTop), V = q.parentNode, void 0 === b2 || St || (vt = Math.abs(b2 - k(l2)[S2])), A2(), O2(true);
              }
              if (a2.contains(q))
                return O2(false);
            }
            return false;
          }
          function T2(t3, e3) {
            z(t3, f2, M({ evt: n2, isOwner: u2, axis: r2 ? "vertical" : "horizontal", revert: i3, dragRect: o2, targetRect: w2, canSort: d2, fromSortable: h2, target: l2, completed: O2, onMove: function(t4, e4) {
              return Ft($2, a2, q, o2, t4, k(t4), n2, e4);
            }, changed: A2 }, e3));
          }
          function x2() {
            T2("dragOverAnimationCapture"), f2.captureAnimationState(), f2 !== h2 && h2.captureAnimationState();
          }
          function O2(t3) {
            return T2("dragOverCompleted", { insertion: t3 }), t3 && (u2 ? c2._hideClone() : c2._showClone(f2), f2 !== h2 && (I(q, (lt || c2).options.ghostClass, false), I(q, e2.ghostClass, true)), lt !== f2 && f2 !== Bt.active ? lt = f2 : f2 === Bt.active && lt && (lt = null), h2 === f2 && (f2._ignoreWhileAnimating = l2), f2.animateAll(function() {
              T2("dragOverAnimationComplete"), f2._ignoreWhileAnimating = null;
            }), f2 !== h2 && (h2.animateAll(), h2._ignoreWhileAnimating = null)), (l2 === q && !q.animated || l2 === a2 && !l2.animated) && (gt = null), e2.dragoverBubble || n2.rootEl || l2 === document || (q.parentNode[j]._isOutsideThisEl(n2.target), t3 || Xt(n2)), !e2.dragoverBubble && n2.stopPropagation && n2.stopPropagation(), p2 = true;
          }
          function A2() {
            ot = B(q), rt = B(q, e2.draggable), U({ sortable: f2, name: "change", toEl: a2, newIndex: ot, newDraggableIndex: rt, originalEvent: n2 });
          }
        }, _ignoreWhileAnimating: null, _offMoveEvents: function() {
          f(document, "mousemove", this._onTouchMove), f(document, "touchmove", this._onTouchMove), f(document, "pointermove", this._onTouchMove), f(document, "dragover", Xt), f(document, "mousemove", Xt), f(document, "touchmove", Xt);
        }, _offUpEvents: function() {
          var t2 = this.el.ownerDocument;
          f(t2, "mouseup", this._onDrop), f(t2, "touchend", this._onDrop), f(t2, "pointerup", this._onDrop), f(t2, "touchcancel", this._onDrop), f(document, "selectstart", this);
        }, _onDrop: function(t2) {
          var e2 = this.el, n2 = this.options;
          ot = B(q), rt = B(q, n2.draggable), z("drop", this, { evt: t2 }), V = q && q.parentNode, ot = B(q), rt = B(q, n2.draggable), Bt.eventCanceled || (Dt = St = yt = false, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), Kt(this.cloneId), Kt(this._dragStartId), this.nativeDraggable && (f(document, "drop", this), f(e2, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), u && P(document.body, "user-select", ""), P(q, "transform", ""), t2 && (pt && (t2.cancelable && t2.preventDefault(), n2.dropBubble || t2.stopPropagation()), Z && Z.parentNode && Z.parentNode.removeChild(Z), ($2 === V || lt && "clone" !== lt.lastPutMode) && tt && tt.parentNode && tt.parentNode.removeChild(tt), q && (this.nativeDraggable && f(q, "dragend", this), jt(q), q.style["will-change"] = "", pt && !yt && I(q, (lt || this).options.ghostClass, false), I(q, this.options.chosenClass, false), U({ sortable: this, name: "unchoose", toEl: V, newIndex: null, newDraggableIndex: null, originalEvent: t2 }), $2 !== V ? (0 <= ot && (U({ rootEl: V, name: "add", toEl: V, fromEl: $2, originalEvent: t2 }), U({ sortable: this, name: "remove", toEl: V, originalEvent: t2 }), U({ rootEl: V, name: "sort", toEl: V, fromEl: $2, originalEvent: t2 }), U({ sortable: this, name: "sort", toEl: V, originalEvent: t2 })), lt && lt.save()) : ot !== nt && 0 <= ot && (U({ sortable: this, name: "update", toEl: V, originalEvent: t2 }), U({ sortable: this, name: "sort", toEl: V, originalEvent: t2 })), Bt.active && (null != ot && -1 !== ot || (ot = nt, rt = it), U({ sortable: this, name: "end", toEl: V, originalEvent: t2 }), this.save())))), this._nulling();
        }, _nulling: function() {
          z("nulling", this), $2 = q = V = Z = Q = tt = J = et = st = ct = pt = ot = rt = nt = it = gt = mt = lt = at = Bt.dragged = Bt.ghost = Bt.clone = Bt.active = null, Tt.forEach(function(t2) {
            t2.checked = true;
          }), Tt.length = ut = dt = 0;
        }, handleEvent: function(t2) {
          switch (t2.type) {
            case "drop":
            case "dragend":
              this._onDrop(t2);
              break;
            case "dragenter":
            case "dragover":
              q && (this._onDragOver(t2), function(t3) {
                t3.dataTransfer && (t3.dataTransfer.dropEffect = "move");
                t3.cancelable && t3.preventDefault();
              }(t2));
              break;
            case "selectstart":
              t2.preventDefault();
          }
        }, toArray: function() {
          for (var t2, e2 = [], n2 = this.el.children, o2 = 0, i3 = n2.length, r2 = this.options; o2 < i3; o2++)
            N(t2 = n2[o2], r2.draggable, this.el, false) && e2.push(t2.getAttribute(r2.dataIdAttr) || function(t3) {
              var e3 = t3.tagName + t3.className + t3.src + t3.href + t3.textContent, n3 = e3.length, o3 = 0;
              for (; n3--; )
                o3 += e3.charCodeAt(n3);
              return o3.toString(36);
            }(t2));
          return e2;
        }, sort: function(t2, e2) {
          var n2 = {}, o2 = this.el;
          this.toArray().forEach(function(t3, e3) {
            e3 = o2.children[e3];
            N(e3, this.options.draggable, o2, false) && (n2[t3] = e3);
          }, this), e2 && this.captureAnimationState(), t2.forEach(function(t3) {
            n2[t3] && (o2.removeChild(n2[t3]), o2.appendChild(n2[t3]));
          }), e2 && this.animateAll();
        }, save: function() {
          var t2 = this.options.store;
          t2 && t2.set && t2.set(this);
        }, closest: function(t2, e2) {
          return N(t2, e2 || this.options.draggable, this.el, false);
        }, option: function(t2, e2) {
          var n2 = this.options;
          if (void 0 === e2)
            return n2[t2];
          var o2 = K.modifyOption(this, t2, e2);
          n2[t2] = void 0 !== o2 ? o2 : e2, "group" === t2 && Pt(n2);
        }, destroy: function() {
          z("destroy", this);
          var t2 = this.el;
          t2[j] = null, f(t2, "mousedown", this._onTapStart), f(t2, "touchstart", this._onTapStart), f(t2, "pointerdown", this._onTapStart), this.nativeDraggable && (f(t2, "dragover", this), f(t2, "dragenter", this)), Array.prototype.forEach.call(t2.querySelectorAll("[draggable]"), function(t3) {
            t3.removeAttribute("draggable");
          }), this._onDrop(), this._disableDelayedDragEvents(), Et.splice(Et.indexOf(this.el), 1), this.el = t2 = null;
        }, _hideClone: function() {
          et || (z("hideClone", this), Bt.eventCanceled || (P(tt, "display", "none"), this.options.removeCloneOnHide && tt.parentNode && tt.parentNode.removeChild(tt), et = true));
        }, _showClone: function(t2) {
          "clone" === t2.lastPutMode ? et && (z("showClone", this), Bt.eventCanceled || (q.parentNode != $2 || this.options.group.revertClone ? Q ? $2.insertBefore(tt, Q) : $2.appendChild(tt) : $2.insertBefore(tt, q), this.options.group.revertClone && this.animate(q, tt), P(tt, "display", ""), et = false)) : this._hideClone();
        } }, xt && h(document, "touchmove", function(t2) {
          (Bt.active || yt) && t2.cancelable && t2.preventDefault();
        }), Bt.utils = { on: h, off: f, css: P, find: b, is: function(t2, e2) {
          return !!N(t2, e2, t2, false);
        }, extend: function(t2, e2) {
          if (t2 && e2)
            for (var n2 in e2)
              e2.hasOwnProperty(n2) && (t2[n2] = e2[n2]);
          return t2;
        }, throttle: S, closest: N, toggleClass: I, clone: _, index: B, nextTick: Lt, cancelNextTick: Kt, detectDirection: It, getChild: X }, Bt.get = function(t2) {
          return t2[j];
        }, Bt.mount = function() {
          for (var t2 = arguments.length, e2 = new Array(t2), n2 = 0; n2 < t2; n2++)
            e2[n2] = arguments[n2];
          (e2 = e2[0].constructor === Array ? e2[0] : e2).forEach(function(t3) {
            if (!t3.prototype || !t3.prototype.constructor)
              throw "Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t3));
            t3.utils && (Bt.utils = M(M({}, Bt.utils), t3.utils)), K.mount(t3);
          });
        }, Bt.create = function(t2, e2) {
          return new Bt(t2, e2);
        };
        var Wt, zt, Gt, Ut, qt, Vt, Zt = [], $t = !(Bt.version = "1.15.0");
        function Qt() {
          Zt.forEach(function(t2) {
            clearInterval(t2.pid);
          }), Zt = [];
        }
        function Jt() {
          clearInterval(Vt);
        }
        var te, ee = S(function(n2, t2, e2, o2) {
          if (t2.scroll) {
            var i3, r2 = (n2.touches ? n2.touches[0] : n2).clientX, a2 = (n2.touches ? n2.touches[0] : n2).clientY, l2 = t2.scrollSensitivity, s2 = t2.scrollSpeed, c2 = O(), u2 = false;
            zt !== e2 && (zt = e2, Qt(), Wt = t2.scroll, i3 = t2.scrollFn, true === Wt && (Wt = A(e2, true)));
            var d2 = 0, h2 = Wt;
            do {
              var f2 = h2, p2 = k(f2), g2 = p2.top, m2 = p2.bottom, v2 = p2.left, b2 = p2.right, y2 = p2.width, w2 = p2.height, E2 = void 0, D2 = void 0, S2 = f2.scrollWidth, _2 = f2.scrollHeight, C2 = P(f2), T2 = f2.scrollLeft, p2 = f2.scrollTop, D2 = f2 === c2 ? (E2 = y2 < S2 && ("auto" === C2.overflowX || "scroll" === C2.overflowX || "visible" === C2.overflowX), w2 < _2 && ("auto" === C2.overflowY || "scroll" === C2.overflowY || "visible" === C2.overflowY)) : (E2 = y2 < S2 && ("auto" === C2.overflowX || "scroll" === C2.overflowX), w2 < _2 && ("auto" === C2.overflowY || "scroll" === C2.overflowY)), T2 = E2 && (Math.abs(b2 - r2) <= l2 && T2 + y2 < S2) - (Math.abs(v2 - r2) <= l2 && !!T2), p2 = D2 && (Math.abs(m2 - a2) <= l2 && p2 + w2 < _2) - (Math.abs(g2 - a2) <= l2 && !!p2);
              if (!Zt[d2])
                for (var x2 = 0; x2 <= d2; x2++)
                  Zt[x2] || (Zt[x2] = {});
              Zt[d2].vx == T2 && Zt[d2].vy == p2 && Zt[d2].el === f2 || (Zt[d2].el = f2, Zt[d2].vx = T2, Zt[d2].vy = p2, clearInterval(Zt[d2].pid), 0 == T2 && 0 == p2 || (u2 = true, Zt[d2].pid = setInterval(function() {
                o2 && 0 === this.layer && Bt.active._onTouchMove(qt);
                var t3 = Zt[this.layer].vy ? Zt[this.layer].vy * s2 : 0, e3 = Zt[this.layer].vx ? Zt[this.layer].vx * s2 : 0;
                "function" == typeof i3 && "continue" !== i3.call(Bt.dragged.parentNode[j], e3, t3, n2, qt, Zt[this.layer].el) || F(Zt[this.layer].el, e3, t3);
              }.bind({ layer: d2 }), 24))), d2++;
            } while (t2.bubbleScroll && h2 !== c2 && (h2 = A(h2, false)));
            $t = u2;
          }
        }, 30), c = function(t2) {
          var e2 = t2.originalEvent, n2 = t2.putSortable, o2 = t2.dragEl, i3 = t2.activeSortable, r2 = t2.dispatchSortableEvent, a2 = t2.hideGhostForTarget, t2 = t2.unhideGhostForTarget;
          e2 && (i3 = n2 || i3, a2(), e2 = e2.changedTouches && e2.changedTouches.length ? e2.changedTouches[0] : e2, e2 = document.elementFromPoint(e2.clientX, e2.clientY), t2(), i3 && !i3.el.contains(e2) && (r2("spill"), this.onSpill({ dragEl: o2, putSortable: n2 })));
        };
        function ne() {
        }
        function oe() {
        }
        ne.prototype = { startIndex: null, dragStart: function(t2) {
          t2 = t2.oldDraggableIndex;
          this.startIndex = t2;
        }, onSpill: function(t2) {
          var e2 = t2.dragEl, n2 = t2.putSortable;
          this.sortable.captureAnimationState(), n2 && n2.captureAnimationState();
          t2 = X(this.sortable.el, this.startIndex, this.options);
          t2 ? this.sortable.el.insertBefore(e2, t2) : this.sortable.el.appendChild(e2), this.sortable.animateAll(), n2 && n2.animateAll();
        }, drop: c }, a(ne, { pluginName: "revertOnSpill" }), oe.prototype = { onSpill: function(t2) {
          var e2 = t2.dragEl, t2 = t2.putSortable || this.sortable;
          t2.captureAnimationState(), e2.parentNode && e2.parentNode.removeChild(e2), t2.animateAll();
        }, drop: c }, a(oe, { pluginName: "removeOnSpill" });
        var ie, re2, ae, le, se, ce = [], ue = [], de = false, he = false, fe = false;
        function pe(n2, o2) {
          ue.forEach(function(t2, e2) {
            e2 = o2.children[t2.sortableIndex + (n2 ? Number(e2) : 0)];
            e2 ? o2.insertBefore(t2, e2) : o2.appendChild(t2);
          });
        }
        function ge() {
          ce.forEach(function(t2) {
            t2 !== ae && t2.parentNode && t2.parentNode.removeChild(t2);
          });
        }
        return Bt.mount(new function() {
          function t2() {
            for (var t3 in this.defaults = { scroll: true, forceAutoScrollFallback: false, scrollSensitivity: 30, scrollSpeed: 10, bubbleScroll: true }, this)
              "_" === t3.charAt(0) && "function" == typeof this[t3] && (this[t3] = this[t3].bind(this));
          }
          return t2.prototype = { dragStarted: function(t3) {
            t3 = t3.originalEvent;
            this.sortable.nativeDraggable ? h(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? h(document, "pointermove", this._handleFallbackAutoScroll) : t3.touches ? h(document, "touchmove", this._handleFallbackAutoScroll) : h(document, "mousemove", this._handleFallbackAutoScroll);
          }, dragOverCompleted: function(t3) {
            t3 = t3.originalEvent;
            this.options.dragOverBubble || t3.rootEl || this._handleAutoScroll(t3);
          }, drop: function() {
            this.sortable.nativeDraggable ? f(document, "dragover", this._handleAutoScroll) : (f(document, "pointermove", this._handleFallbackAutoScroll), f(document, "touchmove", this._handleFallbackAutoScroll), f(document, "mousemove", this._handleFallbackAutoScroll)), Jt(), Qt(), clearTimeout(g), g = void 0;
          }, nulling: function() {
            qt = zt = Wt = $t = Vt = Gt = Ut = null, Zt.length = 0;
          }, _handleFallbackAutoScroll: function(t3) {
            this._handleAutoScroll(t3, true);
          }, _handleAutoScroll: function(e2, n2) {
            var o2, i3 = this, r2 = (e2.touches ? e2.touches[0] : e2).clientX, a2 = (e2.touches ? e2.touches[0] : e2).clientY, t3 = document.elementFromPoint(r2, a2);
            qt = e2, n2 || this.options.forceAutoScrollFallback || w || y || u ? (ee(e2, this.options, t3, n2), o2 = A(t3, true), !$t || Vt && r2 === Gt && a2 === Ut || (Vt && Jt(), Vt = setInterval(function() {
              var t4 = A(document.elementFromPoint(r2, a2), true);
              t4 !== o2 && (o2 = t4, Qt()), ee(e2, i3.options, t4, n2);
            }, 10), Gt = r2, Ut = a2)) : this.options.bubbleScroll && A(t3, true) !== O() ? ee(e2, this.options, A(t3, false), false) : Qt();
          } }, a(t2, { pluginName: "scroll", initializeByDefault: true });
        }()), Bt.mount(oe, ne), Bt.mount(new function() {
          function t2() {
            this.defaults = { swapClass: "sortable-swap-highlight" };
          }
          return t2.prototype = { dragStart: function(t3) {
            t3 = t3.dragEl;
            te = t3;
          }, dragOverValid: function(t3) {
            var e2 = t3.completed, n2 = t3.target, o2 = t3.onMove, i3 = t3.activeSortable, r2 = t3.changed, a2 = t3.cancel;
            i3.options.swap && (t3 = this.sortable.el, i3 = this.options, n2 && n2 !== t3 && (t3 = te, te = false !== o2(n2) ? (I(n2, i3.swapClass, true), n2) : null, t3 && t3 !== te && I(t3, i3.swapClass, false)), r2(), e2(true), a2());
          }, drop: function(t3) {
            var e2, n2, o2 = t3.activeSortable, i3 = t3.putSortable, r2 = t3.dragEl, a2 = i3 || this.sortable, l2 = this.options;
            te && I(te, l2.swapClass, false), te && (l2.swap || i3 && i3.options.swap) && r2 !== te && (a2.captureAnimationState(), a2 !== o2 && o2.captureAnimationState(), n2 = te, t3 = (e2 = r2).parentNode, l2 = n2.parentNode, t3 && l2 && !t3.isEqualNode(n2) && !l2.isEqualNode(e2) && (i3 = B(e2), r2 = B(n2), t3.isEqualNode(l2) && i3 < r2 && r2++, t3.insertBefore(n2, t3.children[i3]), l2.insertBefore(e2, l2.children[r2])), a2.animateAll(), a2 !== o2 && o2.animateAll());
          }, nulling: function() {
            te = null;
          } }, a(t2, { pluginName: "swap", eventProperties: function() {
            return { swapItem: te };
          } });
        }()), Bt.mount(new function() {
          function t2(o2) {
            for (var t3 in this)
              "_" === t3.charAt(0) && "function" == typeof this[t3] && (this[t3] = this[t3].bind(this));
            o2.options.avoidImplicitDeselect || (o2.options.supportPointer ? h(document, "pointerup", this._deselectMultiDrag) : (h(document, "mouseup", this._deselectMultiDrag), h(document, "touchend", this._deselectMultiDrag))), h(document, "keydown", this._checkKeyDown), h(document, "keyup", this._checkKeyUp), this.defaults = { selectedClass: "sortable-selected", multiDragKey: null, avoidImplicitDeselect: false, setData: function(t4, e2) {
              var n2 = "";
              ce.length && re2 === o2 ? ce.forEach(function(t5, e3) {
                n2 += (e3 ? ", " : "") + t5.textContent;
              }) : n2 = e2.textContent, t4.setData("Text", n2);
            } };
          }
          return t2.prototype = { multiDragKeyDown: false, isMultiDrag: false, delayStartGlobal: function(t3) {
            t3 = t3.dragEl;
            ae = t3;
          }, delayEnded: function() {
            this.isMultiDrag = ~ce.indexOf(ae);
          }, setupClone: function(t3) {
            var e2 = t3.sortable, t3 = t3.cancel;
            if (this.isMultiDrag) {
              for (var n2 = 0; n2 < ce.length; n2++)
                ue.push(_(ce[n2])), ue[n2].sortableIndex = ce[n2].sortableIndex, ue[n2].draggable = false, ue[n2].style["will-change"] = "", I(ue[n2], this.options.selectedClass, false), ce[n2] === ae && I(ue[n2], this.options.chosenClass, false);
              e2._hideClone(), t3();
            }
          }, clone: function(t3) {
            var e2 = t3.sortable, n2 = t3.rootEl, o2 = t3.dispatchSortableEvent, t3 = t3.cancel;
            this.isMultiDrag && (this.options.removeCloneOnHide || ce.length && re2 === e2 && (pe(true, n2), o2("clone"), t3()));
          }, showClone: function(t3) {
            var e2 = t3.cloneNowShown, n2 = t3.rootEl, t3 = t3.cancel;
            this.isMultiDrag && (pe(false, n2), ue.forEach(function(t4) {
              P(t4, "display", "");
            }), e2(), se = false, t3());
          }, hideClone: function(t3) {
            var e2 = this, n2 = (t3.sortable, t3.cloneNowHidden), t3 = t3.cancel;
            this.isMultiDrag && (ue.forEach(function(t4) {
              P(t4, "display", "none"), e2.options.removeCloneOnHide && t4.parentNode && t4.parentNode.removeChild(t4);
            }), n2(), se = true, t3());
          }, dragStartGlobal: function(t3) {
            t3.sortable;
            !this.isMultiDrag && re2 && re2.multiDrag._deselectMultiDrag(), ce.forEach(function(t4) {
              t4.sortableIndex = B(t4);
            }), ce = ce.sort(function(t4, e2) {
              return t4.sortableIndex - e2.sortableIndex;
            }), fe = true;
          }, dragStarted: function(t3) {
            var e2, n2 = this, t3 = t3.sortable;
            this.isMultiDrag && (this.options.sort && (t3.captureAnimationState(), this.options.animation && (ce.forEach(function(t4) {
              t4 !== ae && P(t4, "position", "absolute");
            }), e2 = k(ae, false, true, true), ce.forEach(function(t4) {
              t4 !== ae && C(t4, e2);
            }), de = he = true)), t3.animateAll(function() {
              de = he = false, n2.options.animation && ce.forEach(function(t4) {
                T(t4);
              }), n2.options.sort && ge();
            }));
          }, dragOver: function(t3) {
            var e2 = t3.target, n2 = t3.completed, t3 = t3.cancel;
            he && ~ce.indexOf(e2) && (n2(false), t3());
          }, revert: function(t3) {
            var n2, o2, e2 = t3.fromSortable, i3 = t3.rootEl, r2 = t3.sortable, a2 = t3.dragRect;
            1 < ce.length && (ce.forEach(function(t4) {
              r2.addAnimationState({ target: t4, rect: he ? k(t4) : a2 }), T(t4), t4.fromRect = a2, e2.removeAnimationState(t4);
            }), he = false, n2 = !this.options.removeCloneOnHide, o2 = i3, ce.forEach(function(t4, e3) {
              e3 = o2.children[t4.sortableIndex + (n2 ? Number(e3) : 0)];
              e3 ? o2.insertBefore(t4, e3) : o2.appendChild(t4);
            }));
          }, dragOverCompleted: function(t3) {
            var e2, n2 = t3.sortable, o2 = t3.isOwner, i3 = t3.insertion, r2 = t3.activeSortable, a2 = t3.parentEl, l2 = t3.putSortable, t3 = this.options;
            i3 && (o2 && r2._hideClone(), de = false, t3.animation && 1 < ce.length && (he || !o2 && !r2.options.sort && !l2) && (e2 = k(ae, false, true, true), ce.forEach(function(t4) {
              t4 !== ae && (C(t4, e2), a2.appendChild(t4));
            }), he = true), o2 || (he || ge(), 1 < ce.length ? (o2 = se, r2._showClone(n2), r2.options.animation && !se && o2 && ue.forEach(function(t4) {
              r2.addAnimationState({ target: t4, rect: le }), t4.fromRect = le, t4.thisAnimationDuration = null;
            })) : r2._showClone(n2)));
          }, dragOverAnimationCapture: function(t3) {
            var e2 = t3.dragRect, n2 = t3.isOwner, t3 = t3.activeSortable;
            ce.forEach(function(t4) {
              t4.thisAnimationDuration = null;
            }), t3.options.animation && !n2 && t3.multiDrag.isMultiDrag && (le = a({}, e2), e2 = v(ae, true), le.top -= e2.f, le.left -= e2.e);
          }, dragOverAnimationComplete: function() {
            he && (he = false, ge());
          }, drop: function(t3) {
            var e2 = t3.originalEvent, n2 = t3.rootEl, o2 = t3.parentEl, i3 = t3.sortable, r2 = t3.dispatchSortableEvent, a2 = t3.oldIndex, l2 = t3.putSortable, s2 = l2 || this.sortable;
            if (e2) {
              var c2, u2, d2, h2 = this.options, f2 = o2.children;
              if (!fe)
                if (h2.multiDragKey && !this.multiDragKeyDown && this._deselectMultiDrag(), I(ae, h2.selectedClass, !~ce.indexOf(ae)), ~ce.indexOf(ae))
                  ce.splice(ce.indexOf(ae), 1), ie = null, W({ sortable: i3, rootEl: n2, name: "deselect", targetEl: ae, originalEvent: e2 });
                else {
                  if (ce.push(ae), W({ sortable: i3, rootEl: n2, name: "select", targetEl: ae, originalEvent: e2 }), e2.shiftKey && ie && i3.el.contains(ie)) {
                    var p2 = B(ie), t3 = B(ae);
                    if (~p2 && ~t3 && p2 !== t3)
                      for (var g2, m2 = p2 < t3 ? (g2 = p2, t3) : (g2 = t3, p2 + 1); g2 < m2; g2++)
                        ~ce.indexOf(f2[g2]) || (I(f2[g2], h2.selectedClass, true), ce.push(f2[g2]), W({ sortable: i3, rootEl: n2, name: "select", targetEl: f2[g2], originalEvent: e2 }));
                  } else
                    ie = ae;
                  re2 = s2;
                }
              fe && this.isMultiDrag && (he = false, (o2[j].options.sort || o2 !== n2) && 1 < ce.length && (c2 = k(ae), u2 = B(ae, ":not(." + this.options.selectedClass + ")"), !de && h2.animation && (ae.thisAnimationDuration = null), s2.captureAnimationState(), de || (h2.animation && (ae.fromRect = c2, ce.forEach(function(t4) {
                var e3;
                t4.thisAnimationDuration = null, t4 !== ae && (e3 = he ? k(t4) : c2, t4.fromRect = e3, s2.addAnimationState({ target: t4, rect: e3 }));
              })), ge(), ce.forEach(function(t4) {
                f2[u2] ? o2.insertBefore(t4, f2[u2]) : o2.appendChild(t4), u2++;
              }), a2 === B(ae) && (d2 = false, ce.forEach(function(t4) {
                t4.sortableIndex !== B(t4) && (d2 = true);
              }), d2 && r2("update"))), ce.forEach(function(t4) {
                T(t4);
              }), s2.animateAll()), re2 = s2), (n2 === o2 || l2 && "clone" !== l2.lastPutMode) && ue.forEach(function(t4) {
                t4.parentNode && t4.parentNode.removeChild(t4);
              });
            }
          }, nullingGlobal: function() {
            this.isMultiDrag = fe = false, ue.length = 0;
          }, destroyGlobal: function() {
            this._deselectMultiDrag(), f(document, "pointerup", this._deselectMultiDrag), f(document, "mouseup", this._deselectMultiDrag), f(document, "touchend", this._deselectMultiDrag), f(document, "keydown", this._checkKeyDown), f(document, "keyup", this._checkKeyUp);
          }, _deselectMultiDrag: function(t3) {
            if (!(void 0 !== fe && fe || re2 !== this.sortable || t3 && N(t3.target, this.options.draggable, this.sortable.el, false) || t3 && 0 !== t3.button))
              for (; ce.length; ) {
                var e2 = ce[0];
                I(e2, this.options.selectedClass, false), ce.shift(), W({ sortable: this.sortable, rootEl: this.sortable.el, name: "deselect", targetEl: e2, originalEvent: t3 });
              }
          }, _checkKeyDown: function(t3) {
            t3.key === this.options.multiDragKey && (this.multiDragKeyDown = true);
          }, _checkKeyUp: function(t3) {
            t3.key === this.options.multiDragKey && (this.multiDragKeyDown = false);
          } }, a(t2, { pluginName: "multiDrag", utils: { select: function(t3) {
            var e2 = t3.parentNode[j];
            e2 && e2.options.multiDrag && !~ce.indexOf(t3) && (re2 && re2 !== e2 && (re2.multiDrag._deselectMultiDrag(), re2 = e2), I(t3, e2.options.selectedClass, true), ce.push(t3));
          }, deselect: function(t3) {
            var e2 = t3.parentNode[j], n2 = ce.indexOf(t3);
            e2 && e2.options.multiDrag && ~n2 && (I(t3, e2.options.selectedClass, false), ce.splice(n2, 1));
          } }, eventProperties: function() {
            var n2 = this, o2 = [], i3 = [];
            return ce.forEach(function(t3) {
              var e2;
              o2.push({ multiDragElement: t3, index: t3.sortableIndex }), e2 = he && t3 !== ae ? -1 : he ? B(t3, ":not(." + n2.options.selectedClass + ")") : B(t3), i3.push({ multiDragElement: t3, index: e2 });
            }), { items: r(ce), clones: [].concat(ue), oldIndicies: o2, newIndicies: i3 };
          }, optionListeners: { multiDragKey: function(t3) {
            return "ctrl" === (t3 = t3.toLowerCase()) ? t3 = "Control" : 1 < t3.length && (t3 = t3.charAt(0).toUpperCase() + t3.substr(1)), t3;
          } } });
        }()), Bt;
      });
    }
  });

  // node_modules/fast-deep-equal/index.js
  var require_fast_deep_equal = __commonJS({
    "node_modules/fast-deep-equal/index.js"(exports, module) {
      "use strict";
      var isArray = Array.isArray;
      var keyList = Object.keys;
      var hasProp = Object.prototype.hasOwnProperty;
      module.exports = function equal(a, b) {
        if (a === b)
          return true;
        if (a && b && typeof a == "object" && typeof b == "object") {
          var arrA = isArray(a), arrB = isArray(b), i2, length2, key;
          if (arrA && arrB) {
            length2 = a.length;
            if (length2 != b.length)
              return false;
            for (i2 = length2; i2-- !== 0; )
              if (!equal(a[i2], b[i2]))
                return false;
            return true;
          }
          if (arrA != arrB)
            return false;
          var dateA = a instanceof Date, dateB = b instanceof Date;
          if (dateA != dateB)
            return false;
          if (dateA && dateB)
            return a.getTime() == b.getTime();
          var regexpA = a instanceof RegExp, regexpB = b instanceof RegExp;
          if (regexpA != regexpB)
            return false;
          if (regexpA && regexpB)
            return a.toString() == b.toString();
          var keys = keyList(a);
          length2 = keys.length;
          if (length2 !== keyList(b).length)
            return false;
          for (i2 = length2; i2-- !== 0; )
            if (!hasProp.call(b, keys[i2]))
              return false;
          for (i2 = length2; i2-- !== 0; ) {
            key = keys[i2];
            if (!equal(a[key], b[key]))
              return false;
          }
          return true;
        }
        return a !== a && b !== b;
      };
    }
  });

  // node_modules/lodash/_listCacheClear.js
  var require_listCacheClear = __commonJS({
    "node_modules/lodash/_listCacheClear.js"(exports, module) {
      function listCacheClear() {
        this.__data__ = [];
        this.size = 0;
      }
      module.exports = listCacheClear;
    }
  });

  // node_modules/lodash/eq.js
  var require_eq = __commonJS({
    "node_modules/lodash/eq.js"(exports, module) {
      function eq(value2, other) {
        return value2 === other || value2 !== value2 && other !== other;
      }
      module.exports = eq;
    }
  });

  // node_modules/lodash/_assocIndexOf.js
  var require_assocIndexOf = __commonJS({
    "node_modules/lodash/_assocIndexOf.js"(exports, module) {
      var eq = require_eq();
      function assocIndexOf(array, key) {
        var length2 = array.length;
        while (length2--) {
          if (eq(array[length2][0], key)) {
            return length2;
          }
        }
        return -1;
      }
      module.exports = assocIndexOf;
    }
  });

  // node_modules/lodash/_listCacheDelete.js
  var require_listCacheDelete = __commonJS({
    "node_modules/lodash/_listCacheDelete.js"(exports, module) {
      var assocIndexOf = require_assocIndexOf();
      var arrayProto = Array.prototype;
      var splice = arrayProto.splice;
      function listCacheDelete(key) {
        var data = this.__data__, index = assocIndexOf(data, key);
        if (index < 0) {
          return false;
        }
        var lastIndex = data.length - 1;
        if (index == lastIndex) {
          data.pop();
        } else {
          splice.call(data, index, 1);
        }
        --this.size;
        return true;
      }
      module.exports = listCacheDelete;
    }
  });

  // node_modules/lodash/_listCacheGet.js
  var require_listCacheGet = __commonJS({
    "node_modules/lodash/_listCacheGet.js"(exports, module) {
      var assocIndexOf = require_assocIndexOf();
      function listCacheGet(key) {
        var data = this.__data__, index = assocIndexOf(data, key);
        return index < 0 ? void 0 : data[index][1];
      }
      module.exports = listCacheGet;
    }
  });

  // node_modules/lodash/_listCacheHas.js
  var require_listCacheHas = __commonJS({
    "node_modules/lodash/_listCacheHas.js"(exports, module) {
      var assocIndexOf = require_assocIndexOf();
      function listCacheHas(key) {
        return assocIndexOf(this.__data__, key) > -1;
      }
      module.exports = listCacheHas;
    }
  });

  // node_modules/lodash/_listCacheSet.js
  var require_listCacheSet = __commonJS({
    "node_modules/lodash/_listCacheSet.js"(exports, module) {
      var assocIndexOf = require_assocIndexOf();
      function listCacheSet(key, value2) {
        var data = this.__data__, index = assocIndexOf(data, key);
        if (index < 0) {
          ++this.size;
          data.push([key, value2]);
        } else {
          data[index][1] = value2;
        }
        return this;
      }
      module.exports = listCacheSet;
    }
  });

  // node_modules/lodash/_ListCache.js
  var require_ListCache = __commonJS({
    "node_modules/lodash/_ListCache.js"(exports, module) {
      var listCacheClear = require_listCacheClear();
      var listCacheDelete = require_listCacheDelete();
      var listCacheGet = require_listCacheGet();
      var listCacheHas = require_listCacheHas();
      var listCacheSet = require_listCacheSet();
      function ListCache(entries) {
        var index = -1, length2 = entries == null ? 0 : entries.length;
        this.clear();
        while (++index < length2) {
          var entry = entries[index];
          this.set(entry[0], entry[1]);
        }
      }
      ListCache.prototype.clear = listCacheClear;
      ListCache.prototype["delete"] = listCacheDelete;
      ListCache.prototype.get = listCacheGet;
      ListCache.prototype.has = listCacheHas;
      ListCache.prototype.set = listCacheSet;
      module.exports = ListCache;
    }
  });

  // node_modules/lodash/_stackClear.js
  var require_stackClear = __commonJS({
    "node_modules/lodash/_stackClear.js"(exports, module) {
      var ListCache = require_ListCache();
      function stackClear() {
        this.__data__ = new ListCache();
        this.size = 0;
      }
      module.exports = stackClear;
    }
  });

  // node_modules/lodash/_stackDelete.js
  var require_stackDelete = __commonJS({
    "node_modules/lodash/_stackDelete.js"(exports, module) {
      function stackDelete(key) {
        var data = this.__data__, result = data["delete"](key);
        this.size = data.size;
        return result;
      }
      module.exports = stackDelete;
    }
  });

  // node_modules/lodash/_stackGet.js
  var require_stackGet = __commonJS({
    "node_modules/lodash/_stackGet.js"(exports, module) {
      function stackGet(key) {
        return this.__data__.get(key);
      }
      module.exports = stackGet;
    }
  });

  // node_modules/lodash/_stackHas.js
  var require_stackHas = __commonJS({
    "node_modules/lodash/_stackHas.js"(exports, module) {
      function stackHas(key) {
        return this.__data__.has(key);
      }
      module.exports = stackHas;
    }
  });

  // node_modules/lodash/_freeGlobal.js
  var require_freeGlobal = __commonJS({
    "node_modules/lodash/_freeGlobal.js"(exports, module) {
      var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
      module.exports = freeGlobal;
    }
  });

  // node_modules/lodash/_root.js
  var require_root = __commonJS({
    "node_modules/lodash/_root.js"(exports, module) {
      var freeGlobal = require_freeGlobal();
      var freeSelf = typeof self == "object" && self && self.Object === Object && self;
      var root = freeGlobal || freeSelf || Function("return this")();
      module.exports = root;
    }
  });

  // node_modules/lodash/_Symbol.js
  var require_Symbol = __commonJS({
    "node_modules/lodash/_Symbol.js"(exports, module) {
      var root = require_root();
      var Symbol2 = root.Symbol;
      module.exports = Symbol2;
    }
  });

  // node_modules/lodash/_getRawTag.js
  var require_getRawTag = __commonJS({
    "node_modules/lodash/_getRawTag.js"(exports, module) {
      var Symbol2 = require_Symbol();
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      var nativeObjectToString = objectProto.toString;
      var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;
      function getRawTag(value2) {
        var isOwn = hasOwnProperty.call(value2, symToStringTag), tag = value2[symToStringTag];
        try {
          value2[symToStringTag] = void 0;
          var unmasked = true;
        } catch (e) {
        }
        var result = nativeObjectToString.call(value2);
        if (unmasked) {
          if (isOwn) {
            value2[symToStringTag] = tag;
          } else {
            delete value2[symToStringTag];
          }
        }
        return result;
      }
      module.exports = getRawTag;
    }
  });

  // node_modules/lodash/_objectToString.js
  var require_objectToString = __commonJS({
    "node_modules/lodash/_objectToString.js"(exports, module) {
      var objectProto = Object.prototype;
      var nativeObjectToString = objectProto.toString;
      function objectToString(value2) {
        return nativeObjectToString.call(value2);
      }
      module.exports = objectToString;
    }
  });

  // node_modules/lodash/_baseGetTag.js
  var require_baseGetTag = __commonJS({
    "node_modules/lodash/_baseGetTag.js"(exports, module) {
      var Symbol2 = require_Symbol();
      var getRawTag = require_getRawTag();
      var objectToString = require_objectToString();
      var nullTag = "[object Null]";
      var undefinedTag = "[object Undefined]";
      var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;
      function baseGetTag(value2) {
        if (value2 == null) {
          return value2 === void 0 ? undefinedTag : nullTag;
        }
        return symToStringTag && symToStringTag in Object(value2) ? getRawTag(value2) : objectToString(value2);
      }
      module.exports = baseGetTag;
    }
  });

  // node_modules/lodash/isObject.js
  var require_isObject = __commonJS({
    "node_modules/lodash/isObject.js"(exports, module) {
      function isObject2(value2) {
        var type2 = typeof value2;
        return value2 != null && (type2 == "object" || type2 == "function");
      }
      module.exports = isObject2;
    }
  });

  // node_modules/lodash/isFunction.js
  var require_isFunction = __commonJS({
    "node_modules/lodash/isFunction.js"(exports, module) {
      var baseGetTag = require_baseGetTag();
      var isObject2 = require_isObject();
      var asyncTag = "[object AsyncFunction]";
      var funcTag = "[object Function]";
      var genTag = "[object GeneratorFunction]";
      var proxyTag = "[object Proxy]";
      function isFunction(value2) {
        if (!isObject2(value2)) {
          return false;
        }
        var tag = baseGetTag(value2);
        return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
      }
      module.exports = isFunction;
    }
  });

  // node_modules/lodash/_coreJsData.js
  var require_coreJsData = __commonJS({
    "node_modules/lodash/_coreJsData.js"(exports, module) {
      var root = require_root();
      var coreJsData = root["__core-js_shared__"];
      module.exports = coreJsData;
    }
  });

  // node_modules/lodash/_isMasked.js
  var require_isMasked = __commonJS({
    "node_modules/lodash/_isMasked.js"(exports, module) {
      var coreJsData = require_coreJsData();
      var maskSrcKey = function() {
        var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
        return uid ? "Symbol(src)_1." + uid : "";
      }();
      function isMasked(func) {
        return !!maskSrcKey && maskSrcKey in func;
      }
      module.exports = isMasked;
    }
  });

  // node_modules/lodash/_toSource.js
  var require_toSource = __commonJS({
    "node_modules/lodash/_toSource.js"(exports, module) {
      var funcProto = Function.prototype;
      var funcToString = funcProto.toString;
      function toSource(func) {
        if (func != null) {
          try {
            return funcToString.call(func);
          } catch (e) {
          }
          try {
            return func + "";
          } catch (e) {
          }
        }
        return "";
      }
      module.exports = toSource;
    }
  });

  // node_modules/lodash/_baseIsNative.js
  var require_baseIsNative = __commonJS({
    "node_modules/lodash/_baseIsNative.js"(exports, module) {
      var isFunction = require_isFunction();
      var isMasked = require_isMasked();
      var isObject2 = require_isObject();
      var toSource = require_toSource();
      var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
      var reIsHostCtor = /^\[object .+?Constructor\]$/;
      var funcProto = Function.prototype;
      var objectProto = Object.prototype;
      var funcToString = funcProto.toString;
      var hasOwnProperty = objectProto.hasOwnProperty;
      var reIsNative = RegExp(
        "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
      );
      function baseIsNative(value2) {
        if (!isObject2(value2) || isMasked(value2)) {
          return false;
        }
        var pattern = isFunction(value2) ? reIsNative : reIsHostCtor;
        return pattern.test(toSource(value2));
      }
      module.exports = baseIsNative;
    }
  });

  // node_modules/lodash/_getValue.js
  var require_getValue = __commonJS({
    "node_modules/lodash/_getValue.js"(exports, module) {
      function getValue(object, key) {
        return object == null ? void 0 : object[key];
      }
      module.exports = getValue;
    }
  });

  // node_modules/lodash/_getNative.js
  var require_getNative = __commonJS({
    "node_modules/lodash/_getNative.js"(exports, module) {
      var baseIsNative = require_baseIsNative();
      var getValue = require_getValue();
      function getNative(object, key) {
        var value2 = getValue(object, key);
        return baseIsNative(value2) ? value2 : void 0;
      }
      module.exports = getNative;
    }
  });

  // node_modules/lodash/_Map.js
  var require_Map = __commonJS({
    "node_modules/lodash/_Map.js"(exports, module) {
      var getNative = require_getNative();
      var root = require_root();
      var Map2 = getNative(root, "Map");
      module.exports = Map2;
    }
  });

  // node_modules/lodash/_nativeCreate.js
  var require_nativeCreate = __commonJS({
    "node_modules/lodash/_nativeCreate.js"(exports, module) {
      var getNative = require_getNative();
      var nativeCreate = getNative(Object, "create");
      module.exports = nativeCreate;
    }
  });

  // node_modules/lodash/_hashClear.js
  var require_hashClear = __commonJS({
    "node_modules/lodash/_hashClear.js"(exports, module) {
      var nativeCreate = require_nativeCreate();
      function hashClear() {
        this.__data__ = nativeCreate ? nativeCreate(null) : {};
        this.size = 0;
      }
      module.exports = hashClear;
    }
  });

  // node_modules/lodash/_hashDelete.js
  var require_hashDelete = __commonJS({
    "node_modules/lodash/_hashDelete.js"(exports, module) {
      function hashDelete(key) {
        var result = this.has(key) && delete this.__data__[key];
        this.size -= result ? 1 : 0;
        return result;
      }
      module.exports = hashDelete;
    }
  });

  // node_modules/lodash/_hashGet.js
  var require_hashGet = __commonJS({
    "node_modules/lodash/_hashGet.js"(exports, module) {
      var nativeCreate = require_nativeCreate();
      var HASH_UNDEFINED = "__lodash_hash_undefined__";
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      function hashGet(key) {
        var data = this.__data__;
        if (nativeCreate) {
          var result = data[key];
          return result === HASH_UNDEFINED ? void 0 : result;
        }
        return hasOwnProperty.call(data, key) ? data[key] : void 0;
      }
      module.exports = hashGet;
    }
  });

  // node_modules/lodash/_hashHas.js
  var require_hashHas = __commonJS({
    "node_modules/lodash/_hashHas.js"(exports, module) {
      var nativeCreate = require_nativeCreate();
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      function hashHas(key) {
        var data = this.__data__;
        return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
      }
      module.exports = hashHas;
    }
  });

  // node_modules/lodash/_hashSet.js
  var require_hashSet = __commonJS({
    "node_modules/lodash/_hashSet.js"(exports, module) {
      var nativeCreate = require_nativeCreate();
      var HASH_UNDEFINED = "__lodash_hash_undefined__";
      function hashSet(key, value2) {
        var data = this.__data__;
        this.size += this.has(key) ? 0 : 1;
        data[key] = nativeCreate && value2 === void 0 ? HASH_UNDEFINED : value2;
        return this;
      }
      module.exports = hashSet;
    }
  });

  // node_modules/lodash/_Hash.js
  var require_Hash = __commonJS({
    "node_modules/lodash/_Hash.js"(exports, module) {
      var hashClear = require_hashClear();
      var hashDelete = require_hashDelete();
      var hashGet = require_hashGet();
      var hashHas = require_hashHas();
      var hashSet = require_hashSet();
      function Hash(entries) {
        var index = -1, length2 = entries == null ? 0 : entries.length;
        this.clear();
        while (++index < length2) {
          var entry = entries[index];
          this.set(entry[0], entry[1]);
        }
      }
      Hash.prototype.clear = hashClear;
      Hash.prototype["delete"] = hashDelete;
      Hash.prototype.get = hashGet;
      Hash.prototype.has = hashHas;
      Hash.prototype.set = hashSet;
      module.exports = Hash;
    }
  });

  // node_modules/lodash/_mapCacheClear.js
  var require_mapCacheClear = __commonJS({
    "node_modules/lodash/_mapCacheClear.js"(exports, module) {
      var Hash = require_Hash();
      var ListCache = require_ListCache();
      var Map2 = require_Map();
      function mapCacheClear() {
        this.size = 0;
        this.__data__ = {
          "hash": new Hash(),
          "map": new (Map2 || ListCache)(),
          "string": new Hash()
        };
      }
      module.exports = mapCacheClear;
    }
  });

  // node_modules/lodash/_isKeyable.js
  var require_isKeyable = __commonJS({
    "node_modules/lodash/_isKeyable.js"(exports, module) {
      function isKeyable(value2) {
        var type2 = typeof value2;
        return type2 == "string" || type2 == "number" || type2 == "symbol" || type2 == "boolean" ? value2 !== "__proto__" : value2 === null;
      }
      module.exports = isKeyable;
    }
  });

  // node_modules/lodash/_getMapData.js
  var require_getMapData = __commonJS({
    "node_modules/lodash/_getMapData.js"(exports, module) {
      var isKeyable = require_isKeyable();
      function getMapData(map2, key) {
        var data = map2.__data__;
        return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
      }
      module.exports = getMapData;
    }
  });

  // node_modules/lodash/_mapCacheDelete.js
  var require_mapCacheDelete = __commonJS({
    "node_modules/lodash/_mapCacheDelete.js"(exports, module) {
      var getMapData = require_getMapData();
      function mapCacheDelete(key) {
        var result = getMapData(this, key)["delete"](key);
        this.size -= result ? 1 : 0;
        return result;
      }
      module.exports = mapCacheDelete;
    }
  });

  // node_modules/lodash/_mapCacheGet.js
  var require_mapCacheGet = __commonJS({
    "node_modules/lodash/_mapCacheGet.js"(exports, module) {
      var getMapData = require_getMapData();
      function mapCacheGet(key) {
        return getMapData(this, key).get(key);
      }
      module.exports = mapCacheGet;
    }
  });

  // node_modules/lodash/_mapCacheHas.js
  var require_mapCacheHas = __commonJS({
    "node_modules/lodash/_mapCacheHas.js"(exports, module) {
      var getMapData = require_getMapData();
      function mapCacheHas(key) {
        return getMapData(this, key).has(key);
      }
      module.exports = mapCacheHas;
    }
  });

  // node_modules/lodash/_mapCacheSet.js
  var require_mapCacheSet = __commonJS({
    "node_modules/lodash/_mapCacheSet.js"(exports, module) {
      var getMapData = require_getMapData();
      function mapCacheSet(key, value2) {
        var data = getMapData(this, key), size = data.size;
        data.set(key, value2);
        this.size += data.size == size ? 0 : 1;
        return this;
      }
      module.exports = mapCacheSet;
    }
  });

  // node_modules/lodash/_MapCache.js
  var require_MapCache = __commonJS({
    "node_modules/lodash/_MapCache.js"(exports, module) {
      var mapCacheClear = require_mapCacheClear();
      var mapCacheDelete = require_mapCacheDelete();
      var mapCacheGet = require_mapCacheGet();
      var mapCacheHas = require_mapCacheHas();
      var mapCacheSet = require_mapCacheSet();
      function MapCache(entries) {
        var index = -1, length2 = entries == null ? 0 : entries.length;
        this.clear();
        while (++index < length2) {
          var entry = entries[index];
          this.set(entry[0], entry[1]);
        }
      }
      MapCache.prototype.clear = mapCacheClear;
      MapCache.prototype["delete"] = mapCacheDelete;
      MapCache.prototype.get = mapCacheGet;
      MapCache.prototype.has = mapCacheHas;
      MapCache.prototype.set = mapCacheSet;
      module.exports = MapCache;
    }
  });

  // node_modules/lodash/_stackSet.js
  var require_stackSet = __commonJS({
    "node_modules/lodash/_stackSet.js"(exports, module) {
      var ListCache = require_ListCache();
      var Map2 = require_Map();
      var MapCache = require_MapCache();
      var LARGE_ARRAY_SIZE = 200;
      function stackSet(key, value2) {
        var data = this.__data__;
        if (data instanceof ListCache) {
          var pairs = data.__data__;
          if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
            pairs.push([key, value2]);
            this.size = ++data.size;
            return this;
          }
          data = this.__data__ = new MapCache(pairs);
        }
        data.set(key, value2);
        this.size = data.size;
        return this;
      }
      module.exports = stackSet;
    }
  });

  // node_modules/lodash/_Stack.js
  var require_Stack = __commonJS({
    "node_modules/lodash/_Stack.js"(exports, module) {
      var ListCache = require_ListCache();
      var stackClear = require_stackClear();
      var stackDelete = require_stackDelete();
      var stackGet = require_stackGet();
      var stackHas = require_stackHas();
      var stackSet = require_stackSet();
      function Stack(entries) {
        var data = this.__data__ = new ListCache(entries);
        this.size = data.size;
      }
      Stack.prototype.clear = stackClear;
      Stack.prototype["delete"] = stackDelete;
      Stack.prototype.get = stackGet;
      Stack.prototype.has = stackHas;
      Stack.prototype.set = stackSet;
      module.exports = Stack;
    }
  });

  // node_modules/lodash/_arrayEach.js
  var require_arrayEach = __commonJS({
    "node_modules/lodash/_arrayEach.js"(exports, module) {
      function arrayEach(array, iteratee) {
        var index = -1, length2 = array == null ? 0 : array.length;
        while (++index < length2) {
          if (iteratee(array[index], index, array) === false) {
            break;
          }
        }
        return array;
      }
      module.exports = arrayEach;
    }
  });

  // node_modules/lodash/_defineProperty.js
  var require_defineProperty = __commonJS({
    "node_modules/lodash/_defineProperty.js"(exports, module) {
      var getNative = require_getNative();
      var defineProperty = function() {
        try {
          var func = getNative(Object, "defineProperty");
          func({}, "", {});
          return func;
        } catch (e) {
        }
      }();
      module.exports = defineProperty;
    }
  });

  // node_modules/lodash/_baseAssignValue.js
  var require_baseAssignValue = __commonJS({
    "node_modules/lodash/_baseAssignValue.js"(exports, module) {
      var defineProperty = require_defineProperty();
      function baseAssignValue(object, key, value2) {
        if (key == "__proto__" && defineProperty) {
          defineProperty(object, key, {
            "configurable": true,
            "enumerable": true,
            "value": value2,
            "writable": true
          });
        } else {
          object[key] = value2;
        }
      }
      module.exports = baseAssignValue;
    }
  });

  // node_modules/lodash/_assignValue.js
  var require_assignValue = __commonJS({
    "node_modules/lodash/_assignValue.js"(exports, module) {
      var baseAssignValue = require_baseAssignValue();
      var eq = require_eq();
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      function assignValue(object, key, value2) {
        var objValue = object[key];
        if (!(hasOwnProperty.call(object, key) && eq(objValue, value2)) || value2 === void 0 && !(key in object)) {
          baseAssignValue(object, key, value2);
        }
      }
      module.exports = assignValue;
    }
  });

  // node_modules/lodash/_copyObject.js
  var require_copyObject = __commonJS({
    "node_modules/lodash/_copyObject.js"(exports, module) {
      var assignValue = require_assignValue();
      var baseAssignValue = require_baseAssignValue();
      function copyObject(source, props, object, customizer) {
        var isNew = !object;
        object || (object = {});
        var index = -1, length2 = props.length;
        while (++index < length2) {
          var key = props[index];
          var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
          if (newValue === void 0) {
            newValue = source[key];
          }
          if (isNew) {
            baseAssignValue(object, key, newValue);
          } else {
            assignValue(object, key, newValue);
          }
        }
        return object;
      }
      module.exports = copyObject;
    }
  });

  // node_modules/lodash/_baseTimes.js
  var require_baseTimes = __commonJS({
    "node_modules/lodash/_baseTimes.js"(exports, module) {
      function baseTimes(n, iteratee) {
        var index = -1, result = Array(n);
        while (++index < n) {
          result[index] = iteratee(index);
        }
        return result;
      }
      module.exports = baseTimes;
    }
  });

  // node_modules/lodash/isObjectLike.js
  var require_isObjectLike = __commonJS({
    "node_modules/lodash/isObjectLike.js"(exports, module) {
      function isObjectLike(value2) {
        return value2 != null && typeof value2 == "object";
      }
      module.exports = isObjectLike;
    }
  });

  // node_modules/lodash/_baseIsArguments.js
  var require_baseIsArguments = __commonJS({
    "node_modules/lodash/_baseIsArguments.js"(exports, module) {
      var baseGetTag = require_baseGetTag();
      var isObjectLike = require_isObjectLike();
      var argsTag = "[object Arguments]";
      function baseIsArguments(value2) {
        return isObjectLike(value2) && baseGetTag(value2) == argsTag;
      }
      module.exports = baseIsArguments;
    }
  });

  // node_modules/lodash/isArguments.js
  var require_isArguments = __commonJS({
    "node_modules/lodash/isArguments.js"(exports, module) {
      var baseIsArguments = require_baseIsArguments();
      var isObjectLike = require_isObjectLike();
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      var propertyIsEnumerable = objectProto.propertyIsEnumerable;
      var isArguments = baseIsArguments(function() {
        return arguments;
      }()) ? baseIsArguments : function(value2) {
        return isObjectLike(value2) && hasOwnProperty.call(value2, "callee") && !propertyIsEnumerable.call(value2, "callee");
      };
      module.exports = isArguments;
    }
  });

  // node_modules/lodash/isArray.js
  var require_isArray = __commonJS({
    "node_modules/lodash/isArray.js"(exports, module) {
      var isArray = Array.isArray;
      module.exports = isArray;
    }
  });

  // node_modules/lodash/stubFalse.js
  var require_stubFalse = __commonJS({
    "node_modules/lodash/stubFalse.js"(exports, module) {
      function stubFalse() {
        return false;
      }
      module.exports = stubFalse;
    }
  });

  // node_modules/lodash/isBuffer.js
  var require_isBuffer = __commonJS({
    "node_modules/lodash/isBuffer.js"(exports, module) {
      var root = require_root();
      var stubFalse = require_stubFalse();
      var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
      var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
      var moduleExports = freeModule && freeModule.exports === freeExports;
      var Buffer2 = moduleExports ? root.Buffer : void 0;
      var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;
      var isBuffer = nativeIsBuffer || stubFalse;
      module.exports = isBuffer;
    }
  });

  // node_modules/lodash/_isIndex.js
  var require_isIndex = __commonJS({
    "node_modules/lodash/_isIndex.js"(exports, module) {
      var MAX_SAFE_INTEGER = 9007199254740991;
      var reIsUint = /^(?:0|[1-9]\d*)$/;
      function isIndex(value2, length2) {
        var type2 = typeof value2;
        length2 = length2 == null ? MAX_SAFE_INTEGER : length2;
        return !!length2 && (type2 == "number" || type2 != "symbol" && reIsUint.test(value2)) && (value2 > -1 && value2 % 1 == 0 && value2 < length2);
      }
      module.exports = isIndex;
    }
  });

  // node_modules/lodash/isLength.js
  var require_isLength = __commonJS({
    "node_modules/lodash/isLength.js"(exports, module) {
      var MAX_SAFE_INTEGER = 9007199254740991;
      function isLength(value2) {
        return typeof value2 == "number" && value2 > -1 && value2 % 1 == 0 && value2 <= MAX_SAFE_INTEGER;
      }
      module.exports = isLength;
    }
  });

  // node_modules/lodash/_baseIsTypedArray.js
  var require_baseIsTypedArray = __commonJS({
    "node_modules/lodash/_baseIsTypedArray.js"(exports, module) {
      var baseGetTag = require_baseGetTag();
      var isLength = require_isLength();
      var isObjectLike = require_isObjectLike();
      var argsTag = "[object Arguments]";
      var arrayTag = "[object Array]";
      var boolTag = "[object Boolean]";
      var dateTag = "[object Date]";
      var errorTag = "[object Error]";
      var funcTag = "[object Function]";
      var mapTag = "[object Map]";
      var numberTag = "[object Number]";
      var objectTag = "[object Object]";
      var regexpTag = "[object RegExp]";
      var setTag = "[object Set]";
      var stringTag = "[object String]";
      var weakMapTag = "[object WeakMap]";
      var arrayBufferTag = "[object ArrayBuffer]";
      var dataViewTag = "[object DataView]";
      var float32Tag = "[object Float32Array]";
      var float64Tag = "[object Float64Array]";
      var int8Tag = "[object Int8Array]";
      var int16Tag = "[object Int16Array]";
      var int32Tag = "[object Int32Array]";
      var uint8Tag = "[object Uint8Array]";
      var uint8ClampedTag = "[object Uint8ClampedArray]";
      var uint16Tag = "[object Uint16Array]";
      var uint32Tag = "[object Uint32Array]";
      var typedArrayTags = {};
      typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
      typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
      function baseIsTypedArray(value2) {
        return isObjectLike(value2) && isLength(value2.length) && !!typedArrayTags[baseGetTag(value2)];
      }
      module.exports = baseIsTypedArray;
    }
  });

  // node_modules/lodash/_baseUnary.js
  var require_baseUnary = __commonJS({
    "node_modules/lodash/_baseUnary.js"(exports, module) {
      function baseUnary(func) {
        return function(value2) {
          return func(value2);
        };
      }
      module.exports = baseUnary;
    }
  });

  // node_modules/lodash/_nodeUtil.js
  var require_nodeUtil = __commonJS({
    "node_modules/lodash/_nodeUtil.js"(exports, module) {
      var freeGlobal = require_freeGlobal();
      var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
      var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
      var moduleExports = freeModule && freeModule.exports === freeExports;
      var freeProcess = moduleExports && freeGlobal.process;
      var nodeUtil = function() {
        try {
          var types = freeModule && freeModule.require && freeModule.require("util").types;
          if (types) {
            return types;
          }
          return freeProcess && freeProcess.binding && freeProcess.binding("util");
        } catch (e) {
        }
      }();
      module.exports = nodeUtil;
    }
  });

  // node_modules/lodash/isTypedArray.js
  var require_isTypedArray = __commonJS({
    "node_modules/lodash/isTypedArray.js"(exports, module) {
      var baseIsTypedArray = require_baseIsTypedArray();
      var baseUnary = require_baseUnary();
      var nodeUtil = require_nodeUtil();
      var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
      var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
      module.exports = isTypedArray;
    }
  });

  // node_modules/lodash/_arrayLikeKeys.js
  var require_arrayLikeKeys = __commonJS({
    "node_modules/lodash/_arrayLikeKeys.js"(exports, module) {
      var baseTimes = require_baseTimes();
      var isArguments = require_isArguments();
      var isArray = require_isArray();
      var isBuffer = require_isBuffer();
      var isIndex = require_isIndex();
      var isTypedArray = require_isTypedArray();
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      function arrayLikeKeys(value2, inherited) {
        var isArr = isArray(value2), isArg = !isArr && isArguments(value2), isBuff = !isArr && !isArg && isBuffer(value2), isType = !isArr && !isArg && !isBuff && isTypedArray(value2), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value2.length, String) : [], length2 = result.length;
        for (var key in value2) {
          if ((inherited || hasOwnProperty.call(value2, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length2)))) {
            result.push(key);
          }
        }
        return result;
      }
      module.exports = arrayLikeKeys;
    }
  });

  // node_modules/lodash/_isPrototype.js
  var require_isPrototype = __commonJS({
    "node_modules/lodash/_isPrototype.js"(exports, module) {
      var objectProto = Object.prototype;
      function isPrototype(value2) {
        var Ctor = value2 && value2.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
        return value2 === proto;
      }
      module.exports = isPrototype;
    }
  });

  // node_modules/lodash/_overArg.js
  var require_overArg = __commonJS({
    "node_modules/lodash/_overArg.js"(exports, module) {
      function overArg(func, transform) {
        return function(arg) {
          return func(transform(arg));
        };
      }
      module.exports = overArg;
    }
  });

  // node_modules/lodash/_nativeKeys.js
  var require_nativeKeys = __commonJS({
    "node_modules/lodash/_nativeKeys.js"(exports, module) {
      var overArg = require_overArg();
      var nativeKeys = overArg(Object.keys, Object);
      module.exports = nativeKeys;
    }
  });

  // node_modules/lodash/_baseKeys.js
  var require_baseKeys = __commonJS({
    "node_modules/lodash/_baseKeys.js"(exports, module) {
      var isPrototype = require_isPrototype();
      var nativeKeys = require_nativeKeys();
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      function baseKeys(object) {
        if (!isPrototype(object)) {
          return nativeKeys(object);
        }
        var result = [];
        for (var key in Object(object)) {
          if (hasOwnProperty.call(object, key) && key != "constructor") {
            result.push(key);
          }
        }
        return result;
      }
      module.exports = baseKeys;
    }
  });

  // node_modules/lodash/isArrayLike.js
  var require_isArrayLike = __commonJS({
    "node_modules/lodash/isArrayLike.js"(exports, module) {
      var isFunction = require_isFunction();
      var isLength = require_isLength();
      function isArrayLike(value2) {
        return value2 != null && isLength(value2.length) && !isFunction(value2);
      }
      module.exports = isArrayLike;
    }
  });

  // node_modules/lodash/keys.js
  var require_keys = __commonJS({
    "node_modules/lodash/keys.js"(exports, module) {
      var arrayLikeKeys = require_arrayLikeKeys();
      var baseKeys = require_baseKeys();
      var isArrayLike = require_isArrayLike();
      function keys(object) {
        return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
      }
      module.exports = keys;
    }
  });

  // node_modules/lodash/_baseAssign.js
  var require_baseAssign = __commonJS({
    "node_modules/lodash/_baseAssign.js"(exports, module) {
      var copyObject = require_copyObject();
      var keys = require_keys();
      function baseAssign(object, source) {
        return object && copyObject(source, keys(source), object);
      }
      module.exports = baseAssign;
    }
  });

  // node_modules/lodash/_nativeKeysIn.js
  var require_nativeKeysIn = __commonJS({
    "node_modules/lodash/_nativeKeysIn.js"(exports, module) {
      function nativeKeysIn(object) {
        var result = [];
        if (object != null) {
          for (var key in Object(object)) {
            result.push(key);
          }
        }
        return result;
      }
      module.exports = nativeKeysIn;
    }
  });

  // node_modules/lodash/_baseKeysIn.js
  var require_baseKeysIn = __commonJS({
    "node_modules/lodash/_baseKeysIn.js"(exports, module) {
      var isObject2 = require_isObject();
      var isPrototype = require_isPrototype();
      var nativeKeysIn = require_nativeKeysIn();
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      function baseKeysIn(object) {
        if (!isObject2(object)) {
          return nativeKeysIn(object);
        }
        var isProto = isPrototype(object), result = [];
        for (var key in object) {
          if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
            result.push(key);
          }
        }
        return result;
      }
      module.exports = baseKeysIn;
    }
  });

  // node_modules/lodash/keysIn.js
  var require_keysIn = __commonJS({
    "node_modules/lodash/keysIn.js"(exports, module) {
      var arrayLikeKeys = require_arrayLikeKeys();
      var baseKeysIn = require_baseKeysIn();
      var isArrayLike = require_isArrayLike();
      function keysIn(object) {
        return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
      }
      module.exports = keysIn;
    }
  });

  // node_modules/lodash/_baseAssignIn.js
  var require_baseAssignIn = __commonJS({
    "node_modules/lodash/_baseAssignIn.js"(exports, module) {
      var copyObject = require_copyObject();
      var keysIn = require_keysIn();
      function baseAssignIn(object, source) {
        return object && copyObject(source, keysIn(source), object);
      }
      module.exports = baseAssignIn;
    }
  });

  // node_modules/lodash/_cloneBuffer.js
  var require_cloneBuffer = __commonJS({
    "node_modules/lodash/_cloneBuffer.js"(exports, module) {
      var root = require_root();
      var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
      var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
      var moduleExports = freeModule && freeModule.exports === freeExports;
      var Buffer2 = moduleExports ? root.Buffer : void 0;
      var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;
      function cloneBuffer(buffer, isDeep) {
        if (isDeep) {
          return buffer.slice();
        }
        var length2 = buffer.length, result = allocUnsafe ? allocUnsafe(length2) : new buffer.constructor(length2);
        buffer.copy(result);
        return result;
      }
      module.exports = cloneBuffer;
    }
  });

  // node_modules/lodash/_copyArray.js
  var require_copyArray = __commonJS({
    "node_modules/lodash/_copyArray.js"(exports, module) {
      function copyArray(source, array) {
        var index = -1, length2 = source.length;
        array || (array = Array(length2));
        while (++index < length2) {
          array[index] = source[index];
        }
        return array;
      }
      module.exports = copyArray;
    }
  });

  // node_modules/lodash/_arrayFilter.js
  var require_arrayFilter = __commonJS({
    "node_modules/lodash/_arrayFilter.js"(exports, module) {
      function arrayFilter(array, predicate) {
        var index = -1, length2 = array == null ? 0 : array.length, resIndex = 0, result = [];
        while (++index < length2) {
          var value2 = array[index];
          if (predicate(value2, index, array)) {
            result[resIndex++] = value2;
          }
        }
        return result;
      }
      module.exports = arrayFilter;
    }
  });

  // node_modules/lodash/stubArray.js
  var require_stubArray = __commonJS({
    "node_modules/lodash/stubArray.js"(exports, module) {
      function stubArray() {
        return [];
      }
      module.exports = stubArray;
    }
  });

  // node_modules/lodash/_getSymbols.js
  var require_getSymbols = __commonJS({
    "node_modules/lodash/_getSymbols.js"(exports, module) {
      var arrayFilter = require_arrayFilter();
      var stubArray = require_stubArray();
      var objectProto = Object.prototype;
      var propertyIsEnumerable = objectProto.propertyIsEnumerable;
      var nativeGetSymbols = Object.getOwnPropertySymbols;
      var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
        if (object == null) {
          return [];
        }
        object = Object(object);
        return arrayFilter(nativeGetSymbols(object), function(symbol) {
          return propertyIsEnumerable.call(object, symbol);
        });
      };
      module.exports = getSymbols;
    }
  });

  // node_modules/lodash/_copySymbols.js
  var require_copySymbols = __commonJS({
    "node_modules/lodash/_copySymbols.js"(exports, module) {
      var copyObject = require_copyObject();
      var getSymbols = require_getSymbols();
      function copySymbols(source, object) {
        return copyObject(source, getSymbols(source), object);
      }
      module.exports = copySymbols;
    }
  });

  // node_modules/lodash/_arrayPush.js
  var require_arrayPush = __commonJS({
    "node_modules/lodash/_arrayPush.js"(exports, module) {
      function arrayPush(array, values) {
        var index = -1, length2 = values.length, offset = array.length;
        while (++index < length2) {
          array[offset + index] = values[index];
        }
        return array;
      }
      module.exports = arrayPush;
    }
  });

  // node_modules/lodash/_getPrototype.js
  var require_getPrototype = __commonJS({
    "node_modules/lodash/_getPrototype.js"(exports, module) {
      var overArg = require_overArg();
      var getPrototype = overArg(Object.getPrototypeOf, Object);
      module.exports = getPrototype;
    }
  });

  // node_modules/lodash/_getSymbolsIn.js
  var require_getSymbolsIn = __commonJS({
    "node_modules/lodash/_getSymbolsIn.js"(exports, module) {
      var arrayPush = require_arrayPush();
      var getPrototype = require_getPrototype();
      var getSymbols = require_getSymbols();
      var stubArray = require_stubArray();
      var nativeGetSymbols = Object.getOwnPropertySymbols;
      var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
        var result = [];
        while (object) {
          arrayPush(result, getSymbols(object));
          object = getPrototype(object);
        }
        return result;
      };
      module.exports = getSymbolsIn;
    }
  });

  // node_modules/lodash/_copySymbolsIn.js
  var require_copySymbolsIn = __commonJS({
    "node_modules/lodash/_copySymbolsIn.js"(exports, module) {
      var copyObject = require_copyObject();
      var getSymbolsIn = require_getSymbolsIn();
      function copySymbolsIn(source, object) {
        return copyObject(source, getSymbolsIn(source), object);
      }
      module.exports = copySymbolsIn;
    }
  });

  // node_modules/lodash/_baseGetAllKeys.js
  var require_baseGetAllKeys = __commonJS({
    "node_modules/lodash/_baseGetAllKeys.js"(exports, module) {
      var arrayPush = require_arrayPush();
      var isArray = require_isArray();
      function baseGetAllKeys(object, keysFunc, symbolsFunc) {
        var result = keysFunc(object);
        return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
      }
      module.exports = baseGetAllKeys;
    }
  });

  // node_modules/lodash/_getAllKeys.js
  var require_getAllKeys = __commonJS({
    "node_modules/lodash/_getAllKeys.js"(exports, module) {
      var baseGetAllKeys = require_baseGetAllKeys();
      var getSymbols = require_getSymbols();
      var keys = require_keys();
      function getAllKeys(object) {
        return baseGetAllKeys(object, keys, getSymbols);
      }
      module.exports = getAllKeys;
    }
  });

  // node_modules/lodash/_getAllKeysIn.js
  var require_getAllKeysIn = __commonJS({
    "node_modules/lodash/_getAllKeysIn.js"(exports, module) {
      var baseGetAllKeys = require_baseGetAllKeys();
      var getSymbolsIn = require_getSymbolsIn();
      var keysIn = require_keysIn();
      function getAllKeysIn(object) {
        return baseGetAllKeys(object, keysIn, getSymbolsIn);
      }
      module.exports = getAllKeysIn;
    }
  });

  // node_modules/lodash/_DataView.js
  var require_DataView = __commonJS({
    "node_modules/lodash/_DataView.js"(exports, module) {
      var getNative = require_getNative();
      var root = require_root();
      var DataView2 = getNative(root, "DataView");
      module.exports = DataView2;
    }
  });

  // node_modules/lodash/_Promise.js
  var require_Promise = __commonJS({
    "node_modules/lodash/_Promise.js"(exports, module) {
      var getNative = require_getNative();
      var root = require_root();
      var Promise2 = getNative(root, "Promise");
      module.exports = Promise2;
    }
  });

  // node_modules/lodash/_Set.js
  var require_Set = __commonJS({
    "node_modules/lodash/_Set.js"(exports, module) {
      var getNative = require_getNative();
      var root = require_root();
      var Set2 = getNative(root, "Set");
      module.exports = Set2;
    }
  });

  // node_modules/lodash/_WeakMap.js
  var require_WeakMap = __commonJS({
    "node_modules/lodash/_WeakMap.js"(exports, module) {
      var getNative = require_getNative();
      var root = require_root();
      var WeakMap = getNative(root, "WeakMap");
      module.exports = WeakMap;
    }
  });

  // node_modules/lodash/_getTag.js
  var require_getTag = __commonJS({
    "node_modules/lodash/_getTag.js"(exports, module) {
      var DataView2 = require_DataView();
      var Map2 = require_Map();
      var Promise2 = require_Promise();
      var Set2 = require_Set();
      var WeakMap = require_WeakMap();
      var baseGetTag = require_baseGetTag();
      var toSource = require_toSource();
      var mapTag = "[object Map]";
      var objectTag = "[object Object]";
      var promiseTag = "[object Promise]";
      var setTag = "[object Set]";
      var weakMapTag = "[object WeakMap]";
      var dataViewTag = "[object DataView]";
      var dataViewCtorString = toSource(DataView2);
      var mapCtorString = toSource(Map2);
      var promiseCtorString = toSource(Promise2);
      var setCtorString = toSource(Set2);
      var weakMapCtorString = toSource(WeakMap);
      var getTag = baseGetTag;
      if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
        getTag = function(value2) {
          var result = baseGetTag(value2), Ctor = result == objectTag ? value2.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
          if (ctorString) {
            switch (ctorString) {
              case dataViewCtorString:
                return dataViewTag;
              case mapCtorString:
                return mapTag;
              case promiseCtorString:
                return promiseTag;
              case setCtorString:
                return setTag;
              case weakMapCtorString:
                return weakMapTag;
            }
          }
          return result;
        };
      }
      module.exports = getTag;
    }
  });

  // node_modules/lodash/_initCloneArray.js
  var require_initCloneArray = __commonJS({
    "node_modules/lodash/_initCloneArray.js"(exports, module) {
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      function initCloneArray(array) {
        var length2 = array.length, result = new array.constructor(length2);
        if (length2 && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) {
          result.index = array.index;
          result.input = array.input;
        }
        return result;
      }
      module.exports = initCloneArray;
    }
  });

  // node_modules/lodash/_Uint8Array.js
  var require_Uint8Array = __commonJS({
    "node_modules/lodash/_Uint8Array.js"(exports, module) {
      var root = require_root();
      var Uint8Array2 = root.Uint8Array;
      module.exports = Uint8Array2;
    }
  });

  // node_modules/lodash/_cloneArrayBuffer.js
  var require_cloneArrayBuffer = __commonJS({
    "node_modules/lodash/_cloneArrayBuffer.js"(exports, module) {
      var Uint8Array2 = require_Uint8Array();
      function cloneArrayBuffer(arrayBuffer) {
        var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
        new Uint8Array2(result).set(new Uint8Array2(arrayBuffer));
        return result;
      }
      module.exports = cloneArrayBuffer;
    }
  });

  // node_modules/lodash/_cloneDataView.js
  var require_cloneDataView = __commonJS({
    "node_modules/lodash/_cloneDataView.js"(exports, module) {
      var cloneArrayBuffer = require_cloneArrayBuffer();
      function cloneDataView(dataView, isDeep) {
        var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
        return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
      }
      module.exports = cloneDataView;
    }
  });

  // node_modules/lodash/_cloneRegExp.js
  var require_cloneRegExp = __commonJS({
    "node_modules/lodash/_cloneRegExp.js"(exports, module) {
      var reFlags = /\w*$/;
      function cloneRegExp(regexp) {
        var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
        result.lastIndex = regexp.lastIndex;
        return result;
      }
      module.exports = cloneRegExp;
    }
  });

  // node_modules/lodash/_cloneSymbol.js
  var require_cloneSymbol = __commonJS({
    "node_modules/lodash/_cloneSymbol.js"(exports, module) {
      var Symbol2 = require_Symbol();
      var symbolProto = Symbol2 ? Symbol2.prototype : void 0;
      var symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
      function cloneSymbol(symbol) {
        return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
      }
      module.exports = cloneSymbol;
    }
  });

  // node_modules/lodash/_cloneTypedArray.js
  var require_cloneTypedArray = __commonJS({
    "node_modules/lodash/_cloneTypedArray.js"(exports, module) {
      var cloneArrayBuffer = require_cloneArrayBuffer();
      function cloneTypedArray(typedArray, isDeep) {
        var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
        return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
      }
      module.exports = cloneTypedArray;
    }
  });

  // node_modules/lodash/_initCloneByTag.js
  var require_initCloneByTag = __commonJS({
    "node_modules/lodash/_initCloneByTag.js"(exports, module) {
      var cloneArrayBuffer = require_cloneArrayBuffer();
      var cloneDataView = require_cloneDataView();
      var cloneRegExp = require_cloneRegExp();
      var cloneSymbol = require_cloneSymbol();
      var cloneTypedArray = require_cloneTypedArray();
      var boolTag = "[object Boolean]";
      var dateTag = "[object Date]";
      var mapTag = "[object Map]";
      var numberTag = "[object Number]";
      var regexpTag = "[object RegExp]";
      var setTag = "[object Set]";
      var stringTag = "[object String]";
      var symbolTag = "[object Symbol]";
      var arrayBufferTag = "[object ArrayBuffer]";
      var dataViewTag = "[object DataView]";
      var float32Tag = "[object Float32Array]";
      var float64Tag = "[object Float64Array]";
      var int8Tag = "[object Int8Array]";
      var int16Tag = "[object Int16Array]";
      var int32Tag = "[object Int32Array]";
      var uint8Tag = "[object Uint8Array]";
      var uint8ClampedTag = "[object Uint8ClampedArray]";
      var uint16Tag = "[object Uint16Array]";
      var uint32Tag = "[object Uint32Array]";
      function initCloneByTag(object, tag, isDeep) {
        var Ctor = object.constructor;
        switch (tag) {
          case arrayBufferTag:
            return cloneArrayBuffer(object);
          case boolTag:
          case dateTag:
            return new Ctor(+object);
          case dataViewTag:
            return cloneDataView(object, isDeep);
          case float32Tag:
          case float64Tag:
          case int8Tag:
          case int16Tag:
          case int32Tag:
          case uint8Tag:
          case uint8ClampedTag:
          case uint16Tag:
          case uint32Tag:
            return cloneTypedArray(object, isDeep);
          case mapTag:
            return new Ctor();
          case numberTag:
          case stringTag:
            return new Ctor(object);
          case regexpTag:
            return cloneRegExp(object);
          case setTag:
            return new Ctor();
          case symbolTag:
            return cloneSymbol(object);
        }
      }
      module.exports = initCloneByTag;
    }
  });

  // node_modules/lodash/_baseCreate.js
  var require_baseCreate = __commonJS({
    "node_modules/lodash/_baseCreate.js"(exports, module) {
      var isObject2 = require_isObject();
      var objectCreate = Object.create;
      var baseCreate = function() {
        function object() {
        }
        return function(proto) {
          if (!isObject2(proto)) {
            return {};
          }
          if (objectCreate) {
            return objectCreate(proto);
          }
          object.prototype = proto;
          var result = new object();
          object.prototype = void 0;
          return result;
        };
      }();
      module.exports = baseCreate;
    }
  });

  // node_modules/lodash/_initCloneObject.js
  var require_initCloneObject = __commonJS({
    "node_modules/lodash/_initCloneObject.js"(exports, module) {
      var baseCreate = require_baseCreate();
      var getPrototype = require_getPrototype();
      var isPrototype = require_isPrototype();
      function initCloneObject(object) {
        return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
      }
      module.exports = initCloneObject;
    }
  });

  // node_modules/lodash/_baseIsMap.js
  var require_baseIsMap = __commonJS({
    "node_modules/lodash/_baseIsMap.js"(exports, module) {
      var getTag = require_getTag();
      var isObjectLike = require_isObjectLike();
      var mapTag = "[object Map]";
      function baseIsMap(value2) {
        return isObjectLike(value2) && getTag(value2) == mapTag;
      }
      module.exports = baseIsMap;
    }
  });

  // node_modules/lodash/isMap.js
  var require_isMap = __commonJS({
    "node_modules/lodash/isMap.js"(exports, module) {
      var baseIsMap = require_baseIsMap();
      var baseUnary = require_baseUnary();
      var nodeUtil = require_nodeUtil();
      var nodeIsMap = nodeUtil && nodeUtil.isMap;
      var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
      module.exports = isMap;
    }
  });

  // node_modules/lodash/_baseIsSet.js
  var require_baseIsSet = __commonJS({
    "node_modules/lodash/_baseIsSet.js"(exports, module) {
      var getTag = require_getTag();
      var isObjectLike = require_isObjectLike();
      var setTag = "[object Set]";
      function baseIsSet(value2) {
        return isObjectLike(value2) && getTag(value2) == setTag;
      }
      module.exports = baseIsSet;
    }
  });

  // node_modules/lodash/isSet.js
  var require_isSet = __commonJS({
    "node_modules/lodash/isSet.js"(exports, module) {
      var baseIsSet = require_baseIsSet();
      var baseUnary = require_baseUnary();
      var nodeUtil = require_nodeUtil();
      var nodeIsSet = nodeUtil && nodeUtil.isSet;
      var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
      module.exports = isSet;
    }
  });

  // node_modules/lodash/_baseClone.js
  var require_baseClone = __commonJS({
    "node_modules/lodash/_baseClone.js"(exports, module) {
      var Stack = require_Stack();
      var arrayEach = require_arrayEach();
      var assignValue = require_assignValue();
      var baseAssign = require_baseAssign();
      var baseAssignIn = require_baseAssignIn();
      var cloneBuffer = require_cloneBuffer();
      var copyArray = require_copyArray();
      var copySymbols = require_copySymbols();
      var copySymbolsIn = require_copySymbolsIn();
      var getAllKeys = require_getAllKeys();
      var getAllKeysIn = require_getAllKeysIn();
      var getTag = require_getTag();
      var initCloneArray = require_initCloneArray();
      var initCloneByTag = require_initCloneByTag();
      var initCloneObject = require_initCloneObject();
      var isArray = require_isArray();
      var isBuffer = require_isBuffer();
      var isMap = require_isMap();
      var isObject2 = require_isObject();
      var isSet = require_isSet();
      var keys = require_keys();
      var keysIn = require_keysIn();
      var CLONE_DEEP_FLAG = 1;
      var CLONE_FLAT_FLAG = 2;
      var CLONE_SYMBOLS_FLAG = 4;
      var argsTag = "[object Arguments]";
      var arrayTag = "[object Array]";
      var boolTag = "[object Boolean]";
      var dateTag = "[object Date]";
      var errorTag = "[object Error]";
      var funcTag = "[object Function]";
      var genTag = "[object GeneratorFunction]";
      var mapTag = "[object Map]";
      var numberTag = "[object Number]";
      var objectTag = "[object Object]";
      var regexpTag = "[object RegExp]";
      var setTag = "[object Set]";
      var stringTag = "[object String]";
      var symbolTag = "[object Symbol]";
      var weakMapTag = "[object WeakMap]";
      var arrayBufferTag = "[object ArrayBuffer]";
      var dataViewTag = "[object DataView]";
      var float32Tag = "[object Float32Array]";
      var float64Tag = "[object Float64Array]";
      var int8Tag = "[object Int8Array]";
      var int16Tag = "[object Int16Array]";
      var int32Tag = "[object Int32Array]";
      var uint8Tag = "[object Uint8Array]";
      var uint8ClampedTag = "[object Uint8ClampedArray]";
      var uint16Tag = "[object Uint16Array]";
      var uint32Tag = "[object Uint32Array]";
      var cloneableTags = {};
      cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
      cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
      function baseClone(value2, bitmask, customizer, key, object, stack) {
        var result, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
        if (customizer) {
          result = object ? customizer(value2, key, object, stack) : customizer(value2);
        }
        if (result !== void 0) {
          return result;
        }
        if (!isObject2(value2)) {
          return value2;
        }
        var isArr = isArray(value2);
        if (isArr) {
          result = initCloneArray(value2);
          if (!isDeep) {
            return copyArray(value2, result);
          }
        } else {
          var tag = getTag(value2), isFunc = tag == funcTag || tag == genTag;
          if (isBuffer(value2)) {
            return cloneBuffer(value2, isDeep);
          }
          if (tag == objectTag || tag == argsTag || isFunc && !object) {
            result = isFlat || isFunc ? {} : initCloneObject(value2);
            if (!isDeep) {
              return isFlat ? copySymbolsIn(value2, baseAssignIn(result, value2)) : copySymbols(value2, baseAssign(result, value2));
            }
          } else {
            if (!cloneableTags[tag]) {
              return object ? value2 : {};
            }
            result = initCloneByTag(value2, tag, isDeep);
          }
        }
        stack || (stack = new Stack());
        var stacked = stack.get(value2);
        if (stacked) {
          return stacked;
        }
        stack.set(value2, result);
        if (isSet(value2)) {
          value2.forEach(function(subValue) {
            result.add(baseClone(subValue, bitmask, customizer, subValue, value2, stack));
          });
        } else if (isMap(value2)) {
          value2.forEach(function(subValue, key2) {
            result.set(key2, baseClone(subValue, bitmask, customizer, key2, value2, stack));
          });
        }
        var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
        var props = isArr ? void 0 : keysFunc(value2);
        arrayEach(props || value2, function(subValue, key2) {
          if (props) {
            key2 = subValue;
            subValue = value2[key2];
          }
          assignValue(result, key2, baseClone(subValue, bitmask, customizer, key2, value2, stack));
        });
        return result;
      }
      module.exports = baseClone;
    }
  });

  // node_modules/lodash/cloneDeepWith.js
  var require_cloneDeepWith = __commonJS({
    "node_modules/lodash/cloneDeepWith.js"(exports, module) {
      var baseClone = require_baseClone();
      var CLONE_DEEP_FLAG = 1;
      var CLONE_SYMBOLS_FLAG = 4;
      function cloneDeepWith2(value2, customizer) {
        customizer = typeof customizer == "function" ? customizer : void 0;
        return baseClone(value2, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
      }
      module.exports = cloneDeepWith2;
    }
  });

  // node_modules/crypt/crypt.js
  var require_crypt = __commonJS({
    "node_modules/crypt/crypt.js"(exports, module) {
      (function() {
        var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", crypt = {
          rotl: function(n, b) {
            return n << b | n >>> 32 - b;
          },
          rotr: function(n, b) {
            return n << 32 - b | n >>> b;
          },
          endian: function(n) {
            if (n.constructor == Number) {
              return crypt.rotl(n, 8) & 16711935 | crypt.rotl(n, 24) & 4278255360;
            }
            for (var i2 = 0; i2 < n.length; i2++)
              n[i2] = crypt.endian(n[i2]);
            return n;
          },
          randomBytes: function(n) {
            for (var bytes = []; n > 0; n--)
              bytes.push(Math.floor(Math.random() * 256));
            return bytes;
          },
          bytesToWords: function(bytes) {
            for (var words = [], i2 = 0, b = 0; i2 < bytes.length; i2++, b += 8)
              words[b >>> 5] |= bytes[i2] << 24 - b % 32;
            return words;
          },
          wordsToBytes: function(words) {
            for (var bytes = [], b = 0; b < words.length * 32; b += 8)
              bytes.push(words[b >>> 5] >>> 24 - b % 32 & 255);
            return bytes;
          },
          bytesToHex: function(bytes) {
            for (var hex = [], i2 = 0; i2 < bytes.length; i2++) {
              hex.push((bytes[i2] >>> 4).toString(16));
              hex.push((bytes[i2] & 15).toString(16));
            }
            return hex.join("");
          },
          hexToBytes: function(hex) {
            for (var bytes = [], c = 0; c < hex.length; c += 2)
              bytes.push(parseInt(hex.substr(c, 2), 16));
            return bytes;
          },
          bytesToBase64: function(bytes) {
            for (var base64 = [], i2 = 0; i2 < bytes.length; i2 += 3) {
              var triplet = bytes[i2] << 16 | bytes[i2 + 1] << 8 | bytes[i2 + 2];
              for (var j = 0; j < 4; j++)
                if (i2 * 8 + j * 6 <= bytes.length * 8)
                  base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 63));
                else
                  base64.push("=");
            }
            return base64.join("");
          },
          base64ToBytes: function(base64) {
            base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
            for (var bytes = [], i2 = 0, imod4 = 0; i2 < base64.length; imod4 = ++i2 % 4) {
              if (imod4 == 0)
                continue;
              bytes.push((base64map.indexOf(base64.charAt(i2 - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i2)) >>> 6 - imod4 * 2);
            }
            return bytes;
          }
        };
        module.exports = crypt;
      })();
    }
  });

  // node_modules/charenc/charenc.js
  var require_charenc = __commonJS({
    "node_modules/charenc/charenc.js"(exports, module) {
      var charenc = {
        utf8: {
          stringToBytes: function(str) {
            return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
          },
          bytesToString: function(bytes) {
            return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
          }
        },
        bin: {
          stringToBytes: function(str) {
            for (var bytes = [], i2 = 0; i2 < str.length; i2++)
              bytes.push(str.charCodeAt(i2) & 255);
            return bytes;
          },
          bytesToString: function(bytes) {
            for (var str = [], i2 = 0; i2 < bytes.length; i2++)
              str.push(String.fromCharCode(bytes[i2]));
            return str.join("");
          }
        }
      };
      module.exports = charenc;
    }
  });

  // node_modules/is-buffer/index.js
  var require_is_buffer = __commonJS({
    "node_modules/is-buffer/index.js"(exports, module) {
      module.exports = function(obj) {
        return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
      };
      function isBuffer(obj) {
        return !!obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
      }
      function isSlowBuffer(obj) {
        return typeof obj.readFloatLE === "function" && typeof obj.slice === "function" && isBuffer(obj.slice(0, 0));
      }
    }
  });

  // node_modules/md5/md5.js
  var require_md5 = __commonJS({
    "node_modules/md5/md5.js"(exports, module) {
      (function() {
        var crypt = require_crypt(), utf8 = require_charenc().utf8, isBuffer = require_is_buffer(), bin = require_charenc().bin, md52 = function(message, options) {
          if (message.constructor == String)
            if (options && options.encoding === "binary")
              message = bin.stringToBytes(message);
            else
              message = utf8.stringToBytes(message);
          else if (isBuffer(message))
            message = Array.prototype.slice.call(message, 0);
          else if (!Array.isArray(message) && message.constructor !== Uint8Array)
            message = message.toString();
          var m = crypt.bytesToWords(message), l = message.length * 8, a = 1732584193, b = -271733879, c = -1732584194, d = 271733878;
          for (var i2 = 0; i2 < m.length; i2++) {
            m[i2] = (m[i2] << 8 | m[i2] >>> 24) & 16711935 | (m[i2] << 24 | m[i2] >>> 8) & 4278255360;
          }
          m[l >>> 5] |= 128 << l % 32;
          m[(l + 64 >>> 9 << 4) + 14] = l;
          var FF = md52._ff, GG = md52._gg, HH = md52._hh, II = md52._ii;
          for (var i2 = 0; i2 < m.length; i2 += 16) {
            var aa = a, bb = b, cc = c, dd = d;
            a = FF(a, b, c, d, m[i2 + 0], 7, -680876936);
            d = FF(d, a, b, c, m[i2 + 1], 12, -389564586);
            c = FF(c, d, a, b, m[i2 + 2], 17, 606105819);
            b = FF(b, c, d, a, m[i2 + 3], 22, -1044525330);
            a = FF(a, b, c, d, m[i2 + 4], 7, -176418897);
            d = FF(d, a, b, c, m[i2 + 5], 12, 1200080426);
            c = FF(c, d, a, b, m[i2 + 6], 17, -1473231341);
            b = FF(b, c, d, a, m[i2 + 7], 22, -45705983);
            a = FF(a, b, c, d, m[i2 + 8], 7, 1770035416);
            d = FF(d, a, b, c, m[i2 + 9], 12, -1958414417);
            c = FF(c, d, a, b, m[i2 + 10], 17, -42063);
            b = FF(b, c, d, a, m[i2 + 11], 22, -1990404162);
            a = FF(a, b, c, d, m[i2 + 12], 7, 1804603682);
            d = FF(d, a, b, c, m[i2 + 13], 12, -40341101);
            c = FF(c, d, a, b, m[i2 + 14], 17, -1502002290);
            b = FF(b, c, d, a, m[i2 + 15], 22, 1236535329);
            a = GG(a, b, c, d, m[i2 + 1], 5, -165796510);
            d = GG(d, a, b, c, m[i2 + 6], 9, -1069501632);
            c = GG(c, d, a, b, m[i2 + 11], 14, 643717713);
            b = GG(b, c, d, a, m[i2 + 0], 20, -373897302);
            a = GG(a, b, c, d, m[i2 + 5], 5, -701558691);
            d = GG(d, a, b, c, m[i2 + 10], 9, 38016083);
            c = GG(c, d, a, b, m[i2 + 15], 14, -660478335);
            b = GG(b, c, d, a, m[i2 + 4], 20, -405537848);
            a = GG(a, b, c, d, m[i2 + 9], 5, 568446438);
            d = GG(d, a, b, c, m[i2 + 14], 9, -1019803690);
            c = GG(c, d, a, b, m[i2 + 3], 14, -187363961);
            b = GG(b, c, d, a, m[i2 + 8], 20, 1163531501);
            a = GG(a, b, c, d, m[i2 + 13], 5, -1444681467);
            d = GG(d, a, b, c, m[i2 + 2], 9, -51403784);
            c = GG(c, d, a, b, m[i2 + 7], 14, 1735328473);
            b = GG(b, c, d, a, m[i2 + 12], 20, -1926607734);
            a = HH(a, b, c, d, m[i2 + 5], 4, -378558);
            d = HH(d, a, b, c, m[i2 + 8], 11, -2022574463);
            c = HH(c, d, a, b, m[i2 + 11], 16, 1839030562);
            b = HH(b, c, d, a, m[i2 + 14], 23, -35309556);
            a = HH(a, b, c, d, m[i2 + 1], 4, -1530992060);
            d = HH(d, a, b, c, m[i2 + 4], 11, 1272893353);
            c = HH(c, d, a, b, m[i2 + 7], 16, -155497632);
            b = HH(b, c, d, a, m[i2 + 10], 23, -1094730640);
            a = HH(a, b, c, d, m[i2 + 13], 4, 681279174);
            d = HH(d, a, b, c, m[i2 + 0], 11, -358537222);
            c = HH(c, d, a, b, m[i2 + 3], 16, -722521979);
            b = HH(b, c, d, a, m[i2 + 6], 23, 76029189);
            a = HH(a, b, c, d, m[i2 + 9], 4, -640364487);
            d = HH(d, a, b, c, m[i2 + 12], 11, -421815835);
            c = HH(c, d, a, b, m[i2 + 15], 16, 530742520);
            b = HH(b, c, d, a, m[i2 + 2], 23, -995338651);
            a = II(a, b, c, d, m[i2 + 0], 6, -198630844);
            d = II(d, a, b, c, m[i2 + 7], 10, 1126891415);
            c = II(c, d, a, b, m[i2 + 14], 15, -1416354905);
            b = II(b, c, d, a, m[i2 + 5], 21, -57434055);
            a = II(a, b, c, d, m[i2 + 12], 6, 1700485571);
            d = II(d, a, b, c, m[i2 + 3], 10, -1894986606);
            c = II(c, d, a, b, m[i2 + 10], 15, -1051523);
            b = II(b, c, d, a, m[i2 + 1], 21, -2054922799);
            a = II(a, b, c, d, m[i2 + 8], 6, 1873313359);
            d = II(d, a, b, c, m[i2 + 15], 10, -30611744);
            c = II(c, d, a, b, m[i2 + 6], 15, -1560198380);
            b = II(b, c, d, a, m[i2 + 13], 21, 1309151649);
            a = II(a, b, c, d, m[i2 + 4], 6, -145523070);
            d = II(d, a, b, c, m[i2 + 11], 10, -1120210379);
            c = II(c, d, a, b, m[i2 + 2], 15, 718787259);
            b = II(b, c, d, a, m[i2 + 9], 21, -343485551);
            a = a + aa >>> 0;
            b = b + bb >>> 0;
            c = c + cc >>> 0;
            d = d + dd >>> 0;
          }
          return crypt.endian([a, b, c, d]);
        };
        md52._ff = function(a, b, c, d, x, s, t) {
          var n = a + (b & c | ~b & d) + (x >>> 0) + t;
          return (n << s | n >>> 32 - s) + b;
        };
        md52._gg = function(a, b, c, d, x, s, t) {
          var n = a + (b & d | c & ~d) + (x >>> 0) + t;
          return (n << s | n >>> 32 - s) + b;
        };
        md52._hh = function(a, b, c, d, x, s, t) {
          var n = a + (b ^ c ^ d) + (x >>> 0) + t;
          return (n << s | n >>> 32 - s) + b;
        };
        md52._ii = function(a, b, c, d, x, s, t) {
          var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
          return (n << s | n >>> 32 - s) + b;
        };
        md52._blocksize = 16;
        md52._digestsize = 16;
        module.exports = function(message, options) {
          if (message === void 0 || message === null)
            throw new Error("Illegal argument " + message);
          var digestbytes = crypt.wordsToBytes(md52(message, options));
          return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
        };
      })();
    }
  });

  // node_modules/highlight.js/lib/core.js
  var require_core = __commonJS({
    "node_modules/highlight.js/lib/core.js"(exports, module) {
      function deepFreeze(obj) {
        if (obj instanceof Map) {
          obj.clear = obj.delete = obj.set = function() {
            throw new Error("map is read-only");
          };
        } else if (obj instanceof Set) {
          obj.add = obj.clear = obj.delete = function() {
            throw new Error("set is read-only");
          };
        }
        Object.freeze(obj);
        Object.getOwnPropertyNames(obj).forEach(function(name2) {
          var prop = obj[name2];
          if (typeof prop == "object" && !Object.isFrozen(prop)) {
            deepFreeze(prop);
          }
        });
        return obj;
      }
      var deepFreezeEs6 = deepFreeze;
      var _default = deepFreeze;
      deepFreezeEs6.default = _default;
      var Response = class {
        constructor(mode) {
          if (mode.data === void 0)
            mode.data = {};
          this.data = mode.data;
          this.isMatchIgnored = false;
        }
        ignoreMatch() {
          this.isMatchIgnored = true;
        }
      };
      function escapeHTML(value2) {
        return value2.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#x27;");
      }
      function inherit(original, ...objects) {
        const result = /* @__PURE__ */ Object.create(null);
        for (const key in original) {
          result[key] = original[key];
        }
        objects.forEach(function(obj) {
          for (const key in obj) {
            result[key] = obj[key];
          }
        });
        return result;
      }
      var SPAN_CLOSE = "</span>";
      var emitsWrappingTags = (node) => {
        return !!node.kind;
      };
      var HTMLRenderer = class {
        constructor(parseTree, options) {
          this.buffer = "";
          this.classPrefix = options.classPrefix;
          parseTree.walk(this);
        }
        addText(text) {
          this.buffer += escapeHTML(text);
        }
        openNode(node) {
          if (!emitsWrappingTags(node))
            return;
          let className = node.kind;
          if (!node.sublanguage) {
            className = `${this.classPrefix}${className}`;
          }
          this.span(className);
        }
        closeNode(node) {
          if (!emitsWrappingTags(node))
            return;
          this.buffer += SPAN_CLOSE;
        }
        value() {
          return this.buffer;
        }
        span(className) {
          this.buffer += `<span class="${className}">`;
        }
      };
      var TokenTree = class {
        constructor() {
          this.rootNode = { children: [] };
          this.stack = [this.rootNode];
        }
        get top() {
          return this.stack[this.stack.length - 1];
        }
        get root() {
          return this.rootNode;
        }
        add(node) {
          this.top.children.push(node);
        }
        openNode(kind) {
          const node = { kind, children: [] };
          this.add(node);
          this.stack.push(node);
        }
        closeNode() {
          if (this.stack.length > 1) {
            return this.stack.pop();
          }
          return void 0;
        }
        closeAllNodes() {
          while (this.closeNode())
            ;
        }
        toJSON() {
          return JSON.stringify(this.rootNode, null, 4);
        }
        walk(builder) {
          return this.constructor._walk(builder, this.rootNode);
        }
        static _walk(builder, node) {
          if (typeof node === "string") {
            builder.addText(node);
          } else if (node.children) {
            builder.openNode(node);
            node.children.forEach((child) => this._walk(builder, child));
            builder.closeNode(node);
          }
          return builder;
        }
        static _collapse(node) {
          if (typeof node === "string")
            return;
          if (!node.children)
            return;
          if (node.children.every((el) => typeof el === "string")) {
            node.children = [node.children.join("")];
          } else {
            node.children.forEach((child) => {
              TokenTree._collapse(child);
            });
          }
        }
      };
      var TokenTreeEmitter = class extends TokenTree {
        constructor(options) {
          super();
          this.options = options;
        }
        addKeyword(text, kind) {
          if (text === "") {
            return;
          }
          this.openNode(kind);
          this.addText(text);
          this.closeNode();
        }
        addText(text) {
          if (text === "") {
            return;
          }
          this.add(text);
        }
        addSublanguage(emitter, name2) {
          const node = emitter.root;
          node.kind = name2;
          node.sublanguage = true;
          this.add(node);
        }
        toHTML() {
          const renderer = new HTMLRenderer(this, this.options);
          return renderer.value();
        }
        finalize() {
          return true;
        }
      };
      function escape2(value2) {
        return new RegExp(value2.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&"), "m");
      }
      function source(re2) {
        if (!re2)
          return null;
        if (typeof re2 === "string")
          return re2;
        return re2.source;
      }
      function concat(...args) {
        const joined = args.map((x) => source(x)).join("");
        return joined;
      }
      function either(...args) {
        const joined = "(" + args.map((x) => source(x)).join("|") + ")";
        return joined;
      }
      function countMatchGroups(re2) {
        return new RegExp(re2.toString() + "|").exec("").length - 1;
      }
      function startsWith(re2, lexeme) {
        const match = re2 && re2.exec(lexeme);
        return match && match.index === 0;
      }
      var BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
      function join(regexps, separator = "|") {
        let numCaptures = 0;
        return regexps.map((regex) => {
          numCaptures += 1;
          const offset = numCaptures;
          let re2 = source(regex);
          let out = "";
          while (re2.length > 0) {
            const match = BACKREF_RE.exec(re2);
            if (!match) {
              out += re2;
              break;
            }
            out += re2.substring(0, match.index);
            re2 = re2.substring(match.index + match[0].length);
            if (match[0][0] === "\\" && match[1]) {
              out += "\\" + String(Number(match[1]) + offset);
            } else {
              out += match[0];
              if (match[0] === "(") {
                numCaptures++;
              }
            }
          }
          return out;
        }).map((re2) => `(${re2})`).join(separator);
      }
      var MATCH_NOTHING_RE = /\b\B/;
      var IDENT_RE = "[a-zA-Z]\\w*";
      var UNDERSCORE_IDENT_RE = "[a-zA-Z_]\\w*";
      var NUMBER_RE = "\\b\\d+(\\.\\d+)?";
      var C_NUMBER_RE = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";
      var BINARY_NUMBER_RE = "\\b(0b[01]+)";
      var RE_STARTERS_RE = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";
      var SHEBANG = (opts = {}) => {
        const beginShebang = /^#![ ]*\//;
        if (opts.binary) {
          opts.begin = concat(
            beginShebang,
            /.*\b/,
            opts.binary,
            /\b.*/
          );
        }
        return inherit({
          className: "meta",
          begin: beginShebang,
          end: /$/,
          relevance: 0,
          "on:begin": (m, resp) => {
            if (m.index !== 0)
              resp.ignoreMatch();
          }
        }, opts);
      };
      var BACKSLASH_ESCAPE = {
        begin: "\\\\[\\s\\S]",
        relevance: 0
      };
      var APOS_STRING_MODE = {
        className: "string",
        begin: "'",
        end: "'",
        illegal: "\\n",
        contains: [BACKSLASH_ESCAPE]
      };
      var QUOTE_STRING_MODE = {
        className: "string",
        begin: '"',
        end: '"',
        illegal: "\\n",
        contains: [BACKSLASH_ESCAPE]
      };
      var PHRASAL_WORDS_MODE = {
        begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
      };
      var COMMENT = function(begin, end, modeOptions = {}) {
        const mode = inherit(
          {
            className: "comment",
            begin,
            end,
            contains: []
          },
          modeOptions
        );
        mode.contains.push(PHRASAL_WORDS_MODE);
        mode.contains.push({
          className: "doctag",
          begin: "(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",
          relevance: 0
        });
        return mode;
      };
      var C_LINE_COMMENT_MODE = COMMENT("//", "$");
      var C_BLOCK_COMMENT_MODE = COMMENT("/\\*", "\\*/");
      var HASH_COMMENT_MODE = COMMENT("#", "$");
      var NUMBER_MODE = {
        className: "number",
        begin: NUMBER_RE,
        relevance: 0
      };
      var C_NUMBER_MODE = {
        className: "number",
        begin: C_NUMBER_RE,
        relevance: 0
      };
      var BINARY_NUMBER_MODE = {
        className: "number",
        begin: BINARY_NUMBER_RE,
        relevance: 0
      };
      var CSS_NUMBER_MODE = {
        className: "number",
        begin: NUMBER_RE + "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
        relevance: 0
      };
      var REGEXP_MODE = {
        begin: /(?=\/[^/\n]*\/)/,
        contains: [{
          className: "regexp",
          begin: /\//,
          end: /\/[gimuy]*/,
          illegal: /\n/,
          contains: [
            BACKSLASH_ESCAPE,
            {
              begin: /\[/,
              end: /\]/,
              relevance: 0,
              contains: [BACKSLASH_ESCAPE]
            }
          ]
        }]
      };
      var TITLE_MODE = {
        className: "title",
        begin: IDENT_RE,
        relevance: 0
      };
      var UNDERSCORE_TITLE_MODE = {
        className: "title",
        begin: UNDERSCORE_IDENT_RE,
        relevance: 0
      };
      var METHOD_GUARD = {
        begin: "\\.\\s*" + UNDERSCORE_IDENT_RE,
        relevance: 0
      };
      var END_SAME_AS_BEGIN = function(mode) {
        return Object.assign(
          mode,
          {
            "on:begin": (m, resp) => {
              resp.data._beginMatch = m[1];
            },
            "on:end": (m, resp) => {
              if (resp.data._beginMatch !== m[1])
                resp.ignoreMatch();
            }
          }
        );
      };
      var MODES = /* @__PURE__ */ Object.freeze({
        __proto__: null,
        MATCH_NOTHING_RE,
        IDENT_RE,
        UNDERSCORE_IDENT_RE,
        NUMBER_RE,
        C_NUMBER_RE,
        BINARY_NUMBER_RE,
        RE_STARTERS_RE,
        SHEBANG,
        BACKSLASH_ESCAPE,
        APOS_STRING_MODE,
        QUOTE_STRING_MODE,
        PHRASAL_WORDS_MODE,
        COMMENT,
        C_LINE_COMMENT_MODE,
        C_BLOCK_COMMENT_MODE,
        HASH_COMMENT_MODE,
        NUMBER_MODE,
        C_NUMBER_MODE,
        BINARY_NUMBER_MODE,
        CSS_NUMBER_MODE,
        REGEXP_MODE,
        TITLE_MODE,
        UNDERSCORE_TITLE_MODE,
        METHOD_GUARD,
        END_SAME_AS_BEGIN
      });
      function skipIfhasPrecedingDot(match, response) {
        const before = match.input[match.index - 1];
        if (before === ".") {
          response.ignoreMatch();
        }
      }
      function beginKeywords(mode, parent) {
        if (!parent)
          return;
        if (!mode.beginKeywords)
          return;
        mode.begin = "\\b(" + mode.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)";
        mode.__beforeBegin = skipIfhasPrecedingDot;
        mode.keywords = mode.keywords || mode.beginKeywords;
        delete mode.beginKeywords;
        if (mode.relevance === void 0)
          mode.relevance = 0;
      }
      function compileIllegal(mode, _parent) {
        if (!Array.isArray(mode.illegal))
          return;
        mode.illegal = either(...mode.illegal);
      }
      function compileMatch(mode, _parent) {
        if (!mode.match)
          return;
        if (mode.begin || mode.end)
          throw new Error("begin & end are not supported with match");
        mode.begin = mode.match;
        delete mode.match;
      }
      function compileRelevance(mode, _parent) {
        if (mode.relevance === void 0)
          mode.relevance = 1;
      }
      var COMMON_KEYWORDS = [
        "of",
        "and",
        "for",
        "in",
        "not",
        "or",
        "if",
        "then",
        "parent",
        "list",
        "value"
      ];
      var DEFAULT_KEYWORD_CLASSNAME = "keyword";
      function compileKeywords(rawKeywords, caseInsensitive, className = DEFAULT_KEYWORD_CLASSNAME) {
        const compiledKeywords = {};
        if (typeof rawKeywords === "string") {
          compileList(className, rawKeywords.split(" "));
        } else if (Array.isArray(rawKeywords)) {
          compileList(className, rawKeywords);
        } else {
          Object.keys(rawKeywords).forEach(function(className2) {
            Object.assign(
              compiledKeywords,
              compileKeywords(rawKeywords[className2], caseInsensitive, className2)
            );
          });
        }
        return compiledKeywords;
        function compileList(className2, keywordList) {
          if (caseInsensitive) {
            keywordList = keywordList.map((x) => x.toLowerCase());
          }
          keywordList.forEach(function(keyword) {
            const pair = keyword.split("|");
            compiledKeywords[pair[0]] = [className2, scoreForKeyword(pair[0], pair[1])];
          });
        }
      }
      function scoreForKeyword(keyword, providedScore) {
        if (providedScore) {
          return Number(providedScore);
        }
        return commonKeyword(keyword) ? 0 : 1;
      }
      function commonKeyword(keyword) {
        return COMMON_KEYWORDS.includes(keyword.toLowerCase());
      }
      function compileLanguage(language, { plugins }) {
        function langRe(value2, global2) {
          return new RegExp(
            source(value2),
            "m" + (language.case_insensitive ? "i" : "") + (global2 ? "g" : "")
          );
        }
        class MultiRegex {
          constructor() {
            this.matchIndexes = {};
            this.regexes = [];
            this.matchAt = 1;
            this.position = 0;
          }
          addRule(re2, opts) {
            opts.position = this.position++;
            this.matchIndexes[this.matchAt] = opts;
            this.regexes.push([opts, re2]);
            this.matchAt += countMatchGroups(re2) + 1;
          }
          compile() {
            if (this.regexes.length === 0) {
              this.exec = () => null;
            }
            const terminators = this.regexes.map((el) => el[1]);
            this.matcherRe = langRe(join(terminators), true);
            this.lastIndex = 0;
          }
          exec(s) {
            this.matcherRe.lastIndex = this.lastIndex;
            const match = this.matcherRe.exec(s);
            if (!match) {
              return null;
            }
            const i2 = match.findIndex((el, i3) => i3 > 0 && el !== void 0);
            const matchData = this.matchIndexes[i2];
            match.splice(0, i2);
            return Object.assign(match, matchData);
          }
        }
        class ResumableMultiRegex {
          constructor() {
            this.rules = [];
            this.multiRegexes = [];
            this.count = 0;
            this.lastIndex = 0;
            this.regexIndex = 0;
          }
          getMatcher(index) {
            if (this.multiRegexes[index])
              return this.multiRegexes[index];
            const matcher = new MultiRegex();
            this.rules.slice(index).forEach(([re2, opts]) => matcher.addRule(re2, opts));
            matcher.compile();
            this.multiRegexes[index] = matcher;
            return matcher;
          }
          resumingScanAtSamePosition() {
            return this.regexIndex !== 0;
          }
          considerAll() {
            this.regexIndex = 0;
          }
          addRule(re2, opts) {
            this.rules.push([re2, opts]);
            if (opts.type === "begin")
              this.count++;
          }
          exec(s) {
            const m = this.getMatcher(this.regexIndex);
            m.lastIndex = this.lastIndex;
            let result = m.exec(s);
            if (this.resumingScanAtSamePosition()) {
              if (result && result.index === this.lastIndex)
                ;
              else {
                const m2 = this.getMatcher(0);
                m2.lastIndex = this.lastIndex + 1;
                result = m2.exec(s);
              }
            }
            if (result) {
              this.regexIndex += result.position + 1;
              if (this.regexIndex === this.count) {
                this.considerAll();
              }
            }
            return result;
          }
        }
        function buildModeRegex(mode) {
          const mm = new ResumableMultiRegex();
          mode.contains.forEach((term) => mm.addRule(term.begin, { rule: term, type: "begin" }));
          if (mode.terminatorEnd) {
            mm.addRule(mode.terminatorEnd, { type: "end" });
          }
          if (mode.illegal) {
            mm.addRule(mode.illegal, { type: "illegal" });
          }
          return mm;
        }
        function compileMode(mode, parent) {
          const cmode = mode;
          if (mode.isCompiled)
            return cmode;
          [
            compileMatch
          ].forEach((ext) => ext(mode, parent));
          language.compilerExtensions.forEach((ext) => ext(mode, parent));
          mode.__beforeBegin = null;
          [
            beginKeywords,
            compileIllegal,
            compileRelevance
          ].forEach((ext) => ext(mode, parent));
          mode.isCompiled = true;
          let keywordPattern = null;
          if (typeof mode.keywords === "object") {
            keywordPattern = mode.keywords.$pattern;
            delete mode.keywords.$pattern;
          }
          if (mode.keywords) {
            mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);
          }
          if (mode.lexemes && keywordPattern) {
            throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");
          }
          keywordPattern = keywordPattern || mode.lexemes || /\w+/;
          cmode.keywordPatternRe = langRe(keywordPattern, true);
          if (parent) {
            if (!mode.begin)
              mode.begin = /\B|\b/;
            cmode.beginRe = langRe(mode.begin);
            if (mode.endSameAsBegin)
              mode.end = mode.begin;
            if (!mode.end && !mode.endsWithParent)
              mode.end = /\B|\b/;
            if (mode.end)
              cmode.endRe = langRe(mode.end);
            cmode.terminatorEnd = source(mode.end) || "";
            if (mode.endsWithParent && parent.terminatorEnd) {
              cmode.terminatorEnd += (mode.end ? "|" : "") + parent.terminatorEnd;
            }
          }
          if (mode.illegal)
            cmode.illegalRe = langRe(mode.illegal);
          if (!mode.contains)
            mode.contains = [];
          mode.contains = [].concat(...mode.contains.map(function(c) {
            return expandOrCloneMode(c === "self" ? mode : c);
          }));
          mode.contains.forEach(function(c) {
            compileMode(c, cmode);
          });
          if (mode.starts) {
            compileMode(mode.starts, parent);
          }
          cmode.matcher = buildModeRegex(cmode);
          return cmode;
        }
        if (!language.compilerExtensions)
          language.compilerExtensions = [];
        if (language.contains && language.contains.includes("self")) {
          throw new Error("ERR: contains `self` is not supported at the top-level of a language.  See documentation.");
        }
        language.classNameAliases = inherit(language.classNameAliases || {});
        return compileMode(language);
      }
      function dependencyOnParent(mode) {
        if (!mode)
          return false;
        return mode.endsWithParent || dependencyOnParent(mode.starts);
      }
      function expandOrCloneMode(mode) {
        if (mode.variants && !mode.cachedVariants) {
          mode.cachedVariants = mode.variants.map(function(variant) {
            return inherit(mode, { variants: null }, variant);
          });
        }
        if (mode.cachedVariants) {
          return mode.cachedVariants;
        }
        if (dependencyOnParent(mode)) {
          return inherit(mode, { starts: mode.starts ? inherit(mode.starts) : null });
        }
        if (Object.isFrozen(mode)) {
          return inherit(mode);
        }
        return mode;
      }
      var version = "10.7.3";
      function hasValueOrEmptyAttribute(value2) {
        return Boolean(value2 || value2 === "");
      }
      function BuildVuePlugin(hljs2) {
        const Component = {
          props: ["language", "code", "autodetect"],
          data: function() {
            return {
              detectedLanguage: "",
              unknownLanguage: false
            };
          },
          computed: {
            className() {
              if (this.unknownLanguage)
                return "";
              return "hljs " + this.detectedLanguage;
            },
            highlighted() {
              if (!this.autoDetect && !hljs2.getLanguage(this.language)) {
                console.warn(`The language "${this.language}" you specified could not be found.`);
                this.unknownLanguage = true;
                return escapeHTML(this.code);
              }
              let result = {};
              if (this.autoDetect) {
                result = hljs2.highlightAuto(this.code);
                this.detectedLanguage = result.language;
              } else {
                result = hljs2.highlight(this.language, this.code, this.ignoreIllegals);
                this.detectedLanguage = this.language;
              }
              return result.value;
            },
            autoDetect() {
              return !this.language || hasValueOrEmptyAttribute(this.autodetect);
            },
            ignoreIllegals() {
              return true;
            }
          },
          render(createElement) {
            return createElement("pre", {}, [
              createElement("code", {
                class: this.className,
                domProps: { innerHTML: this.highlighted }
              })
            ]);
          }
        };
        const VuePlugin = {
          install(Vue) {
            Vue.component("highlightjs", Component);
          }
        };
        return { Component, VuePlugin };
      }
      var mergeHTMLPlugin = {
        "after:highlightElement": ({ el, result, text }) => {
          const originalStream = nodeStream(el);
          if (!originalStream.length)
            return;
          const resultNode = document.createElement("div");
          resultNode.innerHTML = result.value;
          result.value = mergeStreams(originalStream, nodeStream(resultNode), text);
        }
      };
      function tag(node) {
        return node.nodeName.toLowerCase();
      }
      function nodeStream(node) {
        const result = [];
        (function _nodeStream(node2, offset) {
          for (let child = node2.firstChild; child; child = child.nextSibling) {
            if (child.nodeType === 3) {
              offset += child.nodeValue.length;
            } else if (child.nodeType === 1) {
              result.push({
                event: "start",
                offset,
                node: child
              });
              offset = _nodeStream(child, offset);
              if (!tag(child).match(/br|hr|img|input/)) {
                result.push({
                  event: "stop",
                  offset,
                  node: child
                });
              }
            }
          }
          return offset;
        })(node, 0);
        return result;
      }
      function mergeStreams(original, highlighted, value2) {
        let processed = 0;
        let result = "";
        const nodeStack = [];
        function selectStream() {
          if (!original.length || !highlighted.length) {
            return original.length ? original : highlighted;
          }
          if (original[0].offset !== highlighted[0].offset) {
            return original[0].offset < highlighted[0].offset ? original : highlighted;
          }
          return highlighted[0].event === "start" ? original : highlighted;
        }
        function open(node) {
          function attributeString(attr) {
            return " " + attr.nodeName + '="' + escapeHTML(attr.value) + '"';
          }
          result += "<" + tag(node) + [].map.call(node.attributes, attributeString).join("") + ">";
        }
        function close(node) {
          result += "</" + tag(node) + ">";
        }
        function render(event) {
          (event.event === "start" ? open : close)(event.node);
        }
        while (original.length || highlighted.length) {
          let stream = selectStream();
          result += escapeHTML(value2.substring(processed, stream[0].offset));
          processed = stream[0].offset;
          if (stream === original) {
            nodeStack.reverse().forEach(close);
            do {
              render(stream.splice(0, 1)[0]);
              stream = selectStream();
            } while (stream === original && stream.length && stream[0].offset === processed);
            nodeStack.reverse().forEach(open);
          } else {
            if (stream[0].event === "start") {
              nodeStack.push(stream[0].node);
            } else {
              nodeStack.pop();
            }
            render(stream.splice(0, 1)[0]);
          }
        }
        return result + escapeHTML(value2.substr(processed));
      }
      var seenDeprecations = {};
      var error = (message) => {
        console.error(message);
      };
      var warn = (message, ...args) => {
        console.log(`WARN: ${message}`, ...args);
      };
      var deprecated = (version2, message) => {
        if (seenDeprecations[`${version2}/${message}`])
          return;
        console.log(`Deprecated as of ${version2}. ${message}`);
        seenDeprecations[`${version2}/${message}`] = true;
      };
      var escape$1 = escapeHTML;
      var inherit$1 = inherit;
      var NO_MATCH = Symbol("nomatch");
      var HLJS = function(hljs2) {
        const languages = /* @__PURE__ */ Object.create(null);
        const aliases = /* @__PURE__ */ Object.create(null);
        const plugins = [];
        let SAFE_MODE = true;
        const fixMarkupRe = /(^(<[^>]+>|\t|)+|\n)/gm;
        const LANGUAGE_NOT_FOUND = "Could not find the language '{}', did you forget to load/include a language module?";
        const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: "Plain text", contains: [] };
        let options = {
          noHighlightRe: /^(no-?highlight)$/i,
          languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
          classPrefix: "hljs-",
          tabReplace: null,
          useBR: false,
          languages: null,
          __emitter: TokenTreeEmitter
        };
        function shouldNotHighlight(languageName) {
          return options.noHighlightRe.test(languageName);
        }
        function blockLanguage(block) {
          let classes = block.className + " ";
          classes += block.parentNode ? block.parentNode.className : "";
          const match = options.languageDetectRe.exec(classes);
          if (match) {
            const language = getLanguage(match[1]);
            if (!language) {
              warn(LANGUAGE_NOT_FOUND.replace("{}", match[1]));
              warn("Falling back to no-highlight mode for this block.", block);
            }
            return language ? match[1] : "no-highlight";
          }
          return classes.split(/\s+/).find((_class) => shouldNotHighlight(_class) || getLanguage(_class));
        }
        function highlight2(codeOrlanguageName, optionsOrCode, ignoreIllegals, continuation) {
          let code = "";
          let languageName = "";
          if (typeof optionsOrCode === "object") {
            code = codeOrlanguageName;
            ignoreIllegals = optionsOrCode.ignoreIllegals;
            languageName = optionsOrCode.language;
            continuation = void 0;
          } else {
            deprecated("10.7.0", "highlight(lang, code, ...args) has been deprecated.");
            deprecated("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277");
            languageName = codeOrlanguageName;
            code = optionsOrCode;
          }
          const context = {
            code,
            language: languageName
          };
          fire("before:highlight", context);
          const result = context.result ? context.result : _highlight(context.language, context.code, ignoreIllegals, continuation);
          result.code = context.code;
          fire("after:highlight", result);
          return result;
        }
        function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {
          function keywordData(mode, match) {
            const matchText = language.case_insensitive ? match[0].toLowerCase() : match[0];
            return Object.prototype.hasOwnProperty.call(mode.keywords, matchText) && mode.keywords[matchText];
          }
          function processKeywords() {
            if (!top.keywords) {
              emitter.addText(modeBuffer);
              return;
            }
            let lastIndex = 0;
            top.keywordPatternRe.lastIndex = 0;
            let match = top.keywordPatternRe.exec(modeBuffer);
            let buf = "";
            while (match) {
              buf += modeBuffer.substring(lastIndex, match.index);
              const data = keywordData(top, match);
              if (data) {
                const [kind, keywordRelevance] = data;
                emitter.addText(buf);
                buf = "";
                relevance += keywordRelevance;
                if (kind.startsWith("_")) {
                  buf += match[0];
                } else {
                  const cssClass = language.classNameAliases[kind] || kind;
                  emitter.addKeyword(match[0], cssClass);
                }
              } else {
                buf += match[0];
              }
              lastIndex = top.keywordPatternRe.lastIndex;
              match = top.keywordPatternRe.exec(modeBuffer);
            }
            buf += modeBuffer.substr(lastIndex);
            emitter.addText(buf);
          }
          function processSubLanguage() {
            if (modeBuffer === "")
              return;
            let result2 = null;
            if (typeof top.subLanguage === "string") {
              if (!languages[top.subLanguage]) {
                emitter.addText(modeBuffer);
                return;
              }
              result2 = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);
              continuations[top.subLanguage] = result2.top;
            } else {
              result2 = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);
            }
            if (top.relevance > 0) {
              relevance += result2.relevance;
            }
            emitter.addSublanguage(result2.emitter, result2.language);
          }
          function processBuffer() {
            if (top.subLanguage != null) {
              processSubLanguage();
            } else {
              processKeywords();
            }
            modeBuffer = "";
          }
          function startNewMode(mode) {
            if (mode.className) {
              emitter.openNode(language.classNameAliases[mode.className] || mode.className);
            }
            top = Object.create(mode, { parent: { value: top } });
            return top;
          }
          function endOfMode(mode, match, matchPlusRemainder) {
            let matched = startsWith(mode.endRe, matchPlusRemainder);
            if (matched) {
              if (mode["on:end"]) {
                const resp = new Response(mode);
                mode["on:end"](match, resp);
                if (resp.isMatchIgnored)
                  matched = false;
              }
              if (matched) {
                while (mode.endsParent && mode.parent) {
                  mode = mode.parent;
                }
                return mode;
              }
            }
            if (mode.endsWithParent) {
              return endOfMode(mode.parent, match, matchPlusRemainder);
            }
          }
          function doIgnore(lexeme) {
            if (top.matcher.regexIndex === 0) {
              modeBuffer += lexeme[0];
              return 1;
            } else {
              resumeScanAtSamePosition = true;
              return 0;
            }
          }
          function doBeginMatch(match) {
            const lexeme = match[0];
            const newMode = match.rule;
            const resp = new Response(newMode);
            const beforeCallbacks = [newMode.__beforeBegin, newMode["on:begin"]];
            for (const cb of beforeCallbacks) {
              if (!cb)
                continue;
              cb(match, resp);
              if (resp.isMatchIgnored)
                return doIgnore(lexeme);
            }
            if (newMode && newMode.endSameAsBegin) {
              newMode.endRe = escape2(lexeme);
            }
            if (newMode.skip) {
              modeBuffer += lexeme;
            } else {
              if (newMode.excludeBegin) {
                modeBuffer += lexeme;
              }
              processBuffer();
              if (!newMode.returnBegin && !newMode.excludeBegin) {
                modeBuffer = lexeme;
              }
            }
            startNewMode(newMode);
            return newMode.returnBegin ? 0 : lexeme.length;
          }
          function doEndMatch(match) {
            const lexeme = match[0];
            const matchPlusRemainder = codeToHighlight.substr(match.index);
            const endMode = endOfMode(top, match, matchPlusRemainder);
            if (!endMode) {
              return NO_MATCH;
            }
            const origin = top;
            if (origin.skip) {
              modeBuffer += lexeme;
            } else {
              if (!(origin.returnEnd || origin.excludeEnd)) {
                modeBuffer += lexeme;
              }
              processBuffer();
              if (origin.excludeEnd) {
                modeBuffer = lexeme;
              }
            }
            do {
              if (top.className) {
                emitter.closeNode();
              }
              if (!top.skip && !top.subLanguage) {
                relevance += top.relevance;
              }
              top = top.parent;
            } while (top !== endMode.parent);
            if (endMode.starts) {
              if (endMode.endSameAsBegin) {
                endMode.starts.endRe = endMode.endRe;
              }
              startNewMode(endMode.starts);
            }
            return origin.returnEnd ? 0 : lexeme.length;
          }
          function processContinuations() {
            const list = [];
            for (let current = top; current !== language; current = current.parent) {
              if (current.className) {
                list.unshift(current.className);
              }
            }
            list.forEach((item) => emitter.openNode(item));
          }
          let lastMatch = {};
          function processLexeme(textBeforeMatch, match) {
            const lexeme = match && match[0];
            modeBuffer += textBeforeMatch;
            if (lexeme == null) {
              processBuffer();
              return 0;
            }
            if (lastMatch.type === "begin" && match.type === "end" && lastMatch.index === match.index && lexeme === "") {
              modeBuffer += codeToHighlight.slice(match.index, match.index + 1);
              if (!SAFE_MODE) {
                const err = new Error("0 width match regex");
                err.languageName = languageName;
                err.badRule = lastMatch.rule;
                throw err;
              }
              return 1;
            }
            lastMatch = match;
            if (match.type === "begin") {
              return doBeginMatch(match);
            } else if (match.type === "illegal" && !ignoreIllegals) {
              const err = new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.className || "<unnamed>") + '"');
              err.mode = top;
              throw err;
            } else if (match.type === "end") {
              const processed = doEndMatch(match);
              if (processed !== NO_MATCH) {
                return processed;
              }
            }
            if (match.type === "illegal" && lexeme === "") {
              return 1;
            }
            if (iterations > 1e5 && iterations > match.index * 3) {
              const err = new Error("potential infinite loop, way more iterations than matches");
              throw err;
            }
            modeBuffer += lexeme;
            return lexeme.length;
          }
          const language = getLanguage(languageName);
          if (!language) {
            error(LANGUAGE_NOT_FOUND.replace("{}", languageName));
            throw new Error('Unknown language: "' + languageName + '"');
          }
          const md = compileLanguage(language, { plugins });
          let result = "";
          let top = continuation || md;
          const continuations = {};
          const emitter = new options.__emitter(options);
          processContinuations();
          let modeBuffer = "";
          let relevance = 0;
          let index = 0;
          let iterations = 0;
          let resumeScanAtSamePosition = false;
          try {
            top.matcher.considerAll();
            for (; ; ) {
              iterations++;
              if (resumeScanAtSamePosition) {
                resumeScanAtSamePosition = false;
              } else {
                top.matcher.considerAll();
              }
              top.matcher.lastIndex = index;
              const match = top.matcher.exec(codeToHighlight);
              if (!match)
                break;
              const beforeMatch = codeToHighlight.substring(index, match.index);
              const processedCount = processLexeme(beforeMatch, match);
              index = match.index + processedCount;
            }
            processLexeme(codeToHighlight.substr(index));
            emitter.closeAllNodes();
            emitter.finalize();
            result = emitter.toHTML();
            return {
              relevance: Math.floor(relevance),
              value: result,
              language: languageName,
              illegal: false,
              emitter,
              top
            };
          } catch (err) {
            if (err.message && err.message.includes("Illegal")) {
              return {
                illegal: true,
                illegalBy: {
                  msg: err.message,
                  context: codeToHighlight.slice(index - 100, index + 100),
                  mode: err.mode
                },
                sofar: result,
                relevance: 0,
                value: escape$1(codeToHighlight),
                emitter
              };
            } else if (SAFE_MODE) {
              return {
                illegal: false,
                relevance: 0,
                value: escape$1(codeToHighlight),
                emitter,
                language: languageName,
                top,
                errorRaised: err
              };
            } else {
              throw err;
            }
          }
        }
        function justTextHighlightResult(code) {
          const result = {
            relevance: 0,
            emitter: new options.__emitter(options),
            value: escape$1(code),
            illegal: false,
            top: PLAINTEXT_LANGUAGE
          };
          result.emitter.addText(code);
          return result;
        }
        function highlightAuto(code, languageSubset) {
          languageSubset = languageSubset || options.languages || Object.keys(languages);
          const plaintext = justTextHighlightResult(code);
          const results = languageSubset.filter(getLanguage).filter(autoDetection).map(
            (name2) => _highlight(name2, code, false)
          );
          results.unshift(plaintext);
          const sorted = results.sort((a, b) => {
            if (a.relevance !== b.relevance)
              return b.relevance - a.relevance;
            if (a.language && b.language) {
              if (getLanguage(a.language).supersetOf === b.language) {
                return 1;
              } else if (getLanguage(b.language).supersetOf === a.language) {
                return -1;
              }
            }
            return 0;
          });
          const [best, secondBest] = sorted;
          const result = best;
          result.second_best = secondBest;
          return result;
        }
        function fixMarkup(html) {
          if (!(options.tabReplace || options.useBR)) {
            return html;
          }
          return html.replace(fixMarkupRe, (match) => {
            if (match === "\n") {
              return options.useBR ? "<br>" : match;
            } else if (options.tabReplace) {
              return match.replace(/\t/g, options.tabReplace);
            }
            return match;
          });
        }
        function updateClassName(element, currentLang, resultLang) {
          const language = currentLang ? aliases[currentLang] : resultLang;
          element.classList.add("hljs");
          if (language)
            element.classList.add(language);
        }
        const brPlugin = {
          "before:highlightElement": ({ el }) => {
            if (options.useBR) {
              el.innerHTML = el.innerHTML.replace(/\n/g, "").replace(/<br[ /]*>/g, "\n");
            }
          },
          "after:highlightElement": ({ result }) => {
            if (options.useBR) {
              result.value = result.value.replace(/\n/g, "<br>");
            }
          }
        };
        const TAB_REPLACE_RE = /^(<[^>]+>|\t)+/gm;
        const tabReplacePlugin = {
          "after:highlightElement": ({ result }) => {
            if (options.tabReplace) {
              result.value = result.value.replace(
                TAB_REPLACE_RE,
                (m) => m.replace(/\t/g, options.tabReplace)
              );
            }
          }
        };
        function highlightElement(element) {
          let node = null;
          const language = blockLanguage(element);
          if (shouldNotHighlight(language))
            return;
          fire(
            "before:highlightElement",
            { el: element, language }
          );
          node = element;
          const text = node.textContent;
          const result = language ? highlight2(text, { language, ignoreIllegals: true }) : highlightAuto(text);
          fire("after:highlightElement", { el: element, result, text });
          element.innerHTML = result.value;
          updateClassName(element, language, result.language);
          element.result = {
            language: result.language,
            re: result.relevance,
            relavance: result.relevance
          };
          if (result.second_best) {
            element.second_best = {
              language: result.second_best.language,
              re: result.second_best.relevance,
              relavance: result.second_best.relevance
            };
          }
        }
        function configure(userOptions) {
          if (userOptions.useBR) {
            deprecated("10.3.0", "'useBR' will be removed entirely in v11.0");
            deprecated("10.3.0", "Please see https://github.com/highlightjs/highlight.js/issues/2559");
          }
          options = inherit$1(options, userOptions);
        }
        const initHighlighting = () => {
          if (initHighlighting.called)
            return;
          initHighlighting.called = true;
          deprecated("10.6.0", "initHighlighting() is deprecated.  Use highlightAll() instead.");
          const blocks = document.querySelectorAll("pre code");
          blocks.forEach(highlightElement);
        };
        function initHighlightingOnLoad() {
          deprecated("10.6.0", "initHighlightingOnLoad() is deprecated.  Use highlightAll() instead.");
          wantsHighlight = true;
        }
        let wantsHighlight = false;
        function highlightAll() {
          if (document.readyState === "loading") {
            wantsHighlight = true;
            return;
          }
          const blocks = document.querySelectorAll("pre code");
          blocks.forEach(highlightElement);
        }
        function boot() {
          if (wantsHighlight)
            highlightAll();
        }
        if (typeof window !== "undefined" && window.addEventListener) {
          window.addEventListener("DOMContentLoaded", boot, false);
        }
        function registerLanguage(languageName, languageDefinition) {
          let lang = null;
          try {
            lang = languageDefinition(hljs2);
          } catch (error$1) {
            error("Language definition for '{}' could not be registered.".replace("{}", languageName));
            if (!SAFE_MODE) {
              throw error$1;
            } else {
              error(error$1);
            }
            lang = PLAINTEXT_LANGUAGE;
          }
          if (!lang.name)
            lang.name = languageName;
          languages[languageName] = lang;
          lang.rawDefinition = languageDefinition.bind(null, hljs2);
          if (lang.aliases) {
            registerAliases(lang.aliases, { languageName });
          }
        }
        function unregisterLanguage(languageName) {
          delete languages[languageName];
          for (const alias of Object.keys(aliases)) {
            if (aliases[alias] === languageName) {
              delete aliases[alias];
            }
          }
        }
        function listLanguages() {
          return Object.keys(languages);
        }
        function requireLanguage(name2) {
          deprecated("10.4.0", "requireLanguage will be removed entirely in v11.");
          deprecated("10.4.0", "Please see https://github.com/highlightjs/highlight.js/pull/2844");
          const lang = getLanguage(name2);
          if (lang) {
            return lang;
          }
          const err = new Error("The '{}' language is required, but not loaded.".replace("{}", name2));
          throw err;
        }
        function getLanguage(name2) {
          name2 = (name2 || "").toLowerCase();
          return languages[name2] || languages[aliases[name2]];
        }
        function registerAliases(aliasList, { languageName }) {
          if (typeof aliasList === "string") {
            aliasList = [aliasList];
          }
          aliasList.forEach((alias) => {
            aliases[alias.toLowerCase()] = languageName;
          });
        }
        function autoDetection(name2) {
          const lang = getLanguage(name2);
          return lang && !lang.disableAutodetect;
        }
        function upgradePluginAPI(plugin) {
          if (plugin["before:highlightBlock"] && !plugin["before:highlightElement"]) {
            plugin["before:highlightElement"] = (data) => {
              plugin["before:highlightBlock"](
                Object.assign({ block: data.el }, data)
              );
            };
          }
          if (plugin["after:highlightBlock"] && !plugin["after:highlightElement"]) {
            plugin["after:highlightElement"] = (data) => {
              plugin["after:highlightBlock"](
                Object.assign({ block: data.el }, data)
              );
            };
          }
        }
        function addPlugin(plugin) {
          upgradePluginAPI(plugin);
          plugins.push(plugin);
        }
        function fire(event, args) {
          const cb = event;
          plugins.forEach(function(plugin) {
            if (plugin[cb]) {
              plugin[cb](args);
            }
          });
        }
        function deprecateFixMarkup(arg) {
          deprecated("10.2.0", "fixMarkup will be removed entirely in v11.0");
          deprecated("10.2.0", "Please see https://github.com/highlightjs/highlight.js/issues/2534");
          return fixMarkup(arg);
        }
        function deprecateHighlightBlock(el) {
          deprecated("10.7.0", "highlightBlock will be removed entirely in v12.0");
          deprecated("10.7.0", "Please use highlightElement now.");
          return highlightElement(el);
        }
        Object.assign(hljs2, {
          highlight: highlight2,
          highlightAuto,
          highlightAll,
          fixMarkup: deprecateFixMarkup,
          highlightElement,
          highlightBlock: deprecateHighlightBlock,
          configure,
          initHighlighting,
          initHighlightingOnLoad,
          registerLanguage,
          unregisterLanguage,
          listLanguages,
          getLanguage,
          registerAliases,
          requireLanguage,
          autoDetection,
          inherit: inherit$1,
          addPlugin,
          vuePlugin: BuildVuePlugin(hljs2).VuePlugin
        });
        hljs2.debugMode = function() {
          SAFE_MODE = false;
        };
        hljs2.safeMode = function() {
          SAFE_MODE = true;
        };
        hljs2.versionString = version;
        for (const key in MODES) {
          if (typeof MODES[key] === "object") {
            deepFreezeEs6(MODES[key]);
          }
        }
        Object.assign(hljs2, MODES);
        hljs2.addPlugin(brPlugin);
        hljs2.addPlugin(mergeHTMLPlugin);
        hljs2.addPlugin(tabReplacePlugin);
        return hljs2;
      };
      var highlight = HLJS({});
      module.exports = highlight;
    }
  });

  // node_modules/highlight.js/lib/languages/javascript.js
  var require_javascript = __commonJS({
    "node_modules/highlight.js/lib/languages/javascript.js"(exports, module) {
      var IDENT_RE = "[A-Za-z$_][0-9A-Za-z$_]*";
      var KEYWORDS = [
        "as",
        "in",
        "of",
        "if",
        "for",
        "while",
        "finally",
        "var",
        "new",
        "function",
        "do",
        "return",
        "void",
        "else",
        "break",
        "catch",
        "instanceof",
        "with",
        "throw",
        "case",
        "default",
        "try",
        "switch",
        "continue",
        "typeof",
        "delete",
        "let",
        "yield",
        "const",
        "class",
        "debugger",
        "async",
        "await",
        "static",
        "import",
        "from",
        "export",
        "extends"
      ];
      var LITERALS = [
        "true",
        "false",
        "null",
        "undefined",
        "NaN",
        "Infinity"
      ];
      var TYPES = [
        "Intl",
        "DataView",
        "Number",
        "Math",
        "Date",
        "String",
        "RegExp",
        "Object",
        "Function",
        "Boolean",
        "Error",
        "Symbol",
        "Set",
        "Map",
        "WeakSet",
        "WeakMap",
        "Proxy",
        "Reflect",
        "JSON",
        "Promise",
        "Float64Array",
        "Int16Array",
        "Int32Array",
        "Int8Array",
        "Uint16Array",
        "Uint32Array",
        "Float32Array",
        "Array",
        "Uint8Array",
        "Uint8ClampedArray",
        "ArrayBuffer",
        "BigInt64Array",
        "BigUint64Array",
        "BigInt"
      ];
      var ERROR_TYPES = [
        "EvalError",
        "InternalError",
        "RangeError",
        "ReferenceError",
        "SyntaxError",
        "TypeError",
        "URIError"
      ];
      var BUILT_IN_GLOBALS = [
        "setInterval",
        "setTimeout",
        "clearInterval",
        "clearTimeout",
        "require",
        "exports",
        "eval",
        "isFinite",
        "isNaN",
        "parseFloat",
        "parseInt",
        "decodeURI",
        "decodeURIComponent",
        "encodeURI",
        "encodeURIComponent",
        "escape",
        "unescape"
      ];
      var BUILT_IN_VARIABLES = [
        "arguments",
        "this",
        "super",
        "console",
        "window",
        "document",
        "localStorage",
        "module",
        "global"
      ];
      var BUILT_INS = [].concat(
        BUILT_IN_GLOBALS,
        BUILT_IN_VARIABLES,
        TYPES,
        ERROR_TYPES
      );
      function source(re2) {
        if (!re2)
          return null;
        if (typeof re2 === "string")
          return re2;
        return re2.source;
      }
      function lookahead(re2) {
        return concat("(?=", re2, ")");
      }
      function concat(...args) {
        const joined = args.map((x) => source(x)).join("");
        return joined;
      }
      function javascript(hljs2) {
        const hasClosingTag = (match, { after }) => {
          const tag = "</" + match[0].slice(1);
          const pos = match.input.indexOf(tag, after);
          return pos !== -1;
        };
        const IDENT_RE$1 = IDENT_RE;
        const FRAGMENT = {
          begin: "<>",
          end: "</>"
        };
        const XML_TAG = {
          begin: /<[A-Za-z0-9\\._:-]+/,
          end: /\/[A-Za-z0-9\\._:-]+>|\/>/,
          isTrulyOpeningTag: (match, response) => {
            const afterMatchIndex = match[0].length + match.index;
            const nextChar = match.input[afterMatchIndex];
            if (nextChar === "<") {
              response.ignoreMatch();
              return;
            }
            if (nextChar === ">") {
              if (!hasClosingTag(match, { after: afterMatchIndex })) {
                response.ignoreMatch();
              }
            }
          }
        };
        const KEYWORDS$1 = {
          $pattern: IDENT_RE,
          keyword: KEYWORDS,
          literal: LITERALS,
          built_in: BUILT_INS
        };
        const decimalDigits = "[0-9](_?[0-9])*";
        const frac = `\\.(${decimalDigits})`;
        const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;
        const NUMBER = {
          className: "number",
          variants: [
            { begin: `(\\b(${decimalInteger})((${frac})|\\.)?|(${frac}))[eE][+-]?(${decimalDigits})\\b` },
            { begin: `\\b(${decimalInteger})\\b((${frac})\\b|\\.)?|(${frac})\\b` },
            { begin: `\\b(0|[1-9](_?[0-9])*)n\\b` },
            { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" },
            { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" },
            { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" },
            { begin: "\\b0[0-7]+n?\\b" }
          ],
          relevance: 0
        };
        const SUBST = {
          className: "subst",
          begin: "\\$\\{",
          end: "\\}",
          keywords: KEYWORDS$1,
          contains: []
        };
        const HTML_TEMPLATE = {
          begin: "html`",
          end: "",
          starts: {
            end: "`",
            returnEnd: false,
            contains: [
              hljs2.BACKSLASH_ESCAPE,
              SUBST
            ],
            subLanguage: "xml"
          }
        };
        const CSS_TEMPLATE = {
          begin: "css`",
          end: "",
          starts: {
            end: "`",
            returnEnd: false,
            contains: [
              hljs2.BACKSLASH_ESCAPE,
              SUBST
            ],
            subLanguage: "css"
          }
        };
        const TEMPLATE_STRING = {
          className: "string",
          begin: "`",
          end: "`",
          contains: [
            hljs2.BACKSLASH_ESCAPE,
            SUBST
          ]
        };
        const JSDOC_COMMENT = hljs2.COMMENT(
          /\/\*\*(?!\/)/,
          "\\*/",
          {
            relevance: 0,
            contains: [
              {
                className: "doctag",
                begin: "@[A-Za-z]+",
                contains: [
                  {
                    className: "type",
                    begin: "\\{",
                    end: "\\}",
                    relevance: 0
                  },
                  {
                    className: "variable",
                    begin: IDENT_RE$1 + "(?=\\s*(-)|$)",
                    endsParent: true,
                    relevance: 0
                  },
                  {
                    begin: /(?=[^\n])\s/,
                    relevance: 0
                  }
                ]
              }
            ]
          }
        );
        const COMMENT = {
          className: "comment",
          variants: [
            JSDOC_COMMENT,
            hljs2.C_BLOCK_COMMENT_MODE,
            hljs2.C_LINE_COMMENT_MODE
          ]
        };
        const SUBST_INTERNALS = [
          hljs2.APOS_STRING_MODE,
          hljs2.QUOTE_STRING_MODE,
          HTML_TEMPLATE,
          CSS_TEMPLATE,
          TEMPLATE_STRING,
          NUMBER,
          hljs2.REGEXP_MODE
        ];
        SUBST.contains = SUBST_INTERNALS.concat({
          begin: /\{/,
          end: /\}/,
          keywords: KEYWORDS$1,
          contains: [
            "self"
          ].concat(SUBST_INTERNALS)
        });
        const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);
        const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([
          {
            begin: /\(/,
            end: /\)/,
            keywords: KEYWORDS$1,
            contains: ["self"].concat(SUBST_AND_COMMENTS)
          }
        ]);
        const PARAMS = {
          className: "params",
          begin: /\(/,
          end: /\)/,
          excludeBegin: true,
          excludeEnd: true,
          keywords: KEYWORDS$1,
          contains: PARAMS_CONTAINS
        };
        return {
          name: "Javascript",
          aliases: ["js", "jsx", "mjs", "cjs"],
          keywords: KEYWORDS$1,
          exports: { PARAMS_CONTAINS },
          illegal: /#(?![$_A-z])/,
          contains: [
            hljs2.SHEBANG({
              label: "shebang",
              binary: "node",
              relevance: 5
            }),
            {
              label: "use_strict",
              className: "meta",
              relevance: 10,
              begin: /^\s*['"]use (strict|asm)['"]/
            },
            hljs2.APOS_STRING_MODE,
            hljs2.QUOTE_STRING_MODE,
            HTML_TEMPLATE,
            CSS_TEMPLATE,
            TEMPLATE_STRING,
            COMMENT,
            NUMBER,
            {
              begin: concat(
                /[{,\n]\s*/,
                lookahead(concat(
                  /(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,
                  IDENT_RE$1 + "\\s*:"
                ))
              ),
              relevance: 0,
              contains: [
                {
                  className: "attr",
                  begin: IDENT_RE$1 + lookahead("\\s*:"),
                  relevance: 0
                }
              ]
            },
            {
              begin: "(" + hljs2.RE_STARTERS_RE + "|\\b(case|return|throw)\\b)\\s*",
              keywords: "return throw case",
              contains: [
                COMMENT,
                hljs2.REGEXP_MODE,
                {
                  className: "function",
                  begin: "(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|" + hljs2.UNDERSCORE_IDENT_RE + ")\\s*=>",
                  returnBegin: true,
                  end: "\\s*=>",
                  contains: [
                    {
                      className: "params",
                      variants: [
                        {
                          begin: hljs2.UNDERSCORE_IDENT_RE,
                          relevance: 0
                        },
                        {
                          className: null,
                          begin: /\(\s*\)/,
                          skip: true
                        },
                        {
                          begin: /\(/,
                          end: /\)/,
                          excludeBegin: true,
                          excludeEnd: true,
                          keywords: KEYWORDS$1,
                          contains: PARAMS_CONTAINS
                        }
                      ]
                    }
                  ]
                },
                {
                  begin: /,/,
                  relevance: 0
                },
                {
                  className: "",
                  begin: /\s/,
                  end: /\s*/,
                  skip: true
                },
                {
                  variants: [
                    { begin: FRAGMENT.begin, end: FRAGMENT.end },
                    {
                      begin: XML_TAG.begin,
                      "on:begin": XML_TAG.isTrulyOpeningTag,
                      end: XML_TAG.end
                    }
                  ],
                  subLanguage: "xml",
                  contains: [
                    {
                      begin: XML_TAG.begin,
                      end: XML_TAG.end,
                      skip: true,
                      contains: ["self"]
                    }
                  ]
                }
              ],
              relevance: 0
            },
            {
              className: "function",
              beginKeywords: "function",
              end: /[{;]/,
              excludeEnd: true,
              keywords: KEYWORDS$1,
              contains: [
                "self",
                hljs2.inherit(hljs2.TITLE_MODE, { begin: IDENT_RE$1 }),
                PARAMS
              ],
              illegal: /%/
            },
            {
              beginKeywords: "while if switch catch for"
            },
            {
              className: "function",
              begin: hljs2.UNDERSCORE_IDENT_RE + "\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
              returnBegin: true,
              contains: [
                PARAMS,
                hljs2.inherit(hljs2.TITLE_MODE, { begin: IDENT_RE$1 })
              ]
            },
            {
              variants: [
                { begin: "\\." + IDENT_RE$1 },
                { begin: "\\$" + IDENT_RE$1 }
              ],
              relevance: 0
            },
            {
              className: "class",
              beginKeywords: "class",
              end: /[{;=]/,
              excludeEnd: true,
              illegal: /[:"[\]]/,
              contains: [
                { beginKeywords: "extends" },
                hljs2.UNDERSCORE_TITLE_MODE
              ]
            },
            {
              begin: /\b(?=constructor)/,
              end: /[{;]/,
              excludeEnd: true,
              contains: [
                hljs2.inherit(hljs2.TITLE_MODE, { begin: IDENT_RE$1 }),
                "self",
                PARAMS
              ]
            },
            {
              begin: "(get|set)\\s+(?=" + IDENT_RE$1 + "\\()",
              end: /\{/,
              keywords: "get set",
              contains: [
                hljs2.inherit(hljs2.TITLE_MODE, { begin: IDENT_RE$1 }),
                { begin: /\(\)/ },
                PARAMS
              ]
            },
            {
              begin: /\$[(.]/
            }
          ]
        };
      }
      module.exports = javascript;
    }
  });

  // node_modules/highlight.js/lib/languages/python.js
  var require_python = __commonJS({
    "node_modules/highlight.js/lib/languages/python.js"(exports, module) {
      function source(re2) {
        if (!re2)
          return null;
        if (typeof re2 === "string")
          return re2;
        return re2.source;
      }
      function lookahead(re2) {
        return concat("(?=", re2, ")");
      }
      function concat(...args) {
        const joined = args.map((x) => source(x)).join("");
        return joined;
      }
      function python(hljs2) {
        const RESERVED_WORDS = [
          "and",
          "as",
          "assert",
          "async",
          "await",
          "break",
          "class",
          "continue",
          "def",
          "del",
          "elif",
          "else",
          "except",
          "finally",
          "for",
          "from",
          "global",
          "if",
          "import",
          "in",
          "is",
          "lambda",
          "nonlocal|10",
          "not",
          "or",
          "pass",
          "raise",
          "return",
          "try",
          "while",
          "with",
          "yield"
        ];
        const BUILT_INS = [
          "__import__",
          "abs",
          "all",
          "any",
          "ascii",
          "bin",
          "bool",
          "breakpoint",
          "bytearray",
          "bytes",
          "callable",
          "chr",
          "classmethod",
          "compile",
          "complex",
          "delattr",
          "dict",
          "dir",
          "divmod",
          "enumerate",
          "eval",
          "exec",
          "filter",
          "float",
          "format",
          "frozenset",
          "getattr",
          "globals",
          "hasattr",
          "hash",
          "help",
          "hex",
          "id",
          "input",
          "int",
          "isinstance",
          "issubclass",
          "iter",
          "len",
          "list",
          "locals",
          "map",
          "max",
          "memoryview",
          "min",
          "next",
          "object",
          "oct",
          "open",
          "ord",
          "pow",
          "print",
          "property",
          "range",
          "repr",
          "reversed",
          "round",
          "set",
          "setattr",
          "slice",
          "sorted",
          "staticmethod",
          "str",
          "sum",
          "super",
          "tuple",
          "type",
          "vars",
          "zip"
        ];
        const LITERALS = [
          "__debug__",
          "Ellipsis",
          "False",
          "None",
          "NotImplemented",
          "True"
        ];
        const TYPES = [
          "Any",
          "Callable",
          "Coroutine",
          "Dict",
          "List",
          "Literal",
          "Generic",
          "Optional",
          "Sequence",
          "Set",
          "Tuple",
          "Type",
          "Union"
        ];
        const KEYWORDS = {
          $pattern: /[A-Za-z]\w+|__\w+__/,
          keyword: RESERVED_WORDS,
          built_in: BUILT_INS,
          literal: LITERALS,
          type: TYPES
        };
        const PROMPT = {
          className: "meta",
          begin: /^(>>>|\.\.\.) /
        };
        const SUBST = {
          className: "subst",
          begin: /\{/,
          end: /\}/,
          keywords: KEYWORDS,
          illegal: /#/
        };
        const LITERAL_BRACKET = {
          begin: /\{\{/,
          relevance: 0
        };
        const STRING = {
          className: "string",
          contains: [hljs2.BACKSLASH_ESCAPE],
          variants: [
            {
              begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,
              end: /'''/,
              contains: [
                hljs2.BACKSLASH_ESCAPE,
                PROMPT
              ],
              relevance: 10
            },
            {
              begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,
              end: /"""/,
              contains: [
                hljs2.BACKSLASH_ESCAPE,
                PROMPT
              ],
              relevance: 10
            },
            {
              begin: /([fF][rR]|[rR][fF]|[fF])'''/,
              end: /'''/,
              contains: [
                hljs2.BACKSLASH_ESCAPE,
                PROMPT,
                LITERAL_BRACKET,
                SUBST
              ]
            },
            {
              begin: /([fF][rR]|[rR][fF]|[fF])"""/,
              end: /"""/,
              contains: [
                hljs2.BACKSLASH_ESCAPE,
                PROMPT,
                LITERAL_BRACKET,
                SUBST
              ]
            },
            {
              begin: /([uU]|[rR])'/,
              end: /'/,
              relevance: 10
            },
            {
              begin: /([uU]|[rR])"/,
              end: /"/,
              relevance: 10
            },
            {
              begin: /([bB]|[bB][rR]|[rR][bB])'/,
              end: /'/
            },
            {
              begin: /([bB]|[bB][rR]|[rR][bB])"/,
              end: /"/
            },
            {
              begin: /([fF][rR]|[rR][fF]|[fF])'/,
              end: /'/,
              contains: [
                hljs2.BACKSLASH_ESCAPE,
                LITERAL_BRACKET,
                SUBST
              ]
            },
            {
              begin: /([fF][rR]|[rR][fF]|[fF])"/,
              end: /"/,
              contains: [
                hljs2.BACKSLASH_ESCAPE,
                LITERAL_BRACKET,
                SUBST
              ]
            },
            hljs2.APOS_STRING_MODE,
            hljs2.QUOTE_STRING_MODE
          ]
        };
        const digitpart = "[0-9](_?[0-9])*";
        const pointfloat = `(\\b(${digitpart}))?\\.(${digitpart})|\\b(${digitpart})\\.`;
        const NUMBER = {
          className: "number",
          relevance: 0,
          variants: [
            {
              begin: `(\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?\\b`
            },
            {
              begin: `(${pointfloat})[jJ]?`
            },
            {
              begin: "\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"
            },
            {
              begin: "\\b0[bB](_?[01])+[lL]?\\b"
            },
            {
              begin: "\\b0[oO](_?[0-7])+[lL]?\\b"
            },
            {
              begin: "\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"
            },
            {
              begin: `\\b(${digitpart})[jJ]\\b`
            }
          ]
        };
        const COMMENT_TYPE = {
          className: "comment",
          begin: lookahead(/# type:/),
          end: /$/,
          keywords: KEYWORDS,
          contains: [
            {
              begin: /# type:/
            },
            {
              begin: /#/,
              end: /\b\B/,
              endsWithParent: true
            }
          ]
        };
        const PARAMS = {
          className: "params",
          variants: [
            {
              className: "",
              begin: /\(\s*\)/,
              skip: true
            },
            {
              begin: /\(/,
              end: /\)/,
              excludeBegin: true,
              excludeEnd: true,
              keywords: KEYWORDS,
              contains: [
                "self",
                PROMPT,
                NUMBER,
                STRING,
                hljs2.HASH_COMMENT_MODE
              ]
            }
          ]
        };
        SUBST.contains = [
          STRING,
          NUMBER,
          PROMPT
        ];
        return {
          name: "Python",
          aliases: [
            "py",
            "gyp",
            "ipython"
          ],
          keywords: KEYWORDS,
          illegal: /(<\/|->|\?)|=>/,
          contains: [
            PROMPT,
            NUMBER,
            {
              begin: /\bself\b/
            },
            {
              beginKeywords: "if",
              relevance: 0
            },
            STRING,
            COMMENT_TYPE,
            hljs2.HASH_COMMENT_MODE,
            {
              variants: [
                {
                  className: "function",
                  beginKeywords: "def"
                },
                {
                  className: "class",
                  beginKeywords: "class"
                }
              ],
              end: /:/,
              illegal: /[${=;\n,]/,
              contains: [
                hljs2.UNDERSCORE_TITLE_MODE,
                PARAMS,
                {
                  begin: /->/,
                  endsWithParent: true,
                  keywords: KEYWORDS
                }
              ]
            },
            {
              className: "meta",
              begin: /^[\t ]*@/,
              end: /(?=#)|$/,
              contains: [
                NUMBER,
                PARAMS,
                STRING
              ]
            }
          ]
        };
      }
      module.exports = python;
    }
  });

  // node_modules/highlight.js/lib/languages/xml.js
  var require_xml = __commonJS({
    "node_modules/highlight.js/lib/languages/xml.js"(exports, module) {
      function source(re2) {
        if (!re2)
          return null;
        if (typeof re2 === "string")
          return re2;
        return re2.source;
      }
      function lookahead(re2) {
        return concat("(?=", re2, ")");
      }
      function optional(re2) {
        return concat("(", re2, ")?");
      }
      function concat(...args) {
        const joined = args.map((x) => source(x)).join("");
        return joined;
      }
      function either(...args) {
        const joined = "(" + args.map((x) => source(x)).join("|") + ")";
        return joined;
      }
      function xml(hljs2) {
        const TAG_NAME_RE = concat(/[A-Z_]/, optional(/[A-Z0-9_.-]*:/), /[A-Z0-9_.-]*/);
        const XML_IDENT_RE = /[A-Za-z0-9._:-]+/;
        const XML_ENTITIES = {
          className: "symbol",
          begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/
        };
        const XML_META_KEYWORDS = {
          begin: /\s/,
          contains: [
            {
              className: "meta-keyword",
              begin: /#?[a-z_][a-z1-9_-]+/,
              illegal: /\n/
            }
          ]
        };
        const XML_META_PAR_KEYWORDS = hljs2.inherit(XML_META_KEYWORDS, {
          begin: /\(/,
          end: /\)/
        });
        const APOS_META_STRING_MODE = hljs2.inherit(hljs2.APOS_STRING_MODE, {
          className: "meta-string"
        });
        const QUOTE_META_STRING_MODE = hljs2.inherit(hljs2.QUOTE_STRING_MODE, {
          className: "meta-string"
        });
        const TAG_INTERNALS = {
          endsWithParent: true,
          illegal: /</,
          relevance: 0,
          contains: [
            {
              className: "attr",
              begin: XML_IDENT_RE,
              relevance: 0
            },
            {
              begin: /=\s*/,
              relevance: 0,
              contains: [
                {
                  className: "string",
                  endsParent: true,
                  variants: [
                    {
                      begin: /"/,
                      end: /"/,
                      contains: [XML_ENTITIES]
                    },
                    {
                      begin: /'/,
                      end: /'/,
                      contains: [XML_ENTITIES]
                    },
                    {
                      begin: /[^\s"'=<>`]+/
                    }
                  ]
                }
              ]
            }
          ]
        };
        return {
          name: "HTML, XML",
          aliases: [
            "html",
            "xhtml",
            "rss",
            "atom",
            "xjb",
            "xsd",
            "xsl",
            "plist",
            "wsf",
            "svg"
          ],
          case_insensitive: true,
          contains: [
            {
              className: "meta",
              begin: /<![a-z]/,
              end: />/,
              relevance: 10,
              contains: [
                XML_META_KEYWORDS,
                QUOTE_META_STRING_MODE,
                APOS_META_STRING_MODE,
                XML_META_PAR_KEYWORDS,
                {
                  begin: /\[/,
                  end: /\]/,
                  contains: [
                    {
                      className: "meta",
                      begin: /<![a-z]/,
                      end: />/,
                      contains: [
                        XML_META_KEYWORDS,
                        XML_META_PAR_KEYWORDS,
                        QUOTE_META_STRING_MODE,
                        APOS_META_STRING_MODE
                      ]
                    }
                  ]
                }
              ]
            },
            hljs2.COMMENT(
              /<!--/,
              /-->/,
              {
                relevance: 10
              }
            ),
            {
              begin: /<!\[CDATA\[/,
              end: /\]\]>/,
              relevance: 10
            },
            XML_ENTITIES,
            {
              className: "meta",
              begin: /<\?xml/,
              end: /\?>/,
              relevance: 10
            },
            {
              className: "tag",
              begin: /<style(?=\s|>)/,
              end: />/,
              keywords: {
                name: "style"
              },
              contains: [TAG_INTERNALS],
              starts: {
                end: /<\/style>/,
                returnEnd: true,
                subLanguage: [
                  "css",
                  "xml"
                ]
              }
            },
            {
              className: "tag",
              begin: /<script(?=\s|>)/,
              end: />/,
              keywords: {
                name: "script"
              },
              contains: [TAG_INTERNALS],
              starts: {
                end: /<\/script>/,
                returnEnd: true,
                subLanguage: [
                  "javascript",
                  "handlebars",
                  "xml"
                ]
              }
            },
            {
              className: "tag",
              begin: /<>|<\/>/
            },
            {
              className: "tag",
              begin: concat(
                /</,
                lookahead(concat(
                  TAG_NAME_RE,
                  either(/\/>/, />/, /\s/)
                ))
              ),
              end: /\/?>/,
              contains: [
                {
                  className: "name",
                  begin: TAG_NAME_RE,
                  relevance: 0,
                  starts: TAG_INTERNALS
                }
              ]
            },
            {
              className: "tag",
              begin: concat(
                /<\//,
                lookahead(concat(
                  TAG_NAME_RE,
                  />/
                ))
              ),
              contains: [
                {
                  className: "name",
                  begin: TAG_NAME_RE,
                  relevance: 0
                },
                {
                  begin: />/,
                  relevance: 0,
                  endsParent: true
                }
              ]
            }
          ]
        };
      }
      module.exports = xml;
    }
  });

  // node_modules/highlight.js/lib/languages/django.js
  var require_django = __commonJS({
    "node_modules/highlight.js/lib/languages/django.js"(exports, module) {
      function django(hljs2) {
        const FILTER = {
          begin: /\|[A-Za-z]+:?/,
          keywords: {
            name: "truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"
          },
          contains: [
            hljs2.QUOTE_STRING_MODE,
            hljs2.APOS_STRING_MODE
          ]
        };
        return {
          name: "Django",
          aliases: ["jinja"],
          case_insensitive: true,
          subLanguage: "xml",
          contains: [
            hljs2.COMMENT(/\{%\s*comment\s*%\}/, /\{%\s*endcomment\s*%\}/),
            hljs2.COMMENT(/\{#/, /#\}/),
            {
              className: "template-tag",
              begin: /\{%/,
              end: /%\}/,
              contains: [{
                className: "name",
                begin: /\w+/,
                keywords: {
                  name: "comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"
                },
                starts: {
                  endsWithParent: true,
                  keywords: "in by as",
                  contains: [FILTER],
                  relevance: 0
                }
              }]
            },
            {
              className: "template-variable",
              begin: /\{\{/,
              end: /\}\}/,
              contains: [FILTER]
            }
          ]
        };
      }
      module.exports = django;
    }
  });

  // node_modules/highlight.js/lib/languages/bash.js
  var require_bash = __commonJS({
    "node_modules/highlight.js/lib/languages/bash.js"(exports, module) {
      function source(re2) {
        if (!re2)
          return null;
        if (typeof re2 === "string")
          return re2;
        return re2.source;
      }
      function concat(...args) {
        const joined = args.map((x) => source(x)).join("");
        return joined;
      }
      function bash(hljs2) {
        const VAR = {};
        const BRACED_VAR = {
          begin: /\$\{/,
          end: /\}/,
          contains: [
            "self",
            {
              begin: /:-/,
              contains: [VAR]
            }
          ]
        };
        Object.assign(VAR, {
          className: "variable",
          variants: [
            { begin: concat(
              /\$[\w\d#@][\w\d_]*/,
              `(?![\\w\\d])(?![$])`
            ) },
            BRACED_VAR
          ]
        });
        const SUBST = {
          className: "subst",
          begin: /\$\(/,
          end: /\)/,
          contains: [hljs2.BACKSLASH_ESCAPE]
        };
        const HERE_DOC = {
          begin: /<<-?\s*(?=\w+)/,
          starts: {
            contains: [
              hljs2.END_SAME_AS_BEGIN({
                begin: /(\w+)/,
                end: /(\w+)/,
                className: "string"
              })
            ]
          }
        };
        const QUOTE_STRING = {
          className: "string",
          begin: /"/,
          end: /"/,
          contains: [
            hljs2.BACKSLASH_ESCAPE,
            VAR,
            SUBST
          ]
        };
        SUBST.contains.push(QUOTE_STRING);
        const ESCAPED_QUOTE = {
          className: "",
          begin: /\\"/
        };
        const APOS_STRING = {
          className: "string",
          begin: /'/,
          end: /'/
        };
        const ARITHMETIC = {
          begin: /\$\(\(/,
          end: /\)\)/,
          contains: [
            { begin: /\d+#[0-9a-f]+/, className: "number" },
            hljs2.NUMBER_MODE,
            VAR
          ]
        };
        const SH_LIKE_SHELLS = [
          "fish",
          "bash",
          "zsh",
          "sh",
          "csh",
          "ksh",
          "tcsh",
          "dash",
          "scsh"
        ];
        const KNOWN_SHEBANG = hljs2.SHEBANG({
          binary: `(${SH_LIKE_SHELLS.join("|")})`,
          relevance: 10
        });
        const FUNCTION = {
          className: "function",
          begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
          returnBegin: true,
          contains: [hljs2.inherit(hljs2.TITLE_MODE, { begin: /\w[\w\d_]*/ })],
          relevance: 0
        };
        return {
          name: "Bash",
          aliases: ["sh", "zsh"],
          keywords: {
            $pattern: /\b[a-z._-]+\b/,
            keyword: "if then else elif fi for while in do done case esac function",
            literal: "true false",
            built_in: "break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"
          },
          contains: [
            KNOWN_SHEBANG,
            hljs2.SHEBANG(),
            FUNCTION,
            ARITHMETIC,
            hljs2.HASH_COMMENT_MODE,
            HERE_DOC,
            QUOTE_STRING,
            ESCAPED_QUOTE,
            APOS_STRING,
            VAR
          ]
        };
      }
      module.exports = bash;
    }
  });

  // node_modules/highlight.js/lib/languages/css.js
  var require_css = __commonJS({
    "node_modules/highlight.js/lib/languages/css.js"(exports, module) {
      var MODES = (hljs2) => {
        return {
          IMPORTANT: {
            className: "meta",
            begin: "!important"
          },
          HEXCOLOR: {
            className: "number",
            begin: "#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"
          },
          ATTRIBUTE_SELECTOR_MODE: {
            className: "selector-attr",
            begin: /\[/,
            end: /\]/,
            illegal: "$",
            contains: [
              hljs2.APOS_STRING_MODE,
              hljs2.QUOTE_STRING_MODE
            ]
          }
        };
      };
      var TAGS = [
        "a",
        "abbr",
        "address",
        "article",
        "aside",
        "audio",
        "b",
        "blockquote",
        "body",
        "button",
        "canvas",
        "caption",
        "cite",
        "code",
        "dd",
        "del",
        "details",
        "dfn",
        "div",
        "dl",
        "dt",
        "em",
        "fieldset",
        "figcaption",
        "figure",
        "footer",
        "form",
        "h1",
        "h2",
        "h3",
        "h4",
        "h5",
        "h6",
        "header",
        "hgroup",
        "html",
        "i",
        "iframe",
        "img",
        "input",
        "ins",
        "kbd",
        "label",
        "legend",
        "li",
        "main",
        "mark",
        "menu",
        "nav",
        "object",
        "ol",
        "p",
        "q",
        "quote",
        "samp",
        "section",
        "span",
        "strong",
        "summary",
        "sup",
        "table",
        "tbody",
        "td",
        "textarea",
        "tfoot",
        "th",
        "thead",
        "time",
        "tr",
        "ul",
        "var",
        "video"
      ];
      var MEDIA_FEATURES = [
        "any-hover",
        "any-pointer",
        "aspect-ratio",
        "color",
        "color-gamut",
        "color-index",
        "device-aspect-ratio",
        "device-height",
        "device-width",
        "display-mode",
        "forced-colors",
        "grid",
        "height",
        "hover",
        "inverted-colors",
        "monochrome",
        "orientation",
        "overflow-block",
        "overflow-inline",
        "pointer",
        "prefers-color-scheme",
        "prefers-contrast",
        "prefers-reduced-motion",
        "prefers-reduced-transparency",
        "resolution",
        "scan",
        "scripting",
        "update",
        "width",
        "min-width",
        "max-width",
        "min-height",
        "max-height"
      ];
      var PSEUDO_CLASSES = [
        "active",
        "any-link",
        "blank",
        "checked",
        "current",
        "default",
        "defined",
        "dir",
        "disabled",
        "drop",
        "empty",
        "enabled",
        "first",
        "first-child",
        "first-of-type",
        "fullscreen",
        "future",
        "focus",
        "focus-visible",
        "focus-within",
        "has",
        "host",
        "host-context",
        "hover",
        "indeterminate",
        "in-range",
        "invalid",
        "is",
        "lang",
        "last-child",
        "last-of-type",
        "left",
        "link",
        "local-link",
        "not",
        "nth-child",
        "nth-col",
        "nth-last-child",
        "nth-last-col",
        "nth-last-of-type",
        "nth-of-type",
        "only-child",
        "only-of-type",
        "optional",
        "out-of-range",
        "past",
        "placeholder-shown",
        "read-only",
        "read-write",
        "required",
        "right",
        "root",
        "scope",
        "target",
        "target-within",
        "user-invalid",
        "valid",
        "visited",
        "where"
      ];
      var PSEUDO_ELEMENTS = [
        "after",
        "backdrop",
        "before",
        "cue",
        "cue-region",
        "first-letter",
        "first-line",
        "grammar-error",
        "marker",
        "part",
        "placeholder",
        "selection",
        "slotted",
        "spelling-error"
      ];
      var ATTRIBUTES = [
        "align-content",
        "align-items",
        "align-self",
        "animation",
        "animation-delay",
        "animation-direction",
        "animation-duration",
        "animation-fill-mode",
        "animation-iteration-count",
        "animation-name",
        "animation-play-state",
        "animation-timing-function",
        "auto",
        "backface-visibility",
        "background",
        "background-attachment",
        "background-clip",
        "background-color",
        "background-image",
        "background-origin",
        "background-position",
        "background-repeat",
        "background-size",
        "border",
        "border-bottom",
        "border-bottom-color",
        "border-bottom-left-radius",
        "border-bottom-right-radius",
        "border-bottom-style",
        "border-bottom-width",
        "border-collapse",
        "border-color",
        "border-image",
        "border-image-outset",
        "border-image-repeat",
        "border-image-slice",
        "border-image-source",
        "border-image-width",
        "border-left",
        "border-left-color",
        "border-left-style",
        "border-left-width",
        "border-radius",
        "border-right",
        "border-right-color",
        "border-right-style",
        "border-right-width",
        "border-spacing",
        "border-style",
        "border-top",
        "border-top-color",
        "border-top-left-radius",
        "border-top-right-radius",
        "border-top-style",
        "border-top-width",
        "border-width",
        "bottom",
        "box-decoration-break",
        "box-shadow",
        "box-sizing",
        "break-after",
        "break-before",
        "break-inside",
        "caption-side",
        "clear",
        "clip",
        "clip-path",
        "color",
        "column-count",
        "column-fill",
        "column-gap",
        "column-rule",
        "column-rule-color",
        "column-rule-style",
        "column-rule-width",
        "column-span",
        "column-width",
        "columns",
        "content",
        "counter-increment",
        "counter-reset",
        "cursor",
        "direction",
        "display",
        "empty-cells",
        "filter",
        "flex",
        "flex-basis",
        "flex-direction",
        "flex-flow",
        "flex-grow",
        "flex-shrink",
        "flex-wrap",
        "float",
        "font",
        "font-display",
        "font-family",
        "font-feature-settings",
        "font-kerning",
        "font-language-override",
        "font-size",
        "font-size-adjust",
        "font-smoothing",
        "font-stretch",
        "font-style",
        "font-variant",
        "font-variant-ligatures",
        "font-variation-settings",
        "font-weight",
        "height",
        "hyphens",
        "icon",
        "image-orientation",
        "image-rendering",
        "image-resolution",
        "ime-mode",
        "inherit",
        "initial",
        "justify-content",
        "left",
        "letter-spacing",
        "line-height",
        "list-style",
        "list-style-image",
        "list-style-position",
        "list-style-type",
        "margin",
        "margin-bottom",
        "margin-left",
        "margin-right",
        "margin-top",
        "marks",
        "mask",
        "max-height",
        "max-width",
        "min-height",
        "min-width",
        "nav-down",
        "nav-index",
        "nav-left",
        "nav-right",
        "nav-up",
        "none",
        "normal",
        "object-fit",
        "object-position",
        "opacity",
        "order",
        "orphans",
        "outline",
        "outline-color",
        "outline-offset",
        "outline-style",
        "outline-width",
        "overflow",
        "overflow-wrap",
        "overflow-x",
        "overflow-y",
        "padding",
        "padding-bottom",
        "padding-left",
        "padding-right",
        "padding-top",
        "page-break-after",
        "page-break-before",
        "page-break-inside",
        "perspective",
        "perspective-origin",
        "pointer-events",
        "position",
        "quotes",
        "resize",
        "right",
        "src",
        "tab-size",
        "table-layout",
        "text-align",
        "text-align-last",
        "text-decoration",
        "text-decoration-color",
        "text-decoration-line",
        "text-decoration-style",
        "text-indent",
        "text-overflow",
        "text-rendering",
        "text-shadow",
        "text-transform",
        "text-underline-position",
        "top",
        "transform",
        "transform-origin",
        "transform-style",
        "transition",
        "transition-delay",
        "transition-duration",
        "transition-property",
        "transition-timing-function",
        "unicode-bidi",
        "vertical-align",
        "visibility",
        "white-space",
        "widows",
        "width",
        "word-break",
        "word-spacing",
        "word-wrap",
        "z-index"
      ].reverse();
      function source(re2) {
        if (!re2)
          return null;
        if (typeof re2 === "string")
          return re2;
        return re2.source;
      }
      function lookahead(re2) {
        return concat("(?=", re2, ")");
      }
      function concat(...args) {
        const joined = args.map((x) => source(x)).join("");
        return joined;
      }
      function css(hljs2) {
        const modes = MODES(hljs2);
        const FUNCTION_DISPATCH = {
          className: "built_in",
          begin: /[\w-]+(?=\()/
        };
        const VENDOR_PREFIX = {
          begin: /-(webkit|moz|ms|o)-(?=[a-z])/
        };
        const AT_MODIFIERS = "and or not only";
        const AT_PROPERTY_RE = /@-?\w[\w]*(-\w+)*/;
        const IDENT_RE = "[a-zA-Z-][a-zA-Z0-9_-]*";
        const STRINGS = [
          hljs2.APOS_STRING_MODE,
          hljs2.QUOTE_STRING_MODE
        ];
        return {
          name: "CSS",
          case_insensitive: true,
          illegal: /[=|'\$]/,
          keywords: {
            keyframePosition: "from to"
          },
          classNameAliases: {
            keyframePosition: "selector-tag"
          },
          contains: [
            hljs2.C_BLOCK_COMMENT_MODE,
            VENDOR_PREFIX,
            hljs2.CSS_NUMBER_MODE,
            {
              className: "selector-id",
              begin: /#[A-Za-z0-9_-]+/,
              relevance: 0
            },
            {
              className: "selector-class",
              begin: "\\." + IDENT_RE,
              relevance: 0
            },
            modes.ATTRIBUTE_SELECTOR_MODE,
            {
              className: "selector-pseudo",
              variants: [
                {
                  begin: ":(" + PSEUDO_CLASSES.join("|") + ")"
                },
                {
                  begin: "::(" + PSEUDO_ELEMENTS.join("|") + ")"
                }
              ]
            },
            {
              className: "attribute",
              begin: "\\b(" + ATTRIBUTES.join("|") + ")\\b"
            },
            {
              begin: ":",
              end: "[;}]",
              contains: [
                modes.HEXCOLOR,
                modes.IMPORTANT,
                hljs2.CSS_NUMBER_MODE,
                ...STRINGS,
                {
                  begin: /(url|data-uri)\(/,
                  end: /\)/,
                  relevance: 0,
                  keywords: {
                    built_in: "url data-uri"
                  },
                  contains: [
                    {
                      className: "string",
                      begin: /[^)]/,
                      endsWithParent: true,
                      excludeEnd: true
                    }
                  ]
                },
                FUNCTION_DISPATCH
              ]
            },
            {
              begin: lookahead(/@/),
              end: "[{;]",
              relevance: 0,
              illegal: /:/,
              contains: [
                {
                  className: "keyword",
                  begin: AT_PROPERTY_RE
                },
                {
                  begin: /\s/,
                  endsWithParent: true,
                  excludeEnd: true,
                  relevance: 0,
                  keywords: {
                    $pattern: /[a-z-]+/,
                    keyword: AT_MODIFIERS,
                    attribute: MEDIA_FEATURES.join(" ")
                  },
                  contains: [
                    {
                      begin: /[a-z-]+(?=:)/,
                      className: "attribute"
                    },
                    ...STRINGS,
                    hljs2.CSS_NUMBER_MODE
                  ]
                }
              ]
            },
            {
              className: "selector-tag",
              begin: "\\b(" + TAGS.join("|") + ")\\b"
            }
          ]
        };
      }
      module.exports = css;
    }
  });

  // node_modules/highlight.js/lib/languages/markdown.js
  var require_markdown = __commonJS({
    "node_modules/highlight.js/lib/languages/markdown.js"(exports, module) {
      function source(re2) {
        if (!re2)
          return null;
        if (typeof re2 === "string")
          return re2;
        return re2.source;
      }
      function concat(...args) {
        const joined = args.map((x) => source(x)).join("");
        return joined;
      }
      function markdown(hljs2) {
        const INLINE_HTML = {
          begin: /<\/?[A-Za-z_]/,
          end: ">",
          subLanguage: "xml",
          relevance: 0
        };
        const HORIZONTAL_RULE = {
          begin: "^[-\\*]{3,}",
          end: "$"
        };
        const CODE = {
          className: "code",
          variants: [
            {
              begin: "(`{3,})[^`](.|\\n)*?\\1`*[ ]*"
            },
            {
              begin: "(~{3,})[^~](.|\\n)*?\\1~*[ ]*"
            },
            {
              begin: "```",
              end: "```+[ ]*$"
            },
            {
              begin: "~~~",
              end: "~~~+[ ]*$"
            },
            {
              begin: "`.+?`"
            },
            {
              begin: "(?=^( {4}|\\t))",
              contains: [
                {
                  begin: "^( {4}|\\t)",
                  end: "(\\n)$"
                }
              ],
              relevance: 0
            }
          ]
        };
        const LIST = {
          className: "bullet",
          begin: "^[ 	]*([*+-]|(\\d+\\.))(?=\\s+)",
          end: "\\s+",
          excludeEnd: true
        };
        const LINK_REFERENCE = {
          begin: /^\[[^\n]+\]:/,
          returnBegin: true,
          contains: [
            {
              className: "symbol",
              begin: /\[/,
              end: /\]/,
              excludeBegin: true,
              excludeEnd: true
            },
            {
              className: "link",
              begin: /:\s*/,
              end: /$/,
              excludeBegin: true
            }
          ]
        };
        const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/;
        const LINK = {
          variants: [
            {
              begin: /\[.+?\]\[.*?\]/,
              relevance: 0
            },
            {
              begin: /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,
              relevance: 2
            },
            {
              begin: concat(/\[.+?\]\(/, URL_SCHEME, /:\/\/.*?\)/),
              relevance: 2
            },
            {
              begin: /\[.+?\]\([./?&#].*?\)/,
              relevance: 1
            },
            {
              begin: /\[.+?\]\(.*?\)/,
              relevance: 0
            }
          ],
          returnBegin: true,
          contains: [
            {
              className: "string",
              relevance: 0,
              begin: "\\[",
              end: "\\]",
              excludeBegin: true,
              returnEnd: true
            },
            {
              className: "link",
              relevance: 0,
              begin: "\\]\\(",
              end: "\\)",
              excludeBegin: true,
              excludeEnd: true
            },
            {
              className: "symbol",
              relevance: 0,
              begin: "\\]\\[",
              end: "\\]",
              excludeBegin: true,
              excludeEnd: true
            }
          ]
        };
        const BOLD = {
          className: "strong",
          contains: [],
          variants: [
            {
              begin: /_{2}/,
              end: /_{2}/
            },
            {
              begin: /\*{2}/,
              end: /\*{2}/
            }
          ]
        };
        const ITALIC = {
          className: "emphasis",
          contains: [],
          variants: [
            {
              begin: /\*(?!\*)/,
              end: /\*/
            },
            {
              begin: /_(?!_)/,
              end: /_/,
              relevance: 0
            }
          ]
        };
        BOLD.contains.push(ITALIC);
        ITALIC.contains.push(BOLD);
        let CONTAINABLE = [
          INLINE_HTML,
          LINK
        ];
        BOLD.contains = BOLD.contains.concat(CONTAINABLE);
        ITALIC.contains = ITALIC.contains.concat(CONTAINABLE);
        CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC);
        const HEADER = {
          className: "section",
          variants: [
            {
              begin: "^#{1,6}",
              end: "$",
              contains: CONTAINABLE
            },
            {
              begin: "(?=^.+?\\n[=-]{2,}$)",
              contains: [
                {
                  begin: "^[=-]*$"
                },
                {
                  begin: "^",
                  end: "\\n",
                  contains: CONTAINABLE
                }
              ]
            }
          ]
        };
        const BLOCKQUOTE = {
          className: "quote",
          begin: "^>\\s+",
          contains: CONTAINABLE,
          end: "$"
        };
        return {
          name: "Markdown",
          aliases: [
            "md",
            "mkdown",
            "mkd"
          ],
          contains: [
            HEADER,
            INLINE_HTML,
            LIST,
            BOLD,
            ITALIC,
            BLOCKQUOTE,
            CODE,
            HORIZONTAL_RULE,
            LINK,
            LINK_REFERENCE
          ]
        };
      }
      module.exports = markdown;
    }
  });

  // node_modules/highlight.js/lib/languages/diff.js
  var require_diff = __commonJS({
    "node_modules/highlight.js/lib/languages/diff.js"(exports, module) {
      function diff(hljs2) {
        return {
          name: "Diff",
          aliases: ["patch"],
          contains: [
            {
              className: "meta",
              relevance: 10,
              variants: [
                {
                  begin: /^@@ +-\d+,\d+ +\+\d+,\d+ +@@/
                },
                {
                  begin: /^\*\*\* +\d+,\d+ +\*\*\*\*$/
                },
                {
                  begin: /^--- +\d+,\d+ +----$/
                }
              ]
            },
            {
              className: "comment",
              variants: [
                {
                  begin: /Index: /,
                  end: /$/
                },
                {
                  begin: /^index/,
                  end: /$/
                },
                {
                  begin: /={3,}/,
                  end: /$/
                },
                {
                  begin: /^-{3}/,
                  end: /$/
                },
                {
                  begin: /^\*{3} /,
                  end: /$/
                },
                {
                  begin: /^\+{3}/,
                  end: /$/
                },
                {
                  begin: /^\*{15}$/
                },
                {
                  begin: /^diff --git/,
                  end: /$/
                }
              ]
            },
            {
              className: "addition",
              begin: /^\+/,
              end: /$/
            },
            {
              className: "deletion",
              begin: /^-/,
              end: /$/
            },
            {
              className: "addition",
              begin: /^!/,
              end: /$/
            }
          ]
        };
      }
      module.exports = diff;
    }
  });

  // node_modules/highlight.js/lib/languages/json.js
  var require_json = __commonJS({
    "node_modules/highlight.js/lib/languages/json.js"(exports, module) {
      function json(hljs2) {
        const LITERALS = {
          literal: "true false null"
        };
        const ALLOWED_COMMENTS = [
          hljs2.C_LINE_COMMENT_MODE,
          hljs2.C_BLOCK_COMMENT_MODE
        ];
        const TYPES = [
          hljs2.QUOTE_STRING_MODE,
          hljs2.C_NUMBER_MODE
        ];
        const VALUE_CONTAINER = {
          end: ",",
          endsWithParent: true,
          excludeEnd: true,
          contains: TYPES,
          keywords: LITERALS
        };
        const OBJECT = {
          begin: /\{/,
          end: /\}/,
          contains: [
            {
              className: "attr",
              begin: /"/,
              end: /"/,
              contains: [hljs2.BACKSLASH_ESCAPE],
              illegal: "\\n"
            },
            hljs2.inherit(VALUE_CONTAINER, {
              begin: /:/
            })
          ].concat(ALLOWED_COMMENTS),
          illegal: "\\S"
        };
        const ARRAY = {
          begin: "\\[",
          end: "\\]",
          contains: [hljs2.inherit(VALUE_CONTAINER)],
          illegal: "\\S"
        };
        TYPES.push(OBJECT, ARRAY);
        ALLOWED_COMMENTS.forEach(function(rule) {
          TYPES.push(rule);
        });
        return {
          name: "JSON",
          contains: TYPES,
          keywords: LITERALS,
          illegal: "\\S"
        };
      }
      module.exports = json;
    }
  });

  // node_modules/highlight.js/lib/languages/less.js
  var require_less = __commonJS({
    "node_modules/highlight.js/lib/languages/less.js"(exports, module) {
      var MODES = (hljs2) => {
        return {
          IMPORTANT: {
            className: "meta",
            begin: "!important"
          },
          HEXCOLOR: {
            className: "number",
            begin: "#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"
          },
          ATTRIBUTE_SELECTOR_MODE: {
            className: "selector-attr",
            begin: /\[/,
            end: /\]/,
            illegal: "$",
            contains: [
              hljs2.APOS_STRING_MODE,
              hljs2.QUOTE_STRING_MODE
            ]
          }
        };
      };
      var TAGS = [
        "a",
        "abbr",
        "address",
        "article",
        "aside",
        "audio",
        "b",
        "blockquote",
        "body",
        "button",
        "canvas",
        "caption",
        "cite",
        "code",
        "dd",
        "del",
        "details",
        "dfn",
        "div",
        "dl",
        "dt",
        "em",
        "fieldset",
        "figcaption",
        "figure",
        "footer",
        "form",
        "h1",
        "h2",
        "h3",
        "h4",
        "h5",
        "h6",
        "header",
        "hgroup",
        "html",
        "i",
        "iframe",
        "img",
        "input",
        "ins",
        "kbd",
        "label",
        "legend",
        "li",
        "main",
        "mark",
        "menu",
        "nav",
        "object",
        "ol",
        "p",
        "q",
        "quote",
        "samp",
        "section",
        "span",
        "strong",
        "summary",
        "sup",
        "table",
        "tbody",
        "td",
        "textarea",
        "tfoot",
        "th",
        "thead",
        "time",
        "tr",
        "ul",
        "var",
        "video"
      ];
      var MEDIA_FEATURES = [
        "any-hover",
        "any-pointer",
        "aspect-ratio",
        "color",
        "color-gamut",
        "color-index",
        "device-aspect-ratio",
        "device-height",
        "device-width",
        "display-mode",
        "forced-colors",
        "grid",
        "height",
        "hover",
        "inverted-colors",
        "monochrome",
        "orientation",
        "overflow-block",
        "overflow-inline",
        "pointer",
        "prefers-color-scheme",
        "prefers-contrast",
        "prefers-reduced-motion",
        "prefers-reduced-transparency",
        "resolution",
        "scan",
        "scripting",
        "update",
        "width",
        "min-width",
        "max-width",
        "min-height",
        "max-height"
      ];
      var PSEUDO_CLASSES = [
        "active",
        "any-link",
        "blank",
        "checked",
        "current",
        "default",
        "defined",
        "dir",
        "disabled",
        "drop",
        "empty",
        "enabled",
        "first",
        "first-child",
        "first-of-type",
        "fullscreen",
        "future",
        "focus",
        "focus-visible",
        "focus-within",
        "has",
        "host",
        "host-context",
        "hover",
        "indeterminate",
        "in-range",
        "invalid",
        "is",
        "lang",
        "last-child",
        "last-of-type",
        "left",
        "link",
        "local-link",
        "not",
        "nth-child",
        "nth-col",
        "nth-last-child",
        "nth-last-col",
        "nth-last-of-type",
        "nth-of-type",
        "only-child",
        "only-of-type",
        "optional",
        "out-of-range",
        "past",
        "placeholder-shown",
        "read-only",
        "read-write",
        "required",
        "right",
        "root",
        "scope",
        "target",
        "target-within",
        "user-invalid",
        "valid",
        "visited",
        "where"
      ];
      var PSEUDO_ELEMENTS = [
        "after",
        "backdrop",
        "before",
        "cue",
        "cue-region",
        "first-letter",
        "first-line",
        "grammar-error",
        "marker",
        "part",
        "placeholder",
        "selection",
        "slotted",
        "spelling-error"
      ];
      var ATTRIBUTES = [
        "align-content",
        "align-items",
        "align-self",
        "animation",
        "animation-delay",
        "animation-direction",
        "animation-duration",
        "animation-fill-mode",
        "animation-iteration-count",
        "animation-name",
        "animation-play-state",
        "animation-timing-function",
        "auto",
        "backface-visibility",
        "background",
        "background-attachment",
        "background-clip",
        "background-color",
        "background-image",
        "background-origin",
        "background-position",
        "background-repeat",
        "background-size",
        "border",
        "border-bottom",
        "border-bottom-color",
        "border-bottom-left-radius",
        "border-bottom-right-radius",
        "border-bottom-style",
        "border-bottom-width",
        "border-collapse",
        "border-color",
        "border-image",
        "border-image-outset",
        "border-image-repeat",
        "border-image-slice",
        "border-image-source",
        "border-image-width",
        "border-left",
        "border-left-color",
        "border-left-style",
        "border-left-width",
        "border-radius",
        "border-right",
        "border-right-color",
        "border-right-style",
        "border-right-width",
        "border-spacing",
        "border-style",
        "border-top",
        "border-top-color",
        "border-top-left-radius",
        "border-top-right-radius",
        "border-top-style",
        "border-top-width",
        "border-width",
        "bottom",
        "box-decoration-break",
        "box-shadow",
        "box-sizing",
        "break-after",
        "break-before",
        "break-inside",
        "caption-side",
        "clear",
        "clip",
        "clip-path",
        "color",
        "column-count",
        "column-fill",
        "column-gap",
        "column-rule",
        "column-rule-color",
        "column-rule-style",
        "column-rule-width",
        "column-span",
        "column-width",
        "columns",
        "content",
        "counter-increment",
        "counter-reset",
        "cursor",
        "direction",
        "display",
        "empty-cells",
        "filter",
        "flex",
        "flex-basis",
        "flex-direction",
        "flex-flow",
        "flex-grow",
        "flex-shrink",
        "flex-wrap",
        "float",
        "font",
        "font-display",
        "font-family",
        "font-feature-settings",
        "font-kerning",
        "font-language-override",
        "font-size",
        "font-size-adjust",
        "font-smoothing",
        "font-stretch",
        "font-style",
        "font-variant",
        "font-variant-ligatures",
        "font-variation-settings",
        "font-weight",
        "height",
        "hyphens",
        "icon",
        "image-orientation",
        "image-rendering",
        "image-resolution",
        "ime-mode",
        "inherit",
        "initial",
        "justify-content",
        "left",
        "letter-spacing",
        "line-height",
        "list-style",
        "list-style-image",
        "list-style-position",
        "list-style-type",
        "margin",
        "margin-bottom",
        "margin-left",
        "margin-right",
        "margin-top",
        "marks",
        "mask",
        "max-height",
        "max-width",
        "min-height",
        "min-width",
        "nav-down",
        "nav-index",
        "nav-left",
        "nav-right",
        "nav-up",
        "none",
        "normal",
        "object-fit",
        "object-position",
        "opacity",
        "order",
        "orphans",
        "outline",
        "outline-color",
        "outline-offset",
        "outline-style",
        "outline-width",
        "overflow",
        "overflow-wrap",
        "overflow-x",
        "overflow-y",
        "padding",
        "padding-bottom",
        "padding-left",
        "padding-right",
        "padding-top",
        "page-break-after",
        "page-break-before",
        "page-break-inside",
        "perspective",
        "perspective-origin",
        "pointer-events",
        "position",
        "quotes",
        "resize",
        "right",
        "src",
        "tab-size",
        "table-layout",
        "text-align",
        "text-align-last",
        "text-decoration",
        "text-decoration-color",
        "text-decoration-line",
        "text-decoration-style",
        "text-indent",
        "text-overflow",
        "text-rendering",
        "text-shadow",
        "text-transform",
        "text-underline-position",
        "top",
        "transform",
        "transform-origin",
        "transform-style",
        "transition",
        "transition-delay",
        "transition-duration",
        "transition-property",
        "transition-timing-function",
        "unicode-bidi",
        "vertical-align",
        "visibility",
        "white-space",
        "widows",
        "width",
        "word-break",
        "word-spacing",
        "word-wrap",
        "z-index"
      ].reverse();
      var PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS);
      function less(hljs2) {
        const modes = MODES(hljs2);
        const PSEUDO_SELECTORS$1 = PSEUDO_SELECTORS;
        const AT_MODIFIERS = "and or not only";
        const IDENT_RE = "[\\w-]+";
        const INTERP_IDENT_RE = "(" + IDENT_RE + "|@\\{" + IDENT_RE + "\\})";
        const RULES = [];
        const VALUE_MODES = [];
        const STRING_MODE = function(c) {
          return {
            className: "string",
            begin: "~?" + c + ".*?" + c
          };
        };
        const IDENT_MODE = function(name2, begin, relevance) {
          return {
            className: name2,
            begin,
            relevance
          };
        };
        const AT_KEYWORDS = {
          $pattern: /[a-z-]+/,
          keyword: AT_MODIFIERS,
          attribute: MEDIA_FEATURES.join(" ")
        };
        const PARENS_MODE = {
          begin: "\\(",
          end: "\\)",
          contains: VALUE_MODES,
          keywords: AT_KEYWORDS,
          relevance: 0
        };
        VALUE_MODES.push(
          hljs2.C_LINE_COMMENT_MODE,
          hljs2.C_BLOCK_COMMENT_MODE,
          STRING_MODE("'"),
          STRING_MODE('"'),
          hljs2.CSS_NUMBER_MODE,
          {
            begin: "(url|data-uri)\\(",
            starts: {
              className: "string",
              end: "[\\)\\n]",
              excludeEnd: true
            }
          },
          modes.HEXCOLOR,
          PARENS_MODE,
          IDENT_MODE("variable", "@@?" + IDENT_RE, 10),
          IDENT_MODE("variable", "@\\{" + IDENT_RE + "\\}"),
          IDENT_MODE("built_in", "~?`[^`]*?`"),
          {
            className: "attribute",
            begin: IDENT_RE + "\\s*:",
            end: ":",
            returnBegin: true,
            excludeEnd: true
          },
          modes.IMPORTANT
        );
        const VALUE_WITH_RULESETS = VALUE_MODES.concat({
          begin: /\{/,
          end: /\}/,
          contains: RULES
        });
        const MIXIN_GUARD_MODE = {
          beginKeywords: "when",
          endsWithParent: true,
          contains: [
            {
              beginKeywords: "and not"
            }
          ].concat(VALUE_MODES)
        };
        const RULE_MODE = {
          begin: INTERP_IDENT_RE + "\\s*:",
          returnBegin: true,
          end: /[;}]/,
          relevance: 0,
          contains: [
            {
              begin: /-(webkit|moz|ms|o)-/
            },
            {
              className: "attribute",
              begin: "\\b(" + ATTRIBUTES.join("|") + ")\\b",
              end: /(?=:)/,
              starts: {
                endsWithParent: true,
                illegal: "[<=$]",
                relevance: 0,
                contains: VALUE_MODES
              }
            }
          ]
        };
        const AT_RULE_MODE = {
          className: "keyword",
          begin: "@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",
          starts: {
            end: "[;{}]",
            keywords: AT_KEYWORDS,
            returnEnd: true,
            contains: VALUE_MODES,
            relevance: 0
          }
        };
        const VAR_RULE_MODE = {
          className: "variable",
          variants: [
            {
              begin: "@" + IDENT_RE + "\\s*:",
              relevance: 15
            },
            {
              begin: "@" + IDENT_RE
            }
          ],
          starts: {
            end: "[;}]",
            returnEnd: true,
            contains: VALUE_WITH_RULESETS
          }
        };
        const SELECTOR_MODE = {
          variants: [
            {
              begin: "[\\.#:&\\[>]",
              end: "[;{}]"
            },
            {
              begin: INTERP_IDENT_RE,
              end: /\{/
            }
          ],
          returnBegin: true,
          returnEnd: true,
          illegal: `[<='$"]`,
          relevance: 0,
          contains: [
            hljs2.C_LINE_COMMENT_MODE,
            hljs2.C_BLOCK_COMMENT_MODE,
            MIXIN_GUARD_MODE,
            IDENT_MODE("keyword", "all\\b"),
            IDENT_MODE("variable", "@\\{" + IDENT_RE + "\\}"),
            {
              begin: "\\b(" + TAGS.join("|") + ")\\b",
              className: "selector-tag"
            },
            IDENT_MODE("selector-tag", INTERP_IDENT_RE + "%?", 0),
            IDENT_MODE("selector-id", "#" + INTERP_IDENT_RE),
            IDENT_MODE("selector-class", "\\." + INTERP_IDENT_RE, 0),
            IDENT_MODE("selector-tag", "&", 0),
            modes.ATTRIBUTE_SELECTOR_MODE,
            {
              className: "selector-pseudo",
              begin: ":(" + PSEUDO_CLASSES.join("|") + ")"
            },
            {
              className: "selector-pseudo",
              begin: "::(" + PSEUDO_ELEMENTS.join("|") + ")"
            },
            {
              begin: "\\(",
              end: "\\)",
              contains: VALUE_WITH_RULESETS
            },
            {
              begin: "!important"
            }
          ]
        };
        const PSEUDO_SELECTOR_MODE = {
          begin: IDENT_RE + `:(:)?(${PSEUDO_SELECTORS$1.join("|")})`,
          returnBegin: true,
          contains: [SELECTOR_MODE]
        };
        RULES.push(
          hljs2.C_LINE_COMMENT_MODE,
          hljs2.C_BLOCK_COMMENT_MODE,
          AT_RULE_MODE,
          VAR_RULE_MODE,
          PSEUDO_SELECTOR_MODE,
          RULE_MODE,
          SELECTOR_MODE
        );
        return {
          name: "Less",
          case_insensitive: true,
          illegal: `[=>'/<($"]`,
          contains: RULES
        };
      }
      module.exports = less;
    }
  });

  // node_modules/highlight.js/lib/languages/nginx.js
  var require_nginx = __commonJS({
    "node_modules/highlight.js/lib/languages/nginx.js"(exports, module) {
      function nginx(hljs2) {
        const VAR = {
          className: "variable",
          variants: [
            {
              begin: /\$\d+/
            },
            {
              begin: /\$\{/,
              end: /\}/
            },
            {
              begin: /[$@]/ + hljs2.UNDERSCORE_IDENT_RE
            }
          ]
        };
        const DEFAULT = {
          endsWithParent: true,
          keywords: {
            $pattern: "[a-z/_]+",
            literal: "on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"
          },
          relevance: 0,
          illegal: "=>",
          contains: [
            hljs2.HASH_COMMENT_MODE,
            {
              className: "string",
              contains: [
                hljs2.BACKSLASH_ESCAPE,
                VAR
              ],
              variants: [
                {
                  begin: /"/,
                  end: /"/
                },
                {
                  begin: /'/,
                  end: /'/
                }
              ]
            },
            {
              begin: "([a-z]+):/",
              end: "\\s",
              endsWithParent: true,
              excludeEnd: true,
              contains: [VAR]
            },
            {
              className: "regexp",
              contains: [
                hljs2.BACKSLASH_ESCAPE,
                VAR
              ],
              variants: [
                {
                  begin: "\\s\\^",
                  end: "\\s|\\{|;",
                  returnEnd: true
                },
                {
                  begin: "~\\*?\\s+",
                  end: "\\s|\\{|;",
                  returnEnd: true
                },
                {
                  begin: "\\*(\\.[a-z\\-]+)+"
                },
                {
                  begin: "([a-z\\-]+\\.)+\\*"
                }
              ]
            },
            {
              className: "number",
              begin: "\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"
            },
            {
              className: "number",
              begin: "\\b\\d+[kKmMgGdshdwy]*\\b",
              relevance: 0
            },
            VAR
          ]
        };
        return {
          name: "Nginx config",
          aliases: ["nginxconf"],
          contains: [
            hljs2.HASH_COMMENT_MODE,
            {
              begin: hljs2.UNDERSCORE_IDENT_RE + "\\s+\\{",
              returnBegin: true,
              end: /\{/,
              contains: [
                {
                  className: "section",
                  begin: hljs2.UNDERSCORE_IDENT_RE
                }
              ],
              relevance: 0
            },
            {
              begin: hljs2.UNDERSCORE_IDENT_RE + "\\s",
              end: ";|\\{",
              returnBegin: true,
              contains: [
                {
                  className: "attribute",
                  begin: hljs2.UNDERSCORE_IDENT_RE,
                  starts: DEFAULT
                }
              ],
              relevance: 0
            }
          ],
          illegal: "[^\\s\\}]"
        };
      }
      module.exports = nginx;
    }
  });

  // node_modules/highlight.js/lib/languages/scss.js
  var require_scss = __commonJS({
    "node_modules/highlight.js/lib/languages/scss.js"(exports, module) {
      var MODES = (hljs2) => {
        return {
          IMPORTANT: {
            className: "meta",
            begin: "!important"
          },
          HEXCOLOR: {
            className: "number",
            begin: "#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"
          },
          ATTRIBUTE_SELECTOR_MODE: {
            className: "selector-attr",
            begin: /\[/,
            end: /\]/,
            illegal: "$",
            contains: [
              hljs2.APOS_STRING_MODE,
              hljs2.QUOTE_STRING_MODE
            ]
          }
        };
      };
      var TAGS = [
        "a",
        "abbr",
        "address",
        "article",
        "aside",
        "audio",
        "b",
        "blockquote",
        "body",
        "button",
        "canvas",
        "caption",
        "cite",
        "code",
        "dd",
        "del",
        "details",
        "dfn",
        "div",
        "dl",
        "dt",
        "em",
        "fieldset",
        "figcaption",
        "figure",
        "footer",
        "form",
        "h1",
        "h2",
        "h3",
        "h4",
        "h5",
        "h6",
        "header",
        "hgroup",
        "html",
        "i",
        "iframe",
        "img",
        "input",
        "ins",
        "kbd",
        "label",
        "legend",
        "li",
        "main",
        "mark",
        "menu",
        "nav",
        "object",
        "ol",
        "p",
        "q",
        "quote",
        "samp",
        "section",
        "span",
        "strong",
        "summary",
        "sup",
        "table",
        "tbody",
        "td",
        "textarea",
        "tfoot",
        "th",
        "thead",
        "time",
        "tr",
        "ul",
        "var",
        "video"
      ];
      var MEDIA_FEATURES = [
        "any-hover",
        "any-pointer",
        "aspect-ratio",
        "color",
        "color-gamut",
        "color-index",
        "device-aspect-ratio",
        "device-height",
        "device-width",
        "display-mode",
        "forced-colors",
        "grid",
        "height",
        "hover",
        "inverted-colors",
        "monochrome",
        "orientation",
        "overflow-block",
        "overflow-inline",
        "pointer",
        "prefers-color-scheme",
        "prefers-contrast",
        "prefers-reduced-motion",
        "prefers-reduced-transparency",
        "resolution",
        "scan",
        "scripting",
        "update",
        "width",
        "min-width",
        "max-width",
        "min-height",
        "max-height"
      ];
      var PSEUDO_CLASSES = [
        "active",
        "any-link",
        "blank",
        "checked",
        "current",
        "default",
        "defined",
        "dir",
        "disabled",
        "drop",
        "empty",
        "enabled",
        "first",
        "first-child",
        "first-of-type",
        "fullscreen",
        "future",
        "focus",
        "focus-visible",
        "focus-within",
        "has",
        "host",
        "host-context",
        "hover",
        "indeterminate",
        "in-range",
        "invalid",
        "is",
        "lang",
        "last-child",
        "last-of-type",
        "left",
        "link",
        "local-link",
        "not",
        "nth-child",
        "nth-col",
        "nth-last-child",
        "nth-last-col",
        "nth-last-of-type",
        "nth-of-type",
        "only-child",
        "only-of-type",
        "optional",
        "out-of-range",
        "past",
        "placeholder-shown",
        "read-only",
        "read-write",
        "required",
        "right",
        "root",
        "scope",
        "target",
        "target-within",
        "user-invalid",
        "valid",
        "visited",
        "where"
      ];
      var PSEUDO_ELEMENTS = [
        "after",
        "backdrop",
        "before",
        "cue",
        "cue-region",
        "first-letter",
        "first-line",
        "grammar-error",
        "marker",
        "part",
        "placeholder",
        "selection",
        "slotted",
        "spelling-error"
      ];
      var ATTRIBUTES = [
        "align-content",
        "align-items",
        "align-self",
        "animation",
        "animation-delay",
        "animation-direction",
        "animation-duration",
        "animation-fill-mode",
        "animation-iteration-count",
        "animation-name",
        "animation-play-state",
        "animation-timing-function",
        "auto",
        "backface-visibility",
        "background",
        "background-attachment",
        "background-clip",
        "background-color",
        "background-image",
        "background-origin",
        "background-position",
        "background-repeat",
        "background-size",
        "border",
        "border-bottom",
        "border-bottom-color",
        "border-bottom-left-radius",
        "border-bottom-right-radius",
        "border-bottom-style",
        "border-bottom-width",
        "border-collapse",
        "border-color",
        "border-image",
        "border-image-outset",
        "border-image-repeat",
        "border-image-slice",
        "border-image-source",
        "border-image-width",
        "border-left",
        "border-left-color",
        "border-left-style",
        "border-left-width",
        "border-radius",
        "border-right",
        "border-right-color",
        "border-right-style",
        "border-right-width",
        "border-spacing",
        "border-style",
        "border-top",
        "border-top-color",
        "border-top-left-radius",
        "border-top-right-radius",
        "border-top-style",
        "border-top-width",
        "border-width",
        "bottom",
        "box-decoration-break",
        "box-shadow",
        "box-sizing",
        "break-after",
        "break-before",
        "break-inside",
        "caption-side",
        "clear",
        "clip",
        "clip-path",
        "color",
        "column-count",
        "column-fill",
        "column-gap",
        "column-rule",
        "column-rule-color",
        "column-rule-style",
        "column-rule-width",
        "column-span",
        "column-width",
        "columns",
        "content",
        "counter-increment",
        "counter-reset",
        "cursor",
        "direction",
        "display",
        "empty-cells",
        "filter",
        "flex",
        "flex-basis",
        "flex-direction",
        "flex-flow",
        "flex-grow",
        "flex-shrink",
        "flex-wrap",
        "float",
        "font",
        "font-display",
        "font-family",
        "font-feature-settings",
        "font-kerning",
        "font-language-override",
        "font-size",
        "font-size-adjust",
        "font-smoothing",
        "font-stretch",
        "font-style",
        "font-variant",
        "font-variant-ligatures",
        "font-variation-settings",
        "font-weight",
        "height",
        "hyphens",
        "icon",
        "image-orientation",
        "image-rendering",
        "image-resolution",
        "ime-mode",
        "inherit",
        "initial",
        "justify-content",
        "left",
        "letter-spacing",
        "line-height",
        "list-style",
        "list-style-image",
        "list-style-position",
        "list-style-type",
        "margin",
        "margin-bottom",
        "margin-left",
        "margin-right",
        "margin-top",
        "marks",
        "mask",
        "max-height",
        "max-width",
        "min-height",
        "min-width",
        "nav-down",
        "nav-index",
        "nav-left",
        "nav-right",
        "nav-up",
        "none",
        "normal",
        "object-fit",
        "object-position",
        "opacity",
        "order",
        "orphans",
        "outline",
        "outline-color",
        "outline-offset",
        "outline-style",
        "outline-width",
        "overflow",
        "overflow-wrap",
        "overflow-x",
        "overflow-y",
        "padding",
        "padding-bottom",
        "padding-left",
        "padding-right",
        "padding-top",
        "page-break-after",
        "page-break-before",
        "page-break-inside",
        "perspective",
        "perspective-origin",
        "pointer-events",
        "position",
        "quotes",
        "resize",
        "right",
        "src",
        "tab-size",
        "table-layout",
        "text-align",
        "text-align-last",
        "text-decoration",
        "text-decoration-color",
        "text-decoration-line",
        "text-decoration-style",
        "text-indent",
        "text-overflow",
        "text-rendering",
        "text-shadow",
        "text-transform",
        "text-underline-position",
        "top",
        "transform",
        "transform-origin",
        "transform-style",
        "transition",
        "transition-delay",
        "transition-duration",
        "transition-property",
        "transition-timing-function",
        "unicode-bidi",
        "vertical-align",
        "visibility",
        "white-space",
        "widows",
        "width",
        "word-break",
        "word-spacing",
        "word-wrap",
        "z-index"
      ].reverse();
      function scss(hljs2) {
        const modes = MODES(hljs2);
        const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS;
        const PSEUDO_CLASSES$1 = PSEUDO_CLASSES;
        const AT_IDENTIFIER = "@[a-z-]+";
        const AT_MODIFIERS = "and or not only";
        const IDENT_RE = "[a-zA-Z-][a-zA-Z0-9_-]*";
        const VARIABLE = {
          className: "variable",
          begin: "(\\$" + IDENT_RE + ")\\b"
        };
        return {
          name: "SCSS",
          case_insensitive: true,
          illegal: "[=/|']",
          contains: [
            hljs2.C_LINE_COMMENT_MODE,
            hljs2.C_BLOCK_COMMENT_MODE,
            {
              className: "selector-id",
              begin: "#[A-Za-z0-9_-]+",
              relevance: 0
            },
            {
              className: "selector-class",
              begin: "\\.[A-Za-z0-9_-]+",
              relevance: 0
            },
            modes.ATTRIBUTE_SELECTOR_MODE,
            {
              className: "selector-tag",
              begin: "\\b(" + TAGS.join("|") + ")\\b",
              relevance: 0
            },
            {
              className: "selector-pseudo",
              begin: ":(" + PSEUDO_CLASSES$1.join("|") + ")"
            },
            {
              className: "selector-pseudo",
              begin: "::(" + PSEUDO_ELEMENTS$1.join("|") + ")"
            },
            VARIABLE,
            {
              begin: /\(/,
              end: /\)/,
              contains: [hljs2.CSS_NUMBER_MODE]
            },
            {
              className: "attribute",
              begin: "\\b(" + ATTRIBUTES.join("|") + ")\\b"
            },
            {
              begin: "\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"
            },
            {
              begin: ":",
              end: ";",
              contains: [
                VARIABLE,
                modes.HEXCOLOR,
                hljs2.CSS_NUMBER_MODE,
                hljs2.QUOTE_STRING_MODE,
                hljs2.APOS_STRING_MODE,
                modes.IMPORTANT
              ]
            },
            {
              begin: "@(page|font-face)",
              lexemes: AT_IDENTIFIER,
              keywords: "@page @font-face"
            },
            {
              begin: "@",
              end: "[{;]",
              returnBegin: true,
              keywords: {
                $pattern: /[a-z-]+/,
                keyword: AT_MODIFIERS,
                attribute: MEDIA_FEATURES.join(" ")
              },
              contains: [
                {
                  begin: AT_IDENTIFIER,
                  className: "keyword"
                },
                {
                  begin: /[a-z-]+(?=:)/,
                  className: "attribute"
                },
                VARIABLE,
                hljs2.QUOTE_STRING_MODE,
                hljs2.APOS_STRING_MODE,
                modes.HEXCOLOR,
                hljs2.CSS_NUMBER_MODE
              ]
            }
          ]
        };
      }
      module.exports = scss;
    }
  });

  // node_modules/highlight.js/lib/languages/shell.js
  var require_shell = __commonJS({
    "node_modules/highlight.js/lib/languages/shell.js"(exports, module) {
      function shell(hljs2) {
        return {
          name: "Shell Session",
          aliases: ["console"],
          contains: [
            {
              className: "meta",
              begin: /^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,
              starts: {
                end: /[^\\](?=\s*$)/,
                subLanguage: "bash"
              }
            }
          ]
        };
      }
      module.exports = shell;
    }
  });

  // node_modules/highlight.js/lib/languages/sql.js
  var require_sql = __commonJS({
    "node_modules/highlight.js/lib/languages/sql.js"(exports, module) {
      function source(re2) {
        if (!re2)
          return null;
        if (typeof re2 === "string")
          return re2;
        return re2.source;
      }
      function concat(...args) {
        const joined = args.map((x) => source(x)).join("");
        return joined;
      }
      function either(...args) {
        const joined = "(" + args.map((x) => source(x)).join("|") + ")";
        return joined;
      }
      function sql(hljs2) {
        const COMMENT_MODE = hljs2.COMMENT("--", "$");
        const STRING = {
          className: "string",
          variants: [
            {
              begin: /'/,
              end: /'/,
              contains: [
                { begin: /''/ }
              ]
            }
          ]
        };
        const QUOTED_IDENTIFIER = {
          begin: /"/,
          end: /"/,
          contains: [{ begin: /""/ }]
        };
        const LITERALS = [
          "true",
          "false",
          "unknown"
        ];
        const MULTI_WORD_TYPES = [
          "double precision",
          "large object",
          "with timezone",
          "without timezone"
        ];
        const TYPES = [
          "bigint",
          "binary",
          "blob",
          "boolean",
          "char",
          "character",
          "clob",
          "date",
          "dec",
          "decfloat",
          "decimal",
          "float",
          "int",
          "integer",
          "interval",
          "nchar",
          "nclob",
          "national",
          "numeric",
          "real",
          "row",
          "smallint",
          "time",
          "timestamp",
          "varchar",
          "varying",
          "varbinary"
        ];
        const NON_RESERVED_WORDS = [
          "add",
          "asc",
          "collation",
          "desc",
          "final",
          "first",
          "last",
          "view"
        ];
        const RESERVED_WORDS = [
          "abs",
          "acos",
          "all",
          "allocate",
          "alter",
          "and",
          "any",
          "are",
          "array",
          "array_agg",
          "array_max_cardinality",
          "as",
          "asensitive",
          "asin",
          "asymmetric",
          "at",
          "atan",
          "atomic",
          "authorization",
          "avg",
          "begin",
          "begin_frame",
          "begin_partition",
          "between",
          "bigint",
          "binary",
          "blob",
          "boolean",
          "both",
          "by",
          "call",
          "called",
          "cardinality",
          "cascaded",
          "case",
          "cast",
          "ceil",
          "ceiling",
          "char",
          "char_length",
          "character",
          "character_length",
          "check",
          "classifier",
          "clob",
          "close",
          "coalesce",
          "collate",
          "collect",
          "column",
          "commit",
          "condition",
          "connect",
          "constraint",
          "contains",
          "convert",
          "copy",
          "corr",
          "corresponding",
          "cos",
          "cosh",
          "count",
          "covar_pop",
          "covar_samp",
          "create",
          "cross",
          "cube",
          "cume_dist",
          "current",
          "current_catalog",
          "current_date",
          "current_default_transform_group",
          "current_path",
          "current_role",
          "current_row",
          "current_schema",
          "current_time",
          "current_timestamp",
          "current_path",
          "current_role",
          "current_transform_group_for_type",
          "current_user",
          "cursor",
          "cycle",
          "date",
          "day",
          "deallocate",
          "dec",
          "decimal",
          "decfloat",
          "declare",
          "default",
          "define",
          "delete",
          "dense_rank",
          "deref",
          "describe",
          "deterministic",
          "disconnect",
          "distinct",
          "double",
          "drop",
          "dynamic",
          "each",
          "element",
          "else",
          "empty",
          "end",
          "end_frame",
          "end_partition",
          "end-exec",
          "equals",
          "escape",
          "every",
          "except",
          "exec",
          "execute",
          "exists",
          "exp",
          "external",
          "extract",
          "false",
          "fetch",
          "filter",
          "first_value",
          "float",
          "floor",
          "for",
          "foreign",
          "frame_row",
          "free",
          "from",
          "full",
          "function",
          "fusion",
          "get",
          "global",
          "grant",
          "group",
          "grouping",
          "groups",
          "having",
          "hold",
          "hour",
          "identity",
          "in",
          "indicator",
          "initial",
          "inner",
          "inout",
          "insensitive",
          "insert",
          "int",
          "integer",
          "intersect",
          "intersection",
          "interval",
          "into",
          "is",
          "join",
          "json_array",
          "json_arrayagg",
          "json_exists",
          "json_object",
          "json_objectagg",
          "json_query",
          "json_table",
          "json_table_primitive",
          "json_value",
          "lag",
          "language",
          "large",
          "last_value",
          "lateral",
          "lead",
          "leading",
          "left",
          "like",
          "like_regex",
          "listagg",
          "ln",
          "local",
          "localtime",
          "localtimestamp",
          "log",
          "log10",
          "lower",
          "match",
          "match_number",
          "match_recognize",
          "matches",
          "max",
          "member",
          "merge",
          "method",
          "min",
          "minute",
          "mod",
          "modifies",
          "module",
          "month",
          "multiset",
          "national",
          "natural",
          "nchar",
          "nclob",
          "new",
          "no",
          "none",
          "normalize",
          "not",
          "nth_value",
          "ntile",
          "null",
          "nullif",
          "numeric",
          "octet_length",
          "occurrences_regex",
          "of",
          "offset",
          "old",
          "omit",
          "on",
          "one",
          "only",
          "open",
          "or",
          "order",
          "out",
          "outer",
          "over",
          "overlaps",
          "overlay",
          "parameter",
          "partition",
          "pattern",
          "per",
          "percent",
          "percent_rank",
          "percentile_cont",
          "percentile_disc",
          "period",
          "portion",
          "position",
          "position_regex",
          "power",
          "precedes",
          "precision",
          "prepare",
          "primary",
          "procedure",
          "ptf",
          "range",
          "rank",
          "reads",
          "real",
          "recursive",
          "ref",
          "references",
          "referencing",
          "regr_avgx",
          "regr_avgy",
          "regr_count",
          "regr_intercept",
          "regr_r2",
          "regr_slope",
          "regr_sxx",
          "regr_sxy",
          "regr_syy",
          "release",
          "result",
          "return",
          "returns",
          "revoke",
          "right",
          "rollback",
          "rollup",
          "row",
          "row_number",
          "rows",
          "running",
          "savepoint",
          "scope",
          "scroll",
          "search",
          "second",
          "seek",
          "select",
          "sensitive",
          "session_user",
          "set",
          "show",
          "similar",
          "sin",
          "sinh",
          "skip",
          "smallint",
          "some",
          "specific",
          "specifictype",
          "sql",
          "sqlexception",
          "sqlstate",
          "sqlwarning",
          "sqrt",
          "start",
          "static",
          "stddev_pop",
          "stddev_samp",
          "submultiset",
          "subset",
          "substring",
          "substring_regex",
          "succeeds",
          "sum",
          "symmetric",
          "system",
          "system_time",
          "system_user",
          "table",
          "tablesample",
          "tan",
          "tanh",
          "then",
          "time",
          "timestamp",
          "timezone_hour",
          "timezone_minute",
          "to",
          "trailing",
          "translate",
          "translate_regex",
          "translation",
          "treat",
          "trigger",
          "trim",
          "trim_array",
          "true",
          "truncate",
          "uescape",
          "union",
          "unique",
          "unknown",
          "unnest",
          "update   ",
          "upper",
          "user",
          "using",
          "value",
          "values",
          "value_of",
          "var_pop",
          "var_samp",
          "varbinary",
          "varchar",
          "varying",
          "versioning",
          "when",
          "whenever",
          "where",
          "width_bucket",
          "window",
          "with",
          "within",
          "without",
          "year"
        ];
        const RESERVED_FUNCTIONS = [
          "abs",
          "acos",
          "array_agg",
          "asin",
          "atan",
          "avg",
          "cast",
          "ceil",
          "ceiling",
          "coalesce",
          "corr",
          "cos",
          "cosh",
          "count",
          "covar_pop",
          "covar_samp",
          "cume_dist",
          "dense_rank",
          "deref",
          "element",
          "exp",
          "extract",
          "first_value",
          "floor",
          "json_array",
          "json_arrayagg",
          "json_exists",
          "json_object",
          "json_objectagg",
          "json_query",
          "json_table",
          "json_table_primitive",
          "json_value",
          "lag",
          "last_value",
          "lead",
          "listagg",
          "ln",
          "log",
          "log10",
          "lower",
          "max",
          "min",
          "mod",
          "nth_value",
          "ntile",
          "nullif",
          "percent_rank",
          "percentile_cont",
          "percentile_disc",
          "position",
          "position_regex",
          "power",
          "rank",
          "regr_avgx",
          "regr_avgy",
          "regr_count",
          "regr_intercept",
          "regr_r2",
          "regr_slope",
          "regr_sxx",
          "regr_sxy",
          "regr_syy",
          "row_number",
          "sin",
          "sinh",
          "sqrt",
          "stddev_pop",
          "stddev_samp",
          "substring",
          "substring_regex",
          "sum",
          "tan",
          "tanh",
          "translate",
          "translate_regex",
          "treat",
          "trim",
          "trim_array",
          "unnest",
          "upper",
          "value_of",
          "var_pop",
          "var_samp",
          "width_bucket"
        ];
        const POSSIBLE_WITHOUT_PARENS = [
          "current_catalog",
          "current_date",
          "current_default_transform_group",
          "current_path",
          "current_role",
          "current_schema",
          "current_transform_group_for_type",
          "current_user",
          "session_user",
          "system_time",
          "system_user",
          "current_time",
          "localtime",
          "current_timestamp",
          "localtimestamp"
        ];
        const COMBOS = [
          "create table",
          "insert into",
          "primary key",
          "foreign key",
          "not null",
          "alter table",
          "add constraint",
          "grouping sets",
          "on overflow",
          "character set",
          "respect nulls",
          "ignore nulls",
          "nulls first",
          "nulls last",
          "depth first",
          "breadth first"
        ];
        const FUNCTIONS = RESERVED_FUNCTIONS;
        const KEYWORDS = [...RESERVED_WORDS, ...NON_RESERVED_WORDS].filter((keyword) => {
          return !RESERVED_FUNCTIONS.includes(keyword);
        });
        const VARIABLE = {
          className: "variable",
          begin: /@[a-z0-9]+/
        };
        const OPERATOR = {
          className: "operator",
          begin: /[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,
          relevance: 0
        };
        const FUNCTION_CALL = {
          begin: concat(/\b/, either(...FUNCTIONS), /\s*\(/),
          keywords: {
            built_in: FUNCTIONS
          }
        };
        function reduceRelevancy(list, { exceptions, when } = {}) {
          const qualifyFn = when;
          exceptions = exceptions || [];
          return list.map((item) => {
            if (item.match(/\|\d+$/) || exceptions.includes(item)) {
              return item;
            } else if (qualifyFn(item)) {
              return `${item}|0`;
            } else {
              return item;
            }
          });
        }
        return {
          name: "SQL",
          case_insensitive: true,
          illegal: /[{}]|<\//,
          keywords: {
            $pattern: /\b[\w\.]+/,
            keyword: reduceRelevancy(KEYWORDS, { when: (x) => x.length < 3 }),
            literal: LITERALS,
            type: TYPES,
            built_in: POSSIBLE_WITHOUT_PARENS
          },
          contains: [
            {
              begin: either(...COMBOS),
              keywords: {
                $pattern: /[\w\.]+/,
                keyword: KEYWORDS.concat(COMBOS),
                literal: LITERALS,
                type: TYPES
              }
            },
            {
              className: "type",
              begin: either(...MULTI_WORD_TYPES)
            },
            FUNCTION_CALL,
            VARIABLE,
            STRING,
            QUOTED_IDENTIFIER,
            hljs2.C_NUMBER_MODE,
            hljs2.C_BLOCK_COMMENT_MODE,
            COMMENT_MODE,
            OPERATOR
          ]
        };
      }
      module.exports = sql;
    }
  });

  // frappe/website/js/syntax_highlight.js
  var require_syntax_highlight = __commonJS({
    "frappe/website/js/syntax_highlight.js"(exports, module) {
      var hljs2 = require_core();
      hljs2.registerLanguage("javascript", require_javascript());
      hljs2.registerLanguage("python", require_python());
      hljs2.registerLanguage("xml", require_xml());
      hljs2.registerLanguage("django", require_django());
      hljs2.registerLanguage("bash", require_bash());
      hljs2.registerLanguage("css", require_css());
      hljs2.registerLanguage("markdown", require_markdown());
      hljs2.registerLanguage("diff", require_diff());
      hljs2.registerLanguage("json", require_json());
      hljs2.registerLanguage("less", require_less());
      hljs2.registerLanguage("nginx", require_nginx());
      hljs2.registerLanguage("scss", require_scss());
      hljs2.registerLanguage("shell", require_shell());
      hljs2.registerLanguage("sql", require_sql());
      module.exports = hljs2;
    }
  });

  // frappe/public/js/jquery-bootstrap.js
  var import_jquery = __toESM(require_jquery());
  var import_alert = __toESM(require_alert());
  var import_button = __toESM(require_button());
  var import_carousel = __toESM(require_carousel());
  var import_collapse = __toESM(require_collapse());
  var import_dropdown = __toESM(require_dropdown());
  var import_modal = __toESM(require_modal());
  var import_popover = __toESM(require_popover());
  var import_scrollspy = __toESM(require_scrollspy());
  var import_tab = __toESM(require_tab());
  var import_toast = __toESM(require_toast());
  var import_tooltip = __toESM(require_tooltip());
  var import_util = __toESM(require_util());
  window.jQuery = import_jquery.default;
  window.$ = import_jquery.default;

  // frappe/public/js/lib/moment.js
  var import_moment_timezone_with_data_10_year_range_min = __toESM(require_moment_timezone_with_data_10_year_range_min());
  window.moment = import_moment_timezone_with_data_10_year_range_min.default;

  // frappe/public/js/libs.bundle.js
  var import_leaflet = __toESM(require_leaflet());

  // frappe/public/js/lib/leaflet_easy_button/easy-button.js
  (function() {
    L.Control.EasyBar = L.Control.extend({
      options: {
        position: "topleft",
        id: null,
        leafletClasses: true
      },
      initialize: function(buttons, options) {
        if (options) {
          L.Util.setOptions(this, options);
        }
        this._buildContainer();
        this._buttons = [];
        for (var i2 = 0; i2 < buttons.length; i2++) {
          buttons[i2]._bar = this;
          buttons[i2]._container = buttons[i2].button;
          this._buttons.push(buttons[i2]);
          this.container.appendChild(buttons[i2].button);
        }
      },
      _buildContainer: function() {
        this._container = this.container = L.DomUtil.create("div", "");
        this.options.leafletClasses && L.DomUtil.addClass(this.container, "leaflet-bar easy-button-container leaflet-control");
        this.options.id && (this.container.id = this.options.id);
      },
      enable: function() {
        L.DomUtil.addClass(this.container, "enabled");
        L.DomUtil.removeClass(this.container, "disabled");
        this.container.setAttribute("aria-hidden", "false");
        return this;
      },
      disable: function() {
        L.DomUtil.addClass(this.container, "disabled");
        L.DomUtil.removeClass(this.container, "enabled");
        this.container.setAttribute("aria-hidden", "true");
        return this;
      },
      onAdd: function() {
        return this.container;
      },
      addTo: function(map2) {
        this._map = map2;
        for (var i2 = 0; i2 < this._buttons.length; i2++) {
          this._buttons[i2]._map = map2;
        }
        var container = this._container = this.onAdd(map2), pos = this.getPosition(), corner = map2._controlCorners[pos];
        L.DomUtil.addClass(container, "leaflet-control");
        if (pos.indexOf("bottom") !== -1) {
          corner.insertBefore(container, corner.firstChild);
        } else {
          corner.appendChild(container);
        }
        return this;
      }
    });
    L.easyBar = function() {
      var args = [L.Control.EasyBar];
      for (var i2 = 0; i2 < arguments.length; i2++) {
        args.push(arguments[i2]);
      }
      return new (Function.prototype.bind.apply(L.Control.EasyBar, args))();
    };
    L.Control.EasyButton = L.Control.extend({
      options: {
        position: "topleft",
        id: null,
        type: "replace",
        states: [],
        leafletClasses: true,
        tagName: "button"
      },
      initialize: function(icon, onClick, title, id) {
        this.options.states = [];
        if (id != null) {
          this.options.id = id;
        }
        this.storage = {};
        if (typeof arguments[arguments.length - 1] === "object") {
          L.Util.setOptions(this, arguments[arguments.length - 1]);
        }
        if (this.options.states.length === 0 && typeof icon === "string" && typeof onClick === "function") {
          this.options.states.push({
            icon,
            onClick,
            title: typeof title === "string" ? title : ""
          });
        }
        this._states = [];
        for (var i2 = 0; i2 < this.options.states.length; i2++) {
          this._states.push(new State(this.options.states[i2], this));
        }
        this._buildButton();
        this._activateState(this._states[0]);
      },
      _buildButton: function() {
        this.button = L.DomUtil.create(this.options.tagName, "");
        if (this.options.tagName === "button") {
          this.button.setAttribute("type", "button");
        }
        if (this.options.id) {
          this.button.id = this.options.id;
        }
        if (this.options.leafletClasses) {
          L.DomUtil.addClass(this.button, "easy-button-button leaflet-bar-part leaflet-interactive");
        }
        L.DomEvent.addListener(this.button, "dblclick", L.DomEvent.stop);
        L.DomEvent.addListener(this.button, "mousedown", L.DomEvent.stop);
        L.DomEvent.addListener(this.button, "click", function(e) {
          L.DomEvent.stop(e);
          this._currentState.onClick(this, this._map ? this._map : null);
          this._map && this._map.getContainer().focus();
        }, this);
        if (this.options.type == "replace") {
          this.button.appendChild(this._currentState.icon);
        } else {
          for (var i2 = 0; i2 < this._states.length; i2++) {
            this.button.appendChild(this._states[i2].icon);
          }
        }
      },
      _currentState: {
        stateName: "unnamed",
        icon: function() {
          return document.createElement("span");
        }()
      },
      _states: null,
      state: function(newState) {
        if (typeof newState == "string") {
          this._activateStateNamed(newState);
        } else if (typeof newState == "number") {
          this._activateState(this._states[newState]);
        }
        return this;
      },
      _activateStateNamed: function(stateName) {
        for (var i2 = 0; i2 < this._states.length; i2++) {
          if (this._states[i2].stateName == stateName) {
            this._activateState(this._states[i2]);
          }
        }
      },
      _activateState: function(newState) {
        if (newState === this._currentState) {
          return;
        } else {
          if (this.options.type == "replace") {
            this.button.appendChild(newState.icon);
            this.button.removeChild(this._currentState.icon);
          }
          if (newState.title) {
            this.button.title = newState.title;
          } else {
            this.button.removeAttribute("title");
          }
          for (var i2 = 0; i2 < this._states.length; i2++) {
            L.DomUtil.removeClass(this._states[i2].icon, this._currentState.stateName + "-active");
            L.DomUtil.addClass(this._states[i2].icon, newState.stateName + "-active");
          }
          L.DomUtil.removeClass(this.button, this._currentState.stateName + "-active");
          L.DomUtil.addClass(this.button, newState.stateName + "-active");
          this._currentState = newState;
        }
      },
      enable: function() {
        L.DomUtil.addClass(this.button, "enabled");
        L.DomUtil.removeClass(this.button, "disabled");
        this.button.setAttribute("aria-hidden", "false");
        return this;
      },
      disable: function() {
        L.DomUtil.addClass(this.button, "disabled");
        L.DomUtil.removeClass(this.button, "enabled");
        this.button.setAttribute("aria-hidden", "true");
        return this;
      },
      onAdd: function(map2) {
        var bar = L.easyBar([this], {
          position: this.options.position,
          leafletClasses: this.options.leafletClasses
        });
        this._anonymousBar = bar;
        this._container = bar.container;
        return this._anonymousBar.container;
      },
      removeFrom: function(map2) {
        if (this._map === map2)
          this.remove();
        return this;
      }
    });
    L.easyButton = function() {
      var args = Array.prototype.concat.apply([L.Control.EasyButton], arguments);
      return new (Function.prototype.bind.apply(L.Control.EasyButton, args))();
    };
    function State(template, easyButton) {
      this.title = template.title;
      this.stateName = template.stateName ? template.stateName : "unnamed-state";
      this.icon = L.DomUtil.create("span", "");
      L.DomUtil.addClass(this.icon, "button-state state-" + this.stateName.replace(/(^\s*|\s*$)/g, ""));
      this.icon.innerHTML = buildIcon(template.icon);
      this.onClick = L.Util.bind(template.onClick ? template.onClick : function() {
      }, easyButton);
    }
    function buildIcon(ambiguousIconString) {
      var tmpIcon;
      if (ambiguousIconString.match(/[&;=<>"']/)) {
        tmpIcon = ambiguousIconString;
      } else {
        ambiguousIconString = ambiguousIconString.replace(/(^\s*|\s*$)/g, "");
        tmpIcon = L.DomUtil.create("span", "");
        if (ambiguousIconString.indexOf("fa-") === 0) {
          L.DomUtil.addClass(tmpIcon, "fa " + ambiguousIconString);
        } else if (ambiguousIconString.indexOf("glyphicon-") === 0) {
          L.DomUtil.addClass(tmpIcon, "glyphicon " + ambiguousIconString);
        } else {
          L.DomUtil.addClass(tmpIcon, ambiguousIconString);
        }
        tmpIcon = tmpIcon.outerHTML;
      }
      return tmpIcon;
    }
  })();

  // frappe/public/js/lib/leaflet_draw/leaflet.draw.js
  !function(t, e, i2) {
    function o(t2, e2) {
      for (; (t2 = t2.parentElement) && !t2.classList.contains(e2); )
        ;
      return t2;
    }
    L.drawVersion = "0.4.12", L.Draw = {}, L.drawLocal = {
      draw: {
        toolbar: {
          actions: {
            title: "Cancel drawing",
            text: "Cancel"
          },
          finish: {
            title: "Finish drawing",
            text: "Finish"
          },
          undo: {
            title: "Delete last point drawn",
            text: "Delete last point"
          },
          buttons: {
            polyline: "Draw a polyline",
            polygon: "Draw a polygon",
            rectangle: "Draw a rectangle",
            circle: "Draw a circle",
            marker: "Draw a marker",
            circlemarker: "Draw a circlemarker"
          }
        },
        handlers: {
          circle: {
            tooltip: {
              start: "Click and drag to draw circle."
            },
            radius: "Radius"
          },
          circlemarker: {
            tooltip: {
              start: "Click map to place circle marker."
            }
          },
          marker: {
            tooltip: {
              start: "Click map to place marker."
            }
          },
          polygon: {
            tooltip: {
              start: "Click to start drawing shape.",
              cont: "Click to continue drawing shape.",
              end: "Click first point to close this shape."
            }
          },
          polyline: {
            error: "<strong>Error:</strong> shape edges cannot cross!",
            tooltip: {
              start: "Click to start drawing line.",
              cont: "Click to continue drawing line.",
              end: "Click last point to finish line."
            }
          },
          rectangle: {
            tooltip: {
              start: "Click and drag to draw rectangle."
            }
          },
          simpleshape: {
            tooltip: {
              end: "Release mouse to finish drawing."
            }
          }
        }
      },
      edit: {
        toolbar: {
          actions: {
            save: {
              title: "Save changes",
              text: "Save"
            },
            cancel: {
              title: "Cancel editing, discards all changes",
              text: "Cancel"
            },
            clearAll: {
              title: "Clear all layers",
              text: "Clear All"
            }
          },
          buttons: {
            edit: "Edit layers",
            editDisabled: "No layers to edit",
            remove: "Delete layers",
            removeDisabled: "No layers to delete"
          }
        },
        handlers: {
          edit: {
            tooltip: {
              text: "Drag handles or markers to edit features.",
              subtext: "Click cancel to undo changes."
            }
          },
          remove: {
            tooltip: {
              text: "Click on a feature to remove."
            }
          }
        }
      }
    }, L.Draw.Event = {}, L.Draw.Event.CREATED = "draw:created", L.Draw.Event.EDITED = "draw:edited", L.Draw.Event.DELETED = "draw:deleted", L.Draw.Event.DRAWSTART = "draw:drawstart", L.Draw.Event.DRAWSTOP = "draw:drawstop", L.Draw.Event.DRAWVERTEX = "draw:drawvertex", L.Draw.Event.EDITSTART = "draw:editstart", L.Draw.Event.EDITMOVE = "draw:editmove", L.Draw.Event.EDITRESIZE = "draw:editresize", L.Draw.Event.EDITVERTEX = "draw:editvertex", L.Draw.Event.EDITSTOP = "draw:editstop", L.Draw.Event.DELETESTART = "draw:deletestart", L.Draw.Event.DELETESTOP = "draw:deletestop", L.Draw = L.Draw || {}, L.Draw.Feature = L.Handler.extend({
      initialize: function(t2, e2) {
        this._map = t2, this._container = t2._container, this._overlayPane = t2._panes.overlayPane, this._popupPane = t2._panes.popupPane, e2 && e2.shapeOptions && (e2.shapeOptions = L.Util.extend({}, this.options.shapeOptions, e2.shapeOptions)), L.setOptions(this, e2);
        var version = L.version.split(".");
        if (parseInt(version[0], 10) === 1 && parseInt(version[1], 10) >= 2) {
          L.Draw.Feature.include(L.Evented.prototype);
        } else {
          L.Draw.Feature.include(L.Mixin.Events);
        }
      },
      enable: function() {
        this._enabled || (L.Handler.prototype.enable.call(this), this.fire("enabled", {
          handler: this.type
        }), this._map.fire(L.Draw.Event.DRAWSTART, {
          layerType: this.type
        }));
      },
      disable: function() {
        this._enabled && (L.Handler.prototype.disable.call(this), this._map.fire(L.Draw.Event.DRAWSTOP, {
          layerType: this.type
        }), this.fire("disabled", {
          handler: this.type
        }));
      },
      addHooks: function() {
        var t2 = this._map;
        t2 && (L.DomUtil.disableTextSelection(), t2.getContainer().focus(), this._tooltip = new L.Draw.Tooltip(this._map), L.DomEvent.on(this._container, "keyup", this._cancelDrawing, this));
      },
      removeHooks: function() {
        this._map && (L.DomUtil.enableTextSelection(), this._tooltip.dispose(), this._tooltip = null, L.DomEvent.off(this._container, "keyup", this._cancelDrawing, this));
      },
      setOptions: function(t2) {
        L.setOptions(this, t2);
      },
      _fireCreatedEvent: function(t2) {
        this._map.fire(L.Draw.Event.CREATED, {
          layer: t2,
          layerType: this.type
        });
      },
      _cancelDrawing: function(t2) {
        27 === t2.keyCode && (this._map.fire("draw:canceled", {
          layerType: this.type
        }), this.disable());
      }
    }), L.Draw.Polyline = L.Draw.Feature.extend({
      statics: {
        TYPE: "polyline"
      },
      Poly: L.Polyline,
      options: {
        allowIntersection: true,
        repeatMode: false,
        drawError: {
          color: "#b00b00",
          timeout: 2500
        },
        icon: new L.DivIcon({
          iconSize: new L.Point(8, 8),
          className: "leaflet-div-icon leaflet-editing-icon"
        }),
        touchIcon: new L.DivIcon({
          iconSize: new L.Point(20, 20),
          className: "leaflet-div-icon leaflet-editing-icon leaflet-touch-icon"
        }),
        guidelineDistance: 20,
        maxGuideLineLength: 4e3,
        shapeOptions: {
          stroke: true,
          color: "#3388ff",
          weight: 4,
          opacity: 0.5,
          fill: false,
          clickable: true
        },
        metric: true,
        feet: true,
        nautic: false,
        showLength: true,
        zIndexOffset: 2e3,
        factor: 1
      },
      initialize: function(t2, e2) {
        L.Browser.touch && (this.options.icon = this.options.touchIcon), this.options.drawError.message = L.drawLocal.draw.handlers.polyline.error, e2 && e2.drawError && (e2.drawError = L.Util.extend({}, this.options.drawError, e2.drawError)), this.type = L.Draw.Polyline.TYPE, L.Draw.Feature.prototype.initialize.call(this, t2, e2);
      },
      addHooks: function() {
        L.Draw.Feature.prototype.addHooks.call(this), this._map && (this._markers = [], this._markerGroup = new L.LayerGroup(), this._map.addLayer(this._markerGroup), this._poly = new L.Polyline([], this.options.shapeOptions), this._tooltip.updateContent(this._getTooltipText()), this._mouseMarker || (this._mouseMarker = L.marker(this._map.getCenter(), {
          icon: L.divIcon({
            className: "leaflet-mouse-marker",
            iconAnchor: [20, 20],
            iconSize: [40, 40]
          }),
          opacity: 0,
          zIndexOffset: this.options.zIndexOffset
        })), this._mouseMarker.on("mouseout", this._onMouseOut, this).on("mousemove", this._onMouseMove, this).on("mousedown", this._onMouseDown, this).on("mouseup", this._onMouseUp, this).addTo(this._map), this._map.on("mouseup", this._onMouseUp, this).on("mousemove", this._onMouseMove, this).on("zoomlevelschange", this._onZoomEnd, this).on("touchstart", this._onTouch, this).on("zoomend", this._onZoomEnd, this));
      },
      removeHooks: function() {
        L.Draw.Feature.prototype.removeHooks.call(this), this._clearHideErrorTimeout(), this._cleanUpShape(), this._map.removeLayer(this._markerGroup), delete this._markerGroup, delete this._markers, this._map.removeLayer(this._poly), delete this._poly, this._mouseMarker.off("mousedown", this._onMouseDown, this).off("mouseout", this._onMouseOut, this).off("mouseup", this._onMouseUp, this).off("mousemove", this._onMouseMove, this), this._map.removeLayer(this._mouseMarker), delete this._mouseMarker, this._clearGuides(), this._map.off("mouseup", this._onMouseUp, this).off("mousemove", this._onMouseMove, this).off("zoomlevelschange", this._onZoomEnd, this).off("zoomend", this._onZoomEnd, this).off("touchstart", this._onTouch, this).off("click", this._onTouch, this);
      },
      deleteLastVertex: function() {
        if (!(this._markers.length <= 1)) {
          var t2 = this._markers.pop(), e2 = this._poly, i3 = e2.getLatLngs(), o2 = i3.splice(-1, 1)[0];
          this._poly.setLatLngs(i3), this._markerGroup.removeLayer(t2), e2.getLatLngs().length < 2 && this._map.removeLayer(e2), this._vertexChanged(o2, false);
        }
      },
      addVertex: function(t2) {
        if (this._markers.length >= 2 && !this.options.allowIntersection && this._poly.newLatLngIntersects(t2))
          return void this._showErrorTooltip();
        this._errorShown && this._hideErrorTooltip(), this._markers.push(this._createMarker(t2)), this._poly.addLatLng(t2), 2 === this._poly.getLatLngs().length && this._map.addLayer(this._poly), this._vertexChanged(t2, true);
      },
      completeShape: function() {
        this._markers.length <= 1 || (this._fireCreatedEvent(), this.disable(), this.options.repeatMode && this.enable());
      },
      _finishShape: function() {
        var t2 = this._poly._defaultShape ? this._poly._defaultShape() : this._poly.getLatLngs(), e2 = this._poly.newLatLngIntersects(t2[t2.length - 1]);
        if (!this.options.allowIntersection && e2 || !this._shapeIsValid())
          return void this._showErrorTooltip();
        this._fireCreatedEvent(), this.disable(), this.options.repeatMode && this.enable();
      },
      _shapeIsValid: function() {
        return true;
      },
      _onZoomEnd: function() {
        null !== this._markers && this._updateGuide();
      },
      _onMouseMove: function(t2) {
        var e2 = this._map.mouseEventToLayerPoint(t2.originalEvent), i3 = this._map.layerPointToLatLng(e2);
        this._currentLatLng = i3, this._updateTooltip(i3), this._updateGuide(e2), this._mouseMarker.setLatLng(i3), L.DomEvent.preventDefault(t2.originalEvent);
      },
      _vertexChanged: function(t2, e2) {
        this._map.fire(L.Draw.Event.DRAWVERTEX, {
          layers: this._markerGroup
        }), this._updateFinishHandler(), this._updateRunningMeasure(t2, e2), this._clearGuides(), this._updateTooltip();
      },
      _onMouseDown: function(t2) {
        if (!this._clickHandled && !this._touchHandled && !this._disableMarkers) {
          this._onMouseMove(t2), this._clickHandled = true, this._disableNewMarkers();
          var e2 = t2.originalEvent, i3 = e2.clientX, o2 = e2.clientY;
          this._startPoint.call(this, i3, o2);
        }
      },
      _startPoint: function(t2, e2) {
        this._mouseDownOrigin = L.point(t2, e2);
      },
      _onMouseUp: function(t2) {
        var e2 = t2.originalEvent, i3 = e2.clientX, o2 = e2.clientY;
        this._endPoint.call(this, i3, o2, t2), this._clickHandled = null;
      },
      _endPoint: function(e2, i3, o2) {
        if (this._mouseDownOrigin) {
          var n = L.point(e2, i3).distanceTo(this._mouseDownOrigin);
          this._calculateFinishDistance(o2.latlng) < 10 && L.Browser.touch ? this._finishShape() : Math.abs(n) < 9 * (t.devicePixelRatio || 1) && this.addVertex(o2.latlng), this._enableNewMarkers();
        }
        this._mouseDownOrigin = null;
      },
      _onTouch: function(t2) {
        var e2, i3, o2 = t2.originalEvent;
        !o2.touches || !o2.touches[0] || this._clickHandled || this._touchHandled || this._disableMarkers || (e2 = o2.touches[0].clientX, i3 = o2.touches[0].clientY, this._disableNewMarkers(), this._touchHandled = true, this._startPoint.call(this, e2, i3), this._endPoint.call(this, e2, i3, t2), this._touchHandled = null), this._clickHandled = null;
      },
      _onMouseOut: function() {
        this._tooltip && this._tooltip._onMouseOut.call(this._tooltip);
      },
      _calculateFinishDistance: function(t2) {
        var e2;
        if (this._markers.length > 0) {
          var i3;
          if (this.type === L.Draw.Polyline.TYPE)
            i3 = this._markers[this._markers.length - 1];
          else {
            if (this.type !== L.Draw.Polygon.TYPE)
              return 1 / 0;
            i3 = this._markers[0];
          }
          var o2 = this._map.latLngToContainerPoint(i3.getLatLng()), n = new L.Marker(t2, {
            icon: this.options.icon,
            zIndexOffset: 2 * this.options.zIndexOffset
          }), a = this._map.latLngToContainerPoint(n.getLatLng());
          e2 = o2.distanceTo(a);
        } else
          e2 = 1 / 0;
        return e2;
      },
      _updateFinishHandler: function() {
        var t2 = this._markers.length;
        t2 > 1 && this._markers[t2 - 1].on("click", this._finishShape, this), t2 > 2 && this._markers[t2 - 2].off("click", this._finishShape, this);
      },
      _createMarker: function(t2) {
        var e2 = new L.Marker(t2, {
          icon: this.options.icon,
          zIndexOffset: 2 * this.options.zIndexOffset
        });
        return this._markerGroup.addLayer(e2), e2;
      },
      _updateGuide: function(t2) {
        var e2 = this._markers ? this._markers.length : 0;
        e2 > 0 && (t2 = t2 || this._map.latLngToLayerPoint(this._currentLatLng), this._clearGuides(), this._drawGuide(this._map.latLngToLayerPoint(this._markers[e2 - 1].getLatLng()), t2));
      },
      _updateTooltip: function(t2) {
        var e2 = this._getTooltipText();
        t2 && this._tooltip.updatePosition(t2), this._errorShown || this._tooltip.updateContent(e2);
      },
      _drawGuide: function(t2, e2) {
        var i3, o2, n, a = Math.floor(Math.sqrt(Math.pow(e2.x - t2.x, 2) + Math.pow(e2.y - t2.y, 2))), s = this.options.guidelineDistance, r = this.options.maxGuideLineLength, l = a > r ? a - r : s;
        for (this._guidesContainer || (this._guidesContainer = L.DomUtil.create("div", "leaflet-draw-guides", this._overlayPane)); l < a; l += this.options.guidelineDistance)
          i3 = l / a, o2 = {
            x: Math.floor(t2.x * (1 - i3) + i3 * e2.x),
            y: Math.floor(t2.y * (1 - i3) + i3 * e2.y)
          }, n = L.DomUtil.create("div", "leaflet-draw-guide-dash", this._guidesContainer), n.style.backgroundColor = this._errorShown ? this.options.drawError.color : this.options.shapeOptions.color, L.DomUtil.setPosition(n, o2);
      },
      _updateGuideColor: function(t2) {
        if (this._guidesContainer)
          for (var e2 = 0, i3 = this._guidesContainer.childNodes.length; e2 < i3; e2++)
            this._guidesContainer.childNodes[e2].style.backgroundColor = t2;
      },
      _clearGuides: function() {
        if (this._guidesContainer)
          for (; this._guidesContainer.firstChild; )
            this._guidesContainer.removeChild(this._guidesContainer.firstChild);
      },
      _getTooltipText: function() {
        var t2, e2, i3 = this.options.showLength;
        return L.Browser.touch && (i3 = false), 0 === this._markers.length ? t2 = {
          text: L.drawLocal.draw.handlers.polyline.tooltip.start
        } : (e2 = i3 ? this._getMeasurementString() : "", t2 = 1 === this._markers.length ? {
          text: L.drawLocal.draw.handlers.polyline.tooltip.cont,
          subtext: e2
        } : {
          text: L.drawLocal.draw.handlers.polyline.tooltip.end,
          subtext: e2
        }), t2;
      },
      _updateRunningMeasure: function(t2, e2) {
        var i3, o2, n = this._markers.length;
        1 === this._markers.length ? this._measurementRunningTotal = 0 : (i3 = n - (e2 ? 2 : 1), o2 = this._map.distance(t2, this._markers[i3].getLatLng()) * (this.options.factor || 1), this._measurementRunningTotal += o2 * (e2 ? 1 : -1));
      },
      _getMeasurementString: function() {
        var t2, e2 = this._currentLatLng, i3 = this._markers[this._markers.length - 1].getLatLng();
        return t2 = i3 && e2 ? this._measurementRunningTotal + this._map.distance(e2, i3) * (this.options.factor || 1) : this._measurementRunningTotal || 0, L.GeometryUtil.readableDistance(t2, this.options.metric, this.options.feet, this.options.nautic, this.options.precision);
      },
      _showErrorTooltip: function() {
        this._errorShown = true, this._tooltip.showAsError().updateContent({
          text: this.options.drawError.message
        }), this._updateGuideColor(this.options.drawError.color), this._poly.setStyle({
          color: this.options.drawError.color
        }), this._clearHideErrorTimeout(), this._hideErrorTimeout = setTimeout(L.Util.bind(this._hideErrorTooltip, this), this.options.drawError.timeout);
      },
      _hideErrorTooltip: function() {
        this._errorShown = false, this._clearHideErrorTimeout(), this._tooltip.removeError().updateContent(this._getTooltipText()), this._updateGuideColor(this.options.shapeOptions.color), this._poly.setStyle({
          color: this.options.shapeOptions.color
        });
      },
      _clearHideErrorTimeout: function() {
        this._hideErrorTimeout && (clearTimeout(this._hideErrorTimeout), this._hideErrorTimeout = null);
      },
      _disableNewMarkers: function() {
        this._disableMarkers = true;
      },
      _enableNewMarkers: function() {
        setTimeout(function() {
          this._disableMarkers = false;
        }.bind(this), 50);
      },
      _cleanUpShape: function() {
        this._markers.length > 1 && this._markers[this._markers.length - 1].off("click", this._finishShape, this);
      },
      _fireCreatedEvent: function() {
        var t2 = new this.Poly(this._poly.getLatLngs(), this.options.shapeOptions);
        L.Draw.Feature.prototype._fireCreatedEvent.call(this, t2);
      }
    }), L.Draw.Polygon = L.Draw.Polyline.extend({
      statics: {
        TYPE: "polygon"
      },
      Poly: L.Polygon,
      options: {
        showArea: false,
        showLength: false,
        shapeOptions: {
          stroke: true,
          color: "#3388ff",
          weight: 4,
          opacity: 0.5,
          fill: true,
          fillColor: null,
          fillOpacity: 0.2,
          clickable: true
        },
        metric: true,
        feet: true,
        nautic: false,
        precision: {}
      },
      initialize: function(t2, e2) {
        L.Draw.Polyline.prototype.initialize.call(this, t2, e2), this.type = L.Draw.Polygon.TYPE;
      },
      _updateFinishHandler: function() {
        var t2 = this._markers.length;
        1 === t2 && this._markers[0].on("click", this._finishShape, this), t2 > 2 && (this._markers[t2 - 1].on("dblclick", this._finishShape, this), t2 > 3 && this._markers[t2 - 2].off("dblclick", this._finishShape, this));
      },
      _getTooltipText: function() {
        var t2, e2;
        return 0 === this._markers.length ? t2 = L.drawLocal.draw.handlers.polygon.tooltip.start : this._markers.length < 3 ? (t2 = L.drawLocal.draw.handlers.polygon.tooltip.cont, e2 = this._getMeasurementString()) : (t2 = L.drawLocal.draw.handlers.polygon.tooltip.end, e2 = this._getMeasurementString()), {
          text: t2,
          subtext: e2
        };
      },
      _getMeasurementString: function() {
        var t2 = this._area, e2 = "";
        return t2 || this.options.showLength ? (this.options.showLength && (e2 = L.Draw.Polyline.prototype._getMeasurementString.call(this)), t2 && (e2 += "<br>" + L.GeometryUtil.readableArea(t2, this.options.metric, this.options.precision)), e2) : null;
      },
      _shapeIsValid: function() {
        return this._markers.length >= 3;
      },
      _vertexChanged: function(t2, e2) {
        var i3;
        !this.options.allowIntersection && this.options.showArea && (i3 = this._poly.getLatLngs(), this._area = L.GeometryUtil.geodesicArea(i3)), L.Draw.Polyline.prototype._vertexChanged.call(this, t2, e2);
      },
      _cleanUpShape: function() {
        var t2 = this._markers.length;
        t2 > 0 && (this._markers[0].off("click", this._finishShape, this), t2 > 2 && this._markers[t2 - 1].off("dblclick", this._finishShape, this));
      }
    }), L.SimpleShape = {}, L.Draw.SimpleShape = L.Draw.Feature.extend({
      options: {
        repeatMode: false
      },
      initialize: function(t2, e2) {
        this._endLabelText = L.drawLocal.draw.handlers.simpleshape.tooltip.end, L.Draw.Feature.prototype.initialize.call(this, t2, e2);
      },
      addHooks: function() {
        L.Draw.Feature.prototype.addHooks.call(this), this._map && (this._mapDraggable = this._map.dragging.enabled(), this._mapDraggable && this._map.dragging.disable(), this._container.style.cursor = "crosshair", this._tooltip.updateContent({
          text: this._initialLabelText
        }), this._map.on("mousedown", this._onMouseDown, this).on("mousemove", this._onMouseMove, this).on("touchstart", this._onMouseDown, this).on("touchmove", this._onMouseMove, this));
      },
      removeHooks: function() {
        L.Draw.Feature.prototype.removeHooks.call(this), this._map && (this._mapDraggable && this._map.dragging.enable(), this._container.style.cursor = "", this._map.off("mousedown", this._onMouseDown, this).off("mousemove", this._onMouseMove, this).off("touchstart", this._onMouseDown, this).off("touchmove", this._onMouseMove, this), L.DomEvent.off(e, "mouseup", this._onMouseUp, this), L.DomEvent.off(e, "touchend", this._onMouseUp, this), this._shape && (this._map.removeLayer(this._shape), delete this._shape)), this._isDrawing = false;
      },
      _getTooltipText: function() {
        return {
          text: this._endLabelText
        };
      },
      _onMouseDown: function(t2) {
        this._isDrawing = true, this._startLatLng = t2.latlng, L.DomEvent.on(e, "mouseup", this._onMouseUp, this).on(e, "touchend", this._onMouseUp, this).preventDefault(t2.originalEvent);
      },
      _onMouseMove: function(t2) {
        var e2 = t2.latlng;
        this._tooltip.updatePosition(e2), this._isDrawing && (this._tooltip.updateContent(this._getTooltipText()), this._drawShape(e2));
      },
      _onMouseUp: function() {
        this._shape && this._fireCreatedEvent(), this.disable(), this.options.repeatMode && this.enable();
      }
    }), L.Draw.Rectangle = L.Draw.SimpleShape.extend({
      statics: {
        TYPE: "rectangle"
      },
      options: {
        shapeOptions: {
          stroke: true,
          color: "#3388ff",
          weight: 4,
          opacity: 0.5,
          fill: true,
          fillColor: null,
          fillOpacity: 0.2,
          showArea: true,
          clickable: true
        },
        metric: true
      },
      initialize: function(t2, e2) {
        this.type = L.Draw.Rectangle.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.rectangle.tooltip.start, L.Draw.SimpleShape.prototype.initialize.call(this, t2, e2);
      },
      disable: function() {
        this._enabled && (this._isCurrentlyTwoClickDrawing = false, L.Draw.SimpleShape.prototype.disable.call(this));
      },
      _onMouseUp: function(t2) {
        if (!this._shape && !this._isCurrentlyTwoClickDrawing)
          return void (this._isCurrentlyTwoClickDrawing = true);
        this._isCurrentlyTwoClickDrawing && !o(t2.target, "leaflet-pane") || L.Draw.SimpleShape.prototype._onMouseUp.call(this);
      },
      _drawShape: function(t2) {
        this._shape ? this._shape.setBounds(new L.LatLngBounds(this._startLatLng, t2)) : (this._shape = new L.Rectangle(new L.LatLngBounds(this._startLatLng, t2), this.options.shapeOptions), this._map.addLayer(this._shape));
      },
      _fireCreatedEvent: function() {
        var t2 = new L.Rectangle(this._shape.getBounds(), this.options.shapeOptions);
        L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this, t2);
      },
      _getTooltipText: function() {
        var t2, e2, i3, o2 = L.Draw.SimpleShape.prototype._getTooltipText.call(this), n = this._shape, a = this.options.showArea;
        return n && (t2 = this._shape._defaultShape ? this._shape._defaultShape() : this._shape.getLatLngs(), e2 = L.GeometryUtil.geodesicArea(t2), i3 = a ? L.GeometryUtil.readableArea(e2, this.options.metric) : ""), {
          text: o2.text,
          subtext: i3
        };
      }
    }), L.Draw.Marker = L.Draw.Feature.extend({
      statics: {
        TYPE: "marker"
      },
      options: {
        icon: new L.Icon.Default(),
        repeatMode: false,
        zIndexOffset: 2e3
      },
      initialize: function(t2, e2) {
        this.type = L.Draw.Marker.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.marker.tooltip.start, L.Draw.Feature.prototype.initialize.call(this, t2, e2);
      },
      addHooks: function() {
        L.Draw.Feature.prototype.addHooks.call(this), this._map && (this._tooltip.updateContent({
          text: this._initialLabelText
        }), this._mouseMarker || (this._mouseMarker = L.marker(this._map.getCenter(), {
          icon: L.divIcon({
            className: "leaflet-mouse-marker",
            iconAnchor: [20, 20],
            iconSize: [40, 40]
          }),
          opacity: 0,
          zIndexOffset: this.options.zIndexOffset
        })), this._mouseMarker.on("click", this._onClick, this).addTo(this._map), this._map.on("mousemove", this._onMouseMove, this), this._map.on("click", this._onTouch, this));
      },
      removeHooks: function() {
        L.Draw.Feature.prototype.removeHooks.call(this), this._map && (this._marker && (this._marker.off("click", this._onClick, this), this._map.off("click", this._onClick, this).off("click", this._onTouch, this).removeLayer(this._marker), delete this._marker), this._mouseMarker.off("click", this._onClick, this), this._map.removeLayer(this._mouseMarker), delete this._mouseMarker, this._map.off("mousemove", this._onMouseMove, this));
      },
      _onMouseMove: function(t2) {
        var e2 = t2.latlng;
        this._tooltip.updatePosition(e2), this._mouseMarker.setLatLng(e2), this._marker ? (e2 = this._mouseMarker.getLatLng(), this._marker.setLatLng(e2)) : (this._marker = this._createMarker(e2), this._marker.on("click", this._onClick, this), this._map.on("click", this._onClick, this).addLayer(this._marker));
      },
      _createMarker: function(t2) {
        return new L.Marker(t2, {
          icon: this.options.icon,
          zIndexOffset: this.options.zIndexOffset
        });
      },
      _onClick: function() {
        this._fireCreatedEvent(), this.disable(), this.options.repeatMode && this.enable();
      },
      _onTouch: function(t2) {
        this._onMouseMove(t2), this._onClick();
      },
      _fireCreatedEvent: function() {
        var t2 = new L.Marker.Touch(this._marker.getLatLng(), {
          icon: this.options.icon
        });
        L.Draw.Feature.prototype._fireCreatedEvent.call(this, t2);
      }
    }), L.Draw.CircleMarker = L.Draw.Marker.extend({
      statics: {
        TYPE: "circlemarker"
      },
      options: {
        stroke: true,
        color: "#3388ff",
        weight: 4,
        opacity: 0.5,
        fill: true,
        fillColor: null,
        fillOpacity: 0.2,
        clickable: true,
        zIndexOffset: 2e3
      },
      initialize: function(t2, e2) {
        this.type = L.Draw.CircleMarker.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.circlemarker.tooltip.start, L.Draw.Feature.prototype.initialize.call(this, t2, e2);
      },
      _fireCreatedEvent: function() {
        var t2 = new L.CircleMarker(this._marker.getLatLng(), this.options);
        L.Draw.Feature.prototype._fireCreatedEvent.call(this, t2);
      },
      _createMarker: function(t2) {
        return new L.CircleMarker(t2, this.options);
      }
    }), L.Draw.Circle = L.Draw.SimpleShape.extend({
      statics: {
        TYPE: "circle"
      },
      options: {
        shapeOptions: {
          stroke: true,
          color: "#3388ff",
          weight: 4,
          opacity: 0.5,
          fill: true,
          fillColor: null,
          fillOpacity: 0.2,
          clickable: true
        },
        showRadius: true,
        metric: true,
        feet: true,
        nautic: false
      },
      initialize: function(t2, e2) {
        this.type = L.Draw.Circle.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.circle.tooltip.start, L.Draw.SimpleShape.prototype.initialize.call(this, t2, e2);
      },
      _drawShape: function(t2) {
        var e2 = this._map.distance(this._startLatLng, t2);
        this._shape ? this._shape.setRadius(e2) : (this._shape = new L.Circle(this._startLatLng, e2, this.options.shapeOptions), this._map.addLayer(this._shape));
      },
      _fireCreatedEvent: function() {
        var t2 = new L.Circle(this._startLatLng, this._shape.getRadius(), this.options.shapeOptions);
        L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this, t2);
      },
      _onMouseMove: function(t2) {
        var e2, i3 = t2.latlng, o2 = this.options.showRadius, n = this.options.metric;
        if (this._tooltip.updatePosition(i3), this._isDrawing) {
          this._drawShape(i3), e2 = this._shape.getRadius().toFixed(1);
          var a = "";
          o2 && (a = L.drawLocal.draw.handlers.circle.radius + ": " + L.GeometryUtil.readableDistance(e2, n, this.options.feet, this.options.nautic)), this._tooltip.updateContent({
            text: this._endLabelText,
            subtext: a
          });
        }
      }
    }), L.Edit = L.Edit || {}, L.Edit.Marker = L.Handler.extend({
      initialize: function(t2, e2) {
        this._marker = t2, L.setOptions(this, e2);
      },
      addHooks: function() {
        var t2 = this._marker;
        t2.dragging.enable(), t2.on("dragend", this._onDragEnd, t2), this._toggleMarkerHighlight();
      },
      removeHooks: function() {
        var t2 = this._marker;
        t2.dragging.disable(), t2.off("dragend", this._onDragEnd, t2), this._toggleMarkerHighlight();
      },
      _onDragEnd: function(t2) {
        var e2 = t2.target;
        e2.edited = true, this._map.fire(L.Draw.Event.EDITMOVE, {
          layer: e2
        });
      },
      _toggleMarkerHighlight: function() {
        var t2 = this._marker._icon;
        t2 && (t2.style.display = "none", L.DomUtil.hasClass(t2, "leaflet-edit-marker-selected") ? (L.DomUtil.removeClass(t2, "leaflet-edit-marker-selected"), this._offsetMarker(t2, -4)) : (L.DomUtil.addClass(t2, "leaflet-edit-marker-selected"), this._offsetMarker(t2, 4)), t2.style.display = "");
      },
      _offsetMarker: function(t2, e2) {
        var i3 = parseInt(t2.style.marginTop, 10) - e2, o2 = parseInt(t2.style.marginLeft, 10) - e2;
        t2.style.marginTop = i3 + "px", t2.style.marginLeft = o2 + "px";
      }
    }), L.Marker.addInitHook(function() {
      L.Edit.Marker && (this.editing = new L.Edit.Marker(this), this.options.editable && this.editing.enable());
    }), L.Edit = L.Edit || {}, L.Edit.Poly = L.Handler.extend({
      options: {},
      initialize: function(t2, e2) {
        this.latlngs = [t2._latlngs], t2._holes && (this.latlngs = this.latlngs.concat(t2._holes)), this._poly = t2, L.setOptions(this, e2), this._poly.on("revert-edited", this._updateLatLngs, this);
      },
      _defaultShape: function() {
        return L.Polyline._flat ? L.Polyline._flat(this._poly._latlngs) ? this._poly._latlngs : this._poly._latlngs[0] : this._poly._latlngs;
      },
      _eachVertexHandler: function(t2) {
        for (var e2 = 0; e2 < this._verticesHandlers.length; e2++)
          t2(this._verticesHandlers[e2]);
      },
      addHooks: function() {
        this._initHandlers(), this._eachVertexHandler(function(t2) {
          t2.addHooks();
        });
      },
      removeHooks: function() {
        this._eachVertexHandler(function(t2) {
          t2.removeHooks();
        });
      },
      updateMarkers: function() {
        this._eachVertexHandler(function(t2) {
          t2.updateMarkers();
        });
      },
      _initHandlers: function() {
        this._verticesHandlers = [];
        for (var t2 = 0; t2 < this.latlngs.length; t2++)
          this._verticesHandlers.push(new L.Edit.PolyVerticesEdit(this._poly, this.latlngs[t2], this.options));
      },
      _updateLatLngs: function(t2) {
        this.latlngs = [t2.layer._latlngs], t2.layer._holes && (this.latlngs = this.latlngs.concat(t2.layer._holes));
      }
    }), L.Edit.PolyVerticesEdit = L.Handler.extend({
      options: {
        icon: new L.DivIcon({
          iconSize: new L.Point(8, 8),
          className: "leaflet-div-icon leaflet-editing-icon"
        }),
        touchIcon: new L.DivIcon({
          iconSize: new L.Point(20, 20),
          className: "leaflet-div-icon leaflet-editing-icon leaflet-touch-icon"
        }),
        drawError: {
          color: "#b00b00",
          timeout: 1e3
        }
      },
      initialize: function(t2, e2, i3) {
        L.Browser.touch && (this.options.icon = this.options.touchIcon), this._poly = t2, i3 && i3.drawError && (i3.drawError = L.Util.extend({}, this.options.drawError, i3.drawError)), this._latlngs = e2, L.setOptions(this, i3);
      },
      _defaultShape: function() {
        return L.Polyline._flat ? L.Polyline._flat(this._latlngs) ? this._latlngs : this._latlngs[0] : this._latlngs;
      },
      addHooks: function() {
        var t2 = this._poly;
        t2 instanceof L.Polygon || (t2.options.fill = false, t2.options.editing && (t2.options.editing.fill = false)), t2.setStyle(t2.options.editing), this._poly._map && (this._map = this._poly._map, this._markerGroup || this._initMarkers(), this._poly._map.addLayer(this._markerGroup));
      },
      removeHooks: function() {
        var t2 = this._poly;
        t2.setStyle(t2.options.original), t2._map && (t2._map.removeLayer(this._markerGroup), delete this._markerGroup, delete this._markers);
      },
      updateMarkers: function() {
        this._markerGroup.clearLayers(), this._initMarkers();
      },
      _initMarkers: function() {
        this._markerGroup || (this._markerGroup = new L.LayerGroup()), this._markers = [];
        var t2, e2, i3, o2, n = this._defaultShape();
        for (t2 = 0, i3 = n.length; t2 < i3; t2++)
          o2 = this._createMarker(n[t2], t2), o2.on("click", this._onMarkerClick, this), this._markers.push(o2);
        var a, s;
        for (t2 = 0, e2 = i3 - 1; t2 < i3; e2 = t2++)
          (0 !== t2 || L.Polygon && this._poly instanceof L.Polygon) && (a = this._markers[e2], s = this._markers[t2], this._createMiddleMarker(a, s), this._updatePrevNext(a, s));
      },
      _createMarker: function(t2, e2) {
        var i3 = new L.Marker.Touch(t2, {
          draggable: true,
          icon: this.options.icon
        });
        return i3._origLatLng = t2, i3._index = e2, i3.on("dragstart", this._onMarkerDragStart, this).on("drag", this._onMarkerDrag, this).on("dragend", this._fireEdit, this).on("touchmove", this._onTouchMove, this).on("touchend", this._fireEdit, this).on("MSPointerMove", this._onTouchMove, this).on("MSPointerUp", this._fireEdit, this), this._markerGroup.addLayer(i3), i3;
      },
      _onMarkerDragStart: function() {
        this._poly.fire("editstart");
      },
      _spliceLatLngs: function() {
        var t2 = this._defaultShape(), e2 = [].splice.apply(t2, arguments);
        return this._poly._convertLatLngs(t2, true), this._poly.redraw(), e2;
      },
      _removeMarker: function(t2) {
        var e2 = t2._index;
        this._markerGroup.removeLayer(t2), this._markers.splice(e2, 1), this._spliceLatLngs(e2, 1), this._updateIndexes(e2, -1), t2.off("dragstart", this._onMarkerDragStart, this).off("drag", this._onMarkerDrag, this).off("dragend", this._fireEdit, this).off("touchmove", this._onMarkerDrag, this).off("touchend", this._fireEdit, this).off("click", this._onMarkerClick, this).off("MSPointerMove", this._onTouchMove, this).off("MSPointerUp", this._fireEdit, this);
      },
      _fireEdit: function() {
        this._poly.edited = true, this._poly.fire("edit"), this._poly._map.fire(L.Draw.Event.EDITVERTEX, {
          layers: this._markerGroup,
          poly: this._poly
        });
      },
      _onMarkerDrag: function(t2) {
        var e2 = t2.target, i3 = this._poly;
        if (L.extend(e2._origLatLng, e2._latlng), e2._middleLeft && e2._middleLeft.setLatLng(this._getMiddleLatLng(e2._prev, e2)), e2._middleRight && e2._middleRight.setLatLng(this._getMiddleLatLng(e2, e2._next)), i3.options.poly) {
          var o2 = i3._map._editTooltip;
          if (!i3.options.poly.allowIntersection && i3.intersects()) {
            var n = i3.options.color;
            i3.setStyle({
              color: this.options.drawError.color
            }), 0 !== L.version.indexOf("0.7") && e2.dragging._draggable._onUp(t2), this._onMarkerClick(t2), o2 && o2.updateContent({
              text: L.drawLocal.draw.handlers.polyline.error
            }), setTimeout(function() {
              i3.setStyle({
                color: n
              }), o2 && o2.updateContent({
                text: L.drawLocal.edit.handlers.edit.tooltip.text,
                subtext: L.drawLocal.edit.handlers.edit.tooltip.subtext
              });
            }, 1e3);
          }
        }
        this._poly.redraw(), this._poly.fire("editdrag");
      },
      _onMarkerClick: function(t2) {
        var e2 = L.Polygon && this._poly instanceof L.Polygon ? 4 : 3, i3 = t2.target;
        this._defaultShape().length < e2 || (this._removeMarker(i3), this._updatePrevNext(i3._prev, i3._next), i3._middleLeft && this._markerGroup.removeLayer(i3._middleLeft), i3._middleRight && this._markerGroup.removeLayer(i3._middleRight), i3._prev && i3._next ? this._createMiddleMarker(i3._prev, i3._next) : i3._prev ? i3._next || (i3._prev._middleRight = null) : i3._next._middleLeft = null, this._fireEdit());
      },
      _onTouchMove: function(t2) {
        var e2 = this._map.mouseEventToLayerPoint(t2.originalEvent.touches[0]), i3 = this._map.layerPointToLatLng(e2), o2 = t2.target;
        L.extend(o2._origLatLng, i3), o2._middleLeft && o2._middleLeft.setLatLng(this._getMiddleLatLng(o2._prev, o2)), o2._middleRight && o2._middleRight.setLatLng(this._getMiddleLatLng(o2, o2._next)), this._poly.redraw(), this.updateMarkers();
      },
      _updateIndexes: function(t2, e2) {
        this._markerGroup.eachLayer(function(i3) {
          i3._index > t2 && (i3._index += e2);
        });
      },
      _createMiddleMarker: function(t2, e2) {
        var i3, o2, n, a = this._getMiddleLatLng(t2, e2), s = this._createMarker(a);
        s.setOpacity(0.6), t2._middleRight = e2._middleLeft = s, o2 = function() {
          s.off("touchmove", o2, this);
          var n2 = e2._index;
          s._index = n2, s.off("click", i3, this).on("click", this._onMarkerClick, this), a.lat = s.getLatLng().lat, a.lng = s.getLatLng().lng, this._spliceLatLngs(n2, 0, a), this._markers.splice(n2, 0, s), s.setOpacity(1), this._updateIndexes(n2, 1), e2._index++, this._updatePrevNext(t2, s), this._updatePrevNext(s, e2), this._poly.fire("editstart");
        }, n = function() {
          s.off("dragstart", o2, this), s.off("dragend", n, this), s.off("touchmove", o2, this), this._createMiddleMarker(t2, s), this._createMiddleMarker(s, e2);
        }, i3 = function() {
          o2.call(this), n.call(this), this._fireEdit();
        }, s.on("click", i3, this).on("dragstart", o2, this).on("dragend", n, this).on("touchmove", o2, this), this._markerGroup.addLayer(s);
      },
      _updatePrevNext: function(t2, e2) {
        t2 && (t2._next = e2), e2 && (e2._prev = t2);
      },
      _getMiddleLatLng: function(t2, e2) {
        var i3 = this._poly._map, o2 = i3.project(t2.getLatLng()), n = i3.project(e2.getLatLng());
        return i3.unproject(o2._add(n)._divideBy(2));
      }
    }), L.Polyline.addInitHook(function() {
      this.editing || (L.Edit.Poly && (this.editing = new L.Edit.Poly(this, this.options.poly), this.options.editable && this.editing.enable()), this.on("add", function() {
        this.editing && this.editing.enabled() && this.editing.addHooks();
      }), this.on("remove", function() {
        this.editing && this.editing.enabled() && this.editing.removeHooks();
      }));
    }), L.Edit = L.Edit || {}, L.Edit.SimpleShape = L.Handler.extend({
      options: {
        moveIcon: new L.DivIcon({
          iconSize: new L.Point(8, 8),
          className: "leaflet-div-icon leaflet-editing-icon leaflet-edit-move"
        }),
        resizeIcon: new L.DivIcon({
          iconSize: new L.Point(8, 8),
          className: "leaflet-div-icon leaflet-editing-icon leaflet-edit-resize"
        }),
        touchMoveIcon: new L.DivIcon({
          iconSize: new L.Point(20, 20),
          className: "leaflet-div-icon leaflet-editing-icon leaflet-edit-move leaflet-touch-icon"
        }),
        touchResizeIcon: new L.DivIcon({
          iconSize: new L.Point(20, 20),
          className: "leaflet-div-icon leaflet-editing-icon leaflet-edit-resize leaflet-touch-icon"
        })
      },
      initialize: function(t2, e2) {
        L.Browser.touch && (this.options.moveIcon = this.options.touchMoveIcon, this.options.resizeIcon = this.options.touchResizeIcon), this._shape = t2, L.Util.setOptions(this, e2);
      },
      addHooks: function() {
        var t2 = this._shape;
        this._shape._map && (this._map = this._shape._map, t2.setStyle(t2.options.editing), t2._map && (this._map = t2._map, this._markerGroup || this._initMarkers(), this._map.addLayer(this._markerGroup)));
      },
      removeHooks: function() {
        var t2 = this._shape;
        if (t2.setStyle(t2.options.original), t2._map) {
          this._unbindMarker(this._moveMarker);
          for (var e2 = 0, i3 = this._resizeMarkers.length; e2 < i3; e2++)
            this._unbindMarker(this._resizeMarkers[e2]);
          this._resizeMarkers = null, this._map.removeLayer(this._markerGroup), delete this._markerGroup;
        }
        this._map = null;
      },
      updateMarkers: function() {
        this._markerGroup.clearLayers(), this._initMarkers();
      },
      _initMarkers: function() {
        this._markerGroup || (this._markerGroup = new L.LayerGroup()), this._createMoveMarker(), this._createResizeMarker();
      },
      _createMoveMarker: function() {
      },
      _createResizeMarker: function() {
      },
      _createMarker: function(t2, e2) {
        var i3 = new L.Marker.Touch(t2, {
          draggable: true,
          icon: e2,
          zIndexOffset: 10
        });
        return this._bindMarker(i3), this._markerGroup.addLayer(i3), i3;
      },
      _bindMarker: function(t2) {
        t2.on("dragstart", this._onMarkerDragStart, this).on("drag", this._onMarkerDrag, this).on("dragend", this._onMarkerDragEnd, this).on("touchstart", this._onTouchStart, this).on("touchmove", this._onTouchMove, this).on("MSPointerMove", this._onTouchMove, this).on("touchend", this._onTouchEnd, this).on("MSPointerUp", this._onTouchEnd, this);
      },
      _unbindMarker: function(t2) {
        t2.off("dragstart", this._onMarkerDragStart, this).off("drag", this._onMarkerDrag, this).off("dragend", this._onMarkerDragEnd, this).off("touchstart", this._onTouchStart, this).off("touchmove", this._onTouchMove, this).off("MSPointerMove", this._onTouchMove, this).off("touchend", this._onTouchEnd, this).off("MSPointerUp", this._onTouchEnd, this);
      },
      _onMarkerDragStart: function(t2) {
        t2.target.setOpacity(0), this._shape.fire("editstart");
      },
      _fireEdit: function() {
        this._shape.edited = true, this._shape.fire("edit");
      },
      _onMarkerDrag: function(t2) {
        var e2 = t2.target, i3 = e2.getLatLng();
        e2 === this._moveMarker ? this._move(i3) : this._resize(i3), this._shape.redraw(), this._shape.fire("editdrag");
      },
      _onMarkerDragEnd: function(t2) {
        t2.target.setOpacity(1), this._fireEdit();
      },
      _onTouchStart: function(t2) {
        if (L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this, t2), "function" == typeof this._getCorners) {
          var e2 = this._getCorners(), i3 = t2.target, o2 = i3._cornerIndex;
          i3.setOpacity(0), this._oppositeCorner = e2[(o2 + 2) % 4], this._toggleCornerMarkers(0, o2);
        }
        this._shape.fire("editstart");
      },
      _onTouchMove: function(t2) {
        var e2 = this._map.mouseEventToLayerPoint(t2.originalEvent.touches[0]), i3 = this._map.layerPointToLatLng(e2);
        return t2.target === this._moveMarker ? this._move(i3) : this._resize(i3), this._shape.redraw(), false;
      },
      _onTouchEnd: function(t2) {
        t2.target.setOpacity(1), this.updateMarkers(), this._fireEdit();
      },
      _move: function() {
      },
      _resize: function() {
      }
    }), L.Edit = L.Edit || {}, L.Edit.Rectangle = L.Edit.SimpleShape.extend({
      _createMoveMarker: function() {
        var t2 = this._shape.getBounds(), e2 = t2.getCenter();
        this._moveMarker = this._createMarker(e2, this.options.moveIcon);
      },
      _createResizeMarker: function() {
        var t2 = this._getCorners();
        this._resizeMarkers = [];
        for (var e2 = 0, i3 = t2.length; e2 < i3; e2++)
          this._resizeMarkers.push(this._createMarker(t2[e2], this.options.resizeIcon)), this._resizeMarkers[e2]._cornerIndex = e2;
      },
      _onMarkerDragStart: function(t2) {
        L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this, t2);
        var e2 = this._getCorners(), i3 = t2.target, o2 = i3._cornerIndex;
        this._oppositeCorner = e2[(o2 + 2) % 4], this._toggleCornerMarkers(0, o2);
      },
      _onMarkerDragEnd: function(t2) {
        var e2, i3, o2 = t2.target;
        o2 === this._moveMarker && (e2 = this._shape.getBounds(), i3 = e2.getCenter(), o2.setLatLng(i3)), this._toggleCornerMarkers(1), this._repositionCornerMarkers(), L.Edit.SimpleShape.prototype._onMarkerDragEnd.call(this, t2);
      },
      _move: function(t2) {
        for (var e2, i3 = this._shape._defaultShape ? this._shape._defaultShape() : this._shape.getLatLngs(), o2 = this._shape.getBounds(), n = o2.getCenter(), a = [], s = 0, r = i3.length; s < r; s++)
          e2 = [i3[s].lat - n.lat, i3[s].lng - n.lng], a.push([t2.lat + e2[0], t2.lng + e2[1]]);
        this._shape.setLatLngs(a), this._repositionCornerMarkers(), this._map.fire(L.Draw.Event.EDITMOVE, {
          layer: this._shape
        });
      },
      _resize: function(t2) {
        var e2;
        this._shape.setBounds(L.latLngBounds(t2, this._oppositeCorner)), e2 = this._shape.getBounds(), this._moveMarker.setLatLng(e2.getCenter()), this._map.fire(L.Draw.Event.EDITRESIZE, {
          layer: this._shape
        });
      },
      _getCorners: function() {
        var t2 = this._shape.getBounds();
        return [t2.getNorthWest(), t2.getNorthEast(), t2.getSouthEast(), t2.getSouthWest()];
      },
      _toggleCornerMarkers: function(t2) {
        for (var e2 = 0, i3 = this._resizeMarkers.length; e2 < i3; e2++)
          this._resizeMarkers[e2].setOpacity(t2);
      },
      _repositionCornerMarkers: function() {
        for (var t2 = this._getCorners(), e2 = 0, i3 = this._resizeMarkers.length; e2 < i3; e2++)
          this._resizeMarkers[e2].setLatLng(t2[e2]);
      }
    }), L.Rectangle.addInitHook(function() {
      L.Edit.Rectangle && (this.editing = new L.Edit.Rectangle(this), this.options.editable && this.editing.enable());
    }), L.Edit = L.Edit || {}, L.Edit.CircleMarker = L.Edit.SimpleShape.extend({
      _createMoveMarker: function() {
        var t2 = this._shape.getLatLng();
        this._moveMarker = this._createMarker(t2, this.options.moveIcon);
      },
      _createResizeMarker: function() {
        this._resizeMarkers = [];
      },
      _move: function(t2) {
        if (this._resizeMarkers.length) {
          var e2 = this._getResizeMarkerPoint(t2);
          this._resizeMarkers[0].setLatLng(e2);
        }
        this._shape.setLatLng(t2), this._map.fire(L.Draw.Event.EDITMOVE, {
          layer: this._shape
        });
      }
    }), L.CircleMarker.addInitHook(function() {
      L.Edit.CircleMarker && (this.editing = new L.Edit.CircleMarker(this), this.options.editable && this.editing.enable()), this.on("add", function() {
        this.editing && this.editing.enabled() && this.editing.addHooks();
      }), this.on("remove", function() {
        this.editing && this.editing.enabled() && this.editing.removeHooks();
      });
    }), L.Edit = L.Edit || {}, L.Edit.Circle = L.Edit.CircleMarker.extend({
      _createResizeMarker: function() {
        var t2 = this._shape.getLatLng(), e2 = this._getResizeMarkerPoint(t2);
        this._resizeMarkers = [], this._resizeMarkers.push(this._createMarker(e2, this.options.resizeIcon));
      },
      _getResizeMarkerPoint: function(t2) {
        var e2 = this._shape._radius * Math.cos(Math.PI / 4), i3 = this._map.project(t2);
        return this._map.unproject([i3.x + e2, i3.y - e2]);
      },
      _resize: function(t2) {
        var e2 = this._moveMarker.getLatLng(), i3 = this._map.distance(e2, t2);
        this._shape.setRadius(i3), this._map.fire(L.Draw.Event.EDITRESIZE, {
          layer: this._shape
        });
      }
    }), L.Circle.addInitHook(function() {
      L.Edit.Circle && (this.editing = new L.Edit.Circle(this), this.options.editable && this.editing.enable()), this.on("add", function() {
        this.editing && this.editing.enabled() && this.editing.addHooks();
      }), this.on("remove", function() {
        this.editing && this.editing.enabled() && this.editing.removeHooks();
      });
    }), L.Map.mergeOptions({
      touchExtend: true
    }), L.Map.TouchExtend = L.Handler.extend({
      initialize: function(t2) {
        this._map = t2, this._container = t2._container, this._pane = t2._panes.overlayPane;
      },
      addHooks: function() {
        L.DomEvent.on(this._container, "touchstart", this._onTouchStart, this), L.DomEvent.on(this._container, "touchend", this._onTouchEnd, this), L.DomEvent.on(this._container, "touchmove", this._onTouchMove, this), this._detectIE() ? (L.DomEvent.on(this._container, "MSPointerDown", this._onTouchStart, this), L.DomEvent.on(this._container, "MSPointerUp", this._onTouchEnd, this), L.DomEvent.on(this._container, "MSPointerMove", this._onTouchMove, this), L.DomEvent.on(this._container, "MSPointerCancel", this._onTouchCancel, this)) : (L.DomEvent.on(this._container, "touchcancel", this._onTouchCancel, this), L.DomEvent.on(this._container, "touchleave", this._onTouchLeave, this));
      },
      removeHooks: function() {
        L.DomEvent.off(this._container, "touchstart", this._onTouchStart), L.DomEvent.off(this._container, "touchend", this._onTouchEnd), L.DomEvent.off(this._container, "touchmove", this._onTouchMove), this._detectIE() ? (L.DomEvent.off(this._container, "MSPointerDowm", this._onTouchStart), L.DomEvent.off(this._container, "MSPointerUp", this._onTouchEnd), L.DomEvent.off(this._container, "MSPointerMove", this._onTouchMove), L.DomEvent.off(this._container, "MSPointerCancel", this._onTouchCancel)) : (L.DomEvent.off(this._container, "touchcancel", this._onTouchCancel), L.DomEvent.off(this._container, "touchleave", this._onTouchLeave));
      },
      _touchEvent: function(t2, e2) {
        var i3 = {};
        if (void 0 !== t2.touches) {
          if (!t2.touches.length)
            return;
          i3 = t2.touches[0];
        } else {
          if ("touch" !== t2.pointerType)
            return;
          if (i3 = t2, !this._filterClick(t2))
            return;
        }
        var o2 = this._map.mouseEventToContainerPoint(i3), n = this._map.mouseEventToLayerPoint(i3), a = this._map.layerPointToLatLng(n);
        this._map.fire(e2, {
          latlng: a,
          layerPoint: n,
          containerPoint: o2,
          pageX: i3.pageX,
          pageY: i3.pageY,
          originalEvent: t2
        });
      },
      _filterClick: function(t2) {
        var e2 = t2.timeStamp || t2.originalEvent.timeStamp, i3 = L.DomEvent._lastClick && e2 - L.DomEvent._lastClick;
        return i3 && i3 > 100 && i3 < 500 || t2.target._simulatedClick && !t2._simulated ? (L.DomEvent.stop(t2), false) : (L.DomEvent._lastClick = e2, true);
      },
      _onTouchStart: function(t2) {
        if (this._map._loaded) {
          this._touchEvent(t2, "touchstart");
        }
      },
      _onTouchEnd: function(t2) {
        if (this._map._loaded) {
          this._touchEvent(t2, "touchend");
        }
      },
      _onTouchCancel: function(t2) {
        if (this._map._loaded) {
          var e2 = "touchcancel";
          this._detectIE() && (e2 = "pointercancel"), this._touchEvent(t2, e2);
        }
      },
      _onTouchLeave: function(t2) {
        if (this._map._loaded) {
          this._touchEvent(t2, "touchleave");
        }
      },
      _onTouchMove: function(t2) {
        if (this._map._loaded) {
          this._touchEvent(t2, "touchmove");
        }
      },
      _detectIE: function() {
        var e2 = t.navigator.userAgent, i3 = e2.indexOf("MSIE ");
        if (i3 > 0)
          return parseInt(e2.substring(i3 + 5, e2.indexOf(".", i3)), 10);
        if (e2.indexOf("Trident/") > 0) {
          var o2 = e2.indexOf("rv:");
          return parseInt(e2.substring(o2 + 3, e2.indexOf(".", o2)), 10);
        }
        var n = e2.indexOf("Edge/");
        return n > 0 && parseInt(e2.substring(n + 5, e2.indexOf(".", n)), 10);
      }
    }), L.Map.addInitHook("addHandler", "touchExtend", L.Map.TouchExtend), L.Marker.Touch = L.Marker.extend({
      _initInteraction: function() {
        return this.addInteractiveTarget ? L.Marker.prototype._initInteraction.apply(this) : this._initInteractionLegacy();
      },
      _initInteractionLegacy: function() {
        if (this.options.clickable) {
          var t2 = this._icon, e2 = ["dblclick", "mousedown", "mouseover", "mouseout", "contextmenu", "touchstart", "touchend", "touchmove"];
          this._detectIE ? e2.concat(["MSPointerDown", "MSPointerUp", "MSPointerMove", "MSPointerCancel"]) : e2.concat(["touchcancel"]), L.DomUtil.addClass(t2, "leaflet-clickable"), L.DomEvent.on(t2, "click", this._onMouseClick, this), L.DomEvent.on(t2, "keypress", this._onKeyPress, this);
          for (var i3 = 0; i3 < e2.length; i3++)
            L.DomEvent.on(t2, e2[i3], this._fireMouseEvent, this);
          L.Handler.MarkerDrag && (this.dragging = new L.Handler.MarkerDrag(this), this.options.draggable && this.dragging.enable());
        }
      },
      _detectIE: function() {
        var e2 = t.navigator.userAgent, i3 = e2.indexOf("MSIE ");
        if (i3 > 0)
          return parseInt(e2.substring(i3 + 5, e2.indexOf(".", i3)), 10);
        if (e2.indexOf("Trident/") > 0) {
          var o2 = e2.indexOf("rv:");
          return parseInt(e2.substring(o2 + 3, e2.indexOf(".", o2)), 10);
        }
        var n = e2.indexOf("Edge/");
        return n > 0 && parseInt(e2.substring(n + 5, e2.indexOf(".", n)), 10);
      }
    }), L.LatLngUtil = {
      cloneLatLngs: function(t2) {
        for (var e2 = [], i3 = 0, o2 = t2.length; i3 < o2; i3++)
          Array.isArray(t2[i3]) ? e2.push(L.LatLngUtil.cloneLatLngs(t2[i3])) : e2.push(this.cloneLatLng(t2[i3]));
        return e2;
      },
      cloneLatLng: function(t2) {
        return L.latLng(t2.lat, t2.lng);
      }
    }, function() {
      var t2 = {
        km: 2,
        ha: 2,
        m: 0,
        mi: 2,
        ac: 2,
        yd: 0,
        ft: 0,
        nm: 2
      };
      L.GeometryUtil = L.extend(L.GeometryUtil || {}, {
        geodesicArea: function(t3) {
          var e2, i3, o2 = t3.length, n = 0, a = Math.PI / 180;
          if (o2 > 2) {
            for (var s = 0; s < o2; s++)
              e2 = t3[s], i3 = t3[(s + 1) % o2], n += (i3.lng - e2.lng) * a * (2 + Math.sin(e2.lat * a) + Math.sin(i3.lat * a));
            n = 6378137 * n * 6378137 / 2;
          }
          return Math.abs(n);
        },
        formattedNumber: function(t3, e2) {
          var i3 = parseFloat(t3).toFixed(e2), o2 = L.drawLocal.format && L.drawLocal.format.numeric, n = o2 && o2.delimiters, a = n && n.thousands, s = n && n.decimal;
          if (a || s) {
            var r = i3.split(".");
            i3 = a ? r[0].replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1" + a) : r[0], s = s || ".", r.length > 1 && (i3 = i3 + s + r[1]);
          }
          return i3;
        },
        readableArea: function(e2, i3, o2) {
          var n, a, o2 = L.Util.extend({}, t2, o2);
          return i3 ? (a = ["ha", "m"], type = typeof i3, "string" === type ? a = [i3] : "boolean" !== type && (a = i3), n = e2 >= 1e6 && -1 !== a.indexOf("km") ? L.GeometryUtil.formattedNumber(1e-6 * e2, o2.km) + " km\xB2" : e2 >= 1e4 && -1 !== a.indexOf("ha") ? L.GeometryUtil.formattedNumber(1e-4 * e2, o2.ha) + " ha" : L.GeometryUtil.formattedNumber(e2, o2.m) + " m\xB2") : (e2 /= 0.836127, n = e2 >= 3097600 ? L.GeometryUtil.formattedNumber(e2 / 3097600, o2.mi) + " mi\xB2" : e2 >= 4840 ? L.GeometryUtil.formattedNumber(e2 / 4840, o2.ac) + " acres" : L.GeometryUtil.formattedNumber(e2, o2.yd) + " yd\xB2"), n;
        },
        readableDistance: function(e2, i3, o2, n, a) {
          var s, a = L.Util.extend({}, t2, a);
          switch (i3 ? "string" == typeof i3 ? i3 : "metric" : o2 ? "feet" : n ? "nauticalMile" : "yards") {
            case "metric":
              s = e2 > 1e3 ? L.GeometryUtil.formattedNumber(e2 / 1e3, a.km) + " km" : L.GeometryUtil.formattedNumber(e2, a.m) + " m";
              break;
            case "feet":
              e2 *= 3.28083, s = L.GeometryUtil.formattedNumber(e2, a.ft) + " ft";
              break;
            case "nauticalMile":
              e2 *= 0.53996, s = L.GeometryUtil.formattedNumber(e2 / 1e3, a.nm) + " nm";
              break;
            case "yards":
            default:
              e2 *= 1.09361, s = e2 > 1760 ? L.GeometryUtil.formattedNumber(e2 / 1760, a.mi) + " miles" : L.GeometryUtil.formattedNumber(e2, a.yd) + " yd";
          }
          return s;
        }
      });
    }(), L.Util.extend(L.LineUtil, {
      segmentsIntersect: function(t2, e2, i3, o2) {
        return this._checkCounterclockwise(t2, i3, o2) !== this._checkCounterclockwise(e2, i3, o2) && this._checkCounterclockwise(t2, e2, i3) !== this._checkCounterclockwise(t2, e2, o2);
      },
      _checkCounterclockwise: function(t2, e2, i3) {
        return (i3.y - t2.y) * (e2.x - t2.x) > (e2.y - t2.y) * (i3.x - t2.x);
      }
    }), L.Polyline.include({
      intersects: function() {
        var t2, e2, i3, o2 = this._getProjectedPoints(), n = o2 ? o2.length : 0;
        if (this._tooFewPointsForIntersection())
          return false;
        for (t2 = n - 1; t2 >= 3; t2--)
          if (e2 = o2[t2 - 1], i3 = o2[t2], this._lineSegmentsIntersectsRange(e2, i3, t2 - 2))
            return true;
        return false;
      },
      newLatLngIntersects: function(t2, e2) {
        return !!this._map && this.newPointIntersects(this._map.latLngToLayerPoint(t2), e2);
      },
      newPointIntersects: function(t2, e2) {
        var i3 = this._getProjectedPoints(), o2 = i3 ? i3.length : 0, n = i3 ? i3[o2 - 1] : null, a = o2 - 2;
        return !this._tooFewPointsForIntersection(1) && this._lineSegmentsIntersectsRange(n, t2, a, e2 ? 1 : 0);
      },
      _tooFewPointsForIntersection: function(t2) {
        var e2 = this._getProjectedPoints(), i3 = e2 ? e2.length : 0;
        return i3 += t2 || 0, !e2 || i3 <= 3;
      },
      _lineSegmentsIntersectsRange: function(t2, e2, i3, o2) {
        var n, a, s = this._getProjectedPoints();
        o2 = o2 || 0;
        for (var r = i3; r > o2; r--)
          if (n = s[r - 1], a = s[r], L.LineUtil.segmentsIntersect(t2, e2, n, a))
            return true;
        return false;
      },
      _getProjectedPoints: function() {
        if (!this._defaultShape)
          return this._originalPoints;
        for (var t2 = [], e2 = this._defaultShape(), i3 = 0; i3 < e2.length; i3++)
          t2.push(this._map.latLngToLayerPoint(e2[i3]));
        return t2;
      }
    }), L.Polygon.include({
      intersects: function() {
        var t2, e2, i3, o2, n = this._getProjectedPoints();
        return !this._tooFewPointsForIntersection() && (!!L.Polyline.prototype.intersects.call(this) || (t2 = n.length, e2 = n[0], i3 = n[t2 - 1], o2 = t2 - 2, this._lineSegmentsIntersectsRange(i3, e2, o2, 1)));
      }
    }), L.Control.Draw = L.Control.extend({
      options: {
        position: "topleft",
        draw: {},
        edit: false
      },
      initialize: function(t2) {
        if (L.version < "0.7")
          throw new Error("Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/");
        L.Control.prototype.initialize.call(this, t2);
        var e2;
        this._toolbars = {}, L.DrawToolbar && this.options.draw && (e2 = new L.DrawToolbar(this.options.draw), this._toolbars[L.DrawToolbar.TYPE] = e2, this._toolbars[L.DrawToolbar.TYPE].on("enable", this._toolbarEnabled, this)), L.EditToolbar && this.options.edit && (e2 = new L.EditToolbar(this.options.edit), this._toolbars[L.EditToolbar.TYPE] = e2, this._toolbars[L.EditToolbar.TYPE].on("enable", this._toolbarEnabled, this)), L.toolbar = this;
      },
      onAdd: function(t2) {
        var e2, i3 = L.DomUtil.create("div", "leaflet-draw"), o2 = false;
        for (var n in this._toolbars)
          this._toolbars.hasOwnProperty(n) && (e2 = this._toolbars[n].addToolbar(t2)) && (o2 || (L.DomUtil.hasClass(e2, "leaflet-draw-toolbar-top") || L.DomUtil.addClass(e2.childNodes[0], "leaflet-draw-toolbar-top"), o2 = true), i3.appendChild(e2));
        return i3;
      },
      onRemove: function() {
        for (var t2 in this._toolbars)
          this._toolbars.hasOwnProperty(t2) && this._toolbars[t2].removeToolbar();
      },
      setDrawingOptions: function(t2) {
        for (var e2 in this._toolbars)
          this._toolbars[e2] instanceof L.DrawToolbar && this._toolbars[e2].setOptions(t2);
      },
      _toolbarEnabled: function(t2) {
        var e2 = t2.target;
        for (var i3 in this._toolbars)
          this._toolbars[i3] !== e2 && this._toolbars[i3].disable();
      }
    }), L.Map.mergeOptions({
      drawControlTooltips: true,
      drawControl: false
    }), L.Map.addInitHook(function() {
      this.options.drawControl && (this.drawControl = new L.Control.Draw(), this.addControl(this.drawControl));
    }), L.Toolbar = L.Class.extend({
      initialize: function(t2) {
        L.setOptions(this, t2);
        this._modes = {};
        this._actionButtons = [];
        this._activeMode = null;
        var version = L.version.split(".");
        if (parseInt(version[0], 10) === 1 && parseInt(version[1], 10) >= 2) {
          L.Toolbar.include(L.Evented.prototype);
        } else {
          L.Toolbar.include(L.Mixin.Events);
        }
      },
      enabled: function() {
        return this._activeMode !== null;
      },
      disable: function() {
        this.enabled() && this._activeMode.handler.disable();
      },
      addToolbar: function(t2) {
        var e2, i3 = L.DomUtil.create("div", "leaflet-draw-section"), o2 = 0, n = this._toolbarClass || "", a = this.getModeHandlers(t2);
        for (this._toolbarContainer = L.DomUtil.create("div", "leaflet-draw-toolbar leaflet-bar"), this._map = t2, e2 = 0; e2 < a.length; e2++)
          a[e2].enabled && this._initModeHandler(a[e2].handler, this._toolbarContainer, o2++, n, a[e2].title);
        if (o2)
          return this._lastButtonIndex = --o2, this._actionsContainer = L.DomUtil.create("ul", "leaflet-draw-actions"), i3.appendChild(this._toolbarContainer), i3.appendChild(this._actionsContainer), i3;
      },
      removeToolbar: function() {
        for (var t2 in this._modes)
          this._modes.hasOwnProperty(t2) && (this._disposeButton(this._modes[t2].button, this._modes[t2].handler.enable, this._modes[t2].handler), this._modes[t2].handler.disable(), this._modes[t2].handler.off("enabled", this._handlerActivated, this).off("disabled", this._handlerDeactivated, this));
        this._modes = {};
        for (var e2 = 0, i3 = this._actionButtons.length; e2 < i3; e2++)
          this._disposeButton(this._actionButtons[e2].button, this._actionButtons[e2].callback, this);
        this._actionButtons = [], this._actionsContainer = null;
      },
      _initModeHandler: function(t2, e2, i3, o2, n) {
        var a = t2.type;
        this._modes[a] = {}, this._modes[a].handler = t2, this._modes[a].button = this._createButton({
          type: a,
          title: n,
          className: o2 + "-" + a,
          container: e2,
          callback: this._modes[a].handler.enable,
          context: this._modes[a].handler
        }), this._modes[a].buttonIndex = i3, this._modes[a].handler.on("enabled", this._handlerActivated, this).on("disabled", this._handlerDeactivated, this);
      },
      _detectIOS: function() {
        return /iPad|iPhone|iPod/.test(navigator.userAgent) && !t.MSStream;
      },
      _createButton: function(t2) {
        var e2 = L.DomUtil.create("a", t2.className || "", t2.container), i3 = L.DomUtil.create("span", "sr-only", t2.container);
        e2.href = "#", e2.appendChild(i3), t2.title && (e2.title = t2.title, i3.innerHTML = t2.title), t2.text && (e2.innerHTML = t2.text, i3.innerHTML = t2.text);
        var o2 = this._detectIOS() ? "touchstart" : "click";
        return L.DomEvent.on(e2, "click", L.DomEvent.stopPropagation).on(e2, "mousedown", L.DomEvent.stopPropagation).on(e2, "dblclick", L.DomEvent.stopPropagation).on(e2, "touchstart", L.DomEvent.stopPropagation).on(e2, "click", L.DomEvent.preventDefault).on(e2, o2, t2.callback, t2.context), e2;
      },
      _disposeButton: function(t2, e2) {
        var i3 = this._detectIOS() ? "touchstart" : "click";
        L.DomEvent.off(t2, "click", L.DomEvent.stopPropagation).off(t2, "mousedown", L.DomEvent.stopPropagation).off(t2, "dblclick", L.DomEvent.stopPropagation).off(t2, "touchstart", L.DomEvent.stopPropagation).off(t2, "click", L.DomEvent.preventDefault).off(t2, i3, e2);
      },
      _handlerActivated: function(t2) {
        this.disable(), this._activeMode = this._modes[t2.handler], L.DomUtil.addClass(this._activeMode.button, "leaflet-draw-toolbar-button-enabled"), this._showActionsToolbar(), this.fire("enable");
      },
      _handlerDeactivated: function() {
        this._hideActionsToolbar(), L.DomUtil.removeClass(this._activeMode.button, "leaflet-draw-toolbar-button-enabled"), this._activeMode = null, this.fire("disable");
      },
      _createActions: function(t2) {
        var e2, i3, o2, n, a = this._actionsContainer, s = this.getActions(t2), r = s.length;
        for (i3 = 0, o2 = this._actionButtons.length; i3 < o2; i3++)
          this._disposeButton(this._actionButtons[i3].button, this._actionButtons[i3].callback);
        for (this._actionButtons = []; a.firstChild; )
          a.removeChild(a.firstChild);
        for (var l = 0; l < r; l++)
          "enabled" in s[l] && !s[l].enabled || (e2 = L.DomUtil.create("li", "", a), n = this._createButton({
            title: s[l].title,
            text: s[l].text,
            container: e2,
            callback: s[l].callback,
            context: s[l].context
          }), this._actionButtons.push({
            button: n,
            callback: s[l].callback
          }));
      },
      _showActionsToolbar: function() {
        var t2 = this._activeMode.buttonIndex, e2 = this._lastButtonIndex, i3 = this._activeMode.button.offsetTop - 1;
        this._createActions(this._activeMode.handler), this._actionsContainer.style.top = i3 + "px", 0 === t2 && (L.DomUtil.addClass(this._toolbarContainer, "leaflet-draw-toolbar-notop"), L.DomUtil.addClass(this._actionsContainer, "leaflet-draw-actions-top")), t2 === e2 && (L.DomUtil.addClass(this._toolbarContainer, "leaflet-draw-toolbar-nobottom"), L.DomUtil.addClass(this._actionsContainer, "leaflet-draw-actions-bottom")), this._actionsContainer.style.display = "block";
      },
      _hideActionsToolbar: function() {
        this._actionsContainer.style.display = "none", L.DomUtil.removeClass(this._toolbarContainer, "leaflet-draw-toolbar-notop"), L.DomUtil.removeClass(this._toolbarContainer, "leaflet-draw-toolbar-nobottom"), L.DomUtil.removeClass(this._actionsContainer, "leaflet-draw-actions-top"), L.DomUtil.removeClass(this._actionsContainer, "leaflet-draw-actions-bottom");
      }
    }), L.Draw = L.Draw || {}, L.Draw.Tooltip = L.Class.extend({
      initialize: function(t2) {
        this._map = t2, this._popupPane = t2._panes.popupPane, this._visible = false, this._container = t2.options.drawControlTooltips ? L.DomUtil.create("div", "leaflet-draw-tooltip", this._popupPane) : null, this._singleLineLabel = false, this._map.on("mouseout", this._onMouseOut, this);
      },
      dispose: function() {
        this._map.off("mouseout", this._onMouseOut, this), this._container && (this._popupPane.removeChild(this._container), this._container = null);
      },
      updateContent: function(t2) {
        return this._container ? (t2.subtext = t2.subtext || "", 0 !== t2.subtext.length || this._singleLineLabel ? t2.subtext.length > 0 && this._singleLineLabel && (L.DomUtil.removeClass(this._container, "leaflet-draw-tooltip-single"), this._singleLineLabel = false) : (L.DomUtil.addClass(this._container, "leaflet-draw-tooltip-single"), this._singleLineLabel = true), this._container.innerHTML = (t2.subtext.length > 0 ? '<span class="leaflet-draw-tooltip-subtext">' + t2.subtext + "</span><br />" : "") + "<span>" + t2.text + "</span>", t2.text || t2.subtext ? (this._visible = true, this._container.style.visibility = "inherit") : (this._visible = false, this._container.style.visibility = "hidden"), this) : this;
      },
      updatePosition: function(t2) {
        var e2 = this._map.latLngToLayerPoint(t2), i3 = this._container;
        return this._container && (this._visible && (i3.style.visibility = "inherit"), L.DomUtil.setPosition(i3, e2)), this;
      },
      showAsError: function() {
        return this._container && L.DomUtil.addClass(this._container, "leaflet-error-draw-tooltip"), this;
      },
      removeError: function() {
        return this._container && L.DomUtil.removeClass(this._container, "leaflet-error-draw-tooltip"), this;
      },
      _onMouseOut: function() {
        this._container && (this._container.style.visibility = "hidden");
      }
    }), L.DrawToolbar = L.Toolbar.extend({
      statics: {
        TYPE: "draw"
      },
      options: {
        polyline: {},
        polygon: {},
        rectangle: {},
        circle: {},
        marker: {},
        circlemarker: {}
      },
      initialize: function(t2) {
        for (var e2 in this.options)
          this.options.hasOwnProperty(e2) && t2[e2] && (t2[e2] = L.extend({}, this.options[e2], t2[e2]));
        this._toolbarClass = "leaflet-draw-draw", L.Toolbar.prototype.initialize.call(this, t2);
      },
      getModeHandlers: function(t2) {
        return [{
          enabled: this.options.polyline,
          handler: new L.Draw.Polyline(t2, this.options.polyline),
          title: L.drawLocal.draw.toolbar.buttons.polyline
        }, {
          enabled: this.options.polygon,
          handler: new L.Draw.Polygon(t2, this.options.polygon),
          title: L.drawLocal.draw.toolbar.buttons.polygon
        }, {
          enabled: this.options.rectangle,
          handler: new L.Draw.Rectangle(t2, this.options.rectangle),
          title: L.drawLocal.draw.toolbar.buttons.rectangle
        }, {
          enabled: this.options.circle,
          handler: new L.Draw.Circle(t2, this.options.circle),
          title: L.drawLocal.draw.toolbar.buttons.circle
        }, {
          enabled: this.options.marker,
          handler: new L.Draw.Marker(t2, this.options.marker),
          title: L.drawLocal.draw.toolbar.buttons.marker
        }, {
          enabled: this.options.circlemarker,
          handler: new L.Draw.CircleMarker(t2, this.options.circlemarker),
          title: L.drawLocal.draw.toolbar.buttons.circlemarker
        }];
      },
      getActions: function(t2) {
        return [{
          enabled: t2.completeShape,
          title: L.drawLocal.draw.toolbar.finish.title,
          text: L.drawLocal.draw.toolbar.finish.text,
          callback: t2.completeShape,
          context: t2
        }, {
          enabled: t2.deleteLastVertex,
          title: L.drawLocal.draw.toolbar.undo.title,
          text: L.drawLocal.draw.toolbar.undo.text,
          callback: t2.deleteLastVertex,
          context: t2
        }, {
          title: L.drawLocal.draw.toolbar.actions.title,
          text: L.drawLocal.draw.toolbar.actions.text,
          callback: this.disable,
          context: this
        }];
      },
      setOptions: function(t2) {
        L.setOptions(this, t2);
        for (var e2 in this._modes)
          this._modes.hasOwnProperty(e2) && t2.hasOwnProperty(e2) && this._modes[e2].handler.setOptions(t2[e2]);
      }
    }), L.EditToolbar = L.Toolbar.extend({
      statics: {
        TYPE: "edit"
      },
      options: {
        edit: {
          selectedPathOptions: {
            dashArray: "10, 10",
            fill: true,
            fillColor: "#fe57a1",
            fillOpacity: 0.1,
            maintainColor: false
          }
        },
        remove: {},
        poly: null,
        featureGroup: null
      },
      initialize: function(t2) {
        t2.edit && (void 0 === t2.edit.selectedPathOptions && (t2.edit.selectedPathOptions = this.options.edit.selectedPathOptions), t2.edit.selectedPathOptions = L.extend({}, this.options.edit.selectedPathOptions, t2.edit.selectedPathOptions)), t2.remove && (t2.remove = L.extend({}, this.options.remove, t2.remove)), t2.poly && (t2.poly = L.extend({}, this.options.poly, t2.poly)), this._toolbarClass = "leaflet-draw-edit", L.Toolbar.prototype.initialize.call(this, t2), this._selectedFeatureCount = 0;
      },
      getModeHandlers: function(t2) {
        var e2 = this.options.featureGroup;
        return [{
          enabled: this.options.edit,
          handler: new L.EditToolbar.Edit(t2, {
            featureGroup: e2,
            selectedPathOptions: this.options.edit.selectedPathOptions,
            poly: this.options.poly
          }),
          title: L.drawLocal.edit.toolbar.buttons.edit
        }, {
          enabled: this.options.remove,
          handler: new L.EditToolbar.Delete(t2, {
            featureGroup: e2
          }),
          title: L.drawLocal.edit.toolbar.buttons.remove
        }];
      },
      getActions: function(t2) {
        var e2 = [{
          title: L.drawLocal.edit.toolbar.actions.save.title,
          text: L.drawLocal.edit.toolbar.actions.save.text,
          callback: this._save,
          context: this
        }, {
          title: L.drawLocal.edit.toolbar.actions.cancel.title,
          text: L.drawLocal.edit.toolbar.actions.cancel.text,
          callback: this.disable,
          context: this
        }];
        return t2.removeAllLayers && e2.push({
          title: L.drawLocal.edit.toolbar.actions.clearAll.title,
          text: L.drawLocal.edit.toolbar.actions.clearAll.text,
          callback: this._clearAllLayers,
          context: this
        }), e2;
      },
      addToolbar: function(t2) {
        var e2 = L.Toolbar.prototype.addToolbar.call(this, t2);
        return this._checkDisabled(), this.options.featureGroup.on("layeradd layerremove", this._checkDisabled, this), e2;
      },
      removeToolbar: function() {
        this.options.featureGroup.off("layeradd layerremove", this._checkDisabled, this), L.Toolbar.prototype.removeToolbar.call(this);
      },
      disable: function() {
        this.enabled() && (this._activeMode.handler.revertLayers(), L.Toolbar.prototype.disable.call(this));
      },
      _save: function() {
        this._activeMode.handler.save(), this._activeMode && this._activeMode.handler.disable();
      },
      _clearAllLayers: function() {
        this._activeMode.handler.removeAllLayers(), this._activeMode && this._activeMode.handler.disable();
      },
      _checkDisabled: function() {
        var t2, e2 = this.options.featureGroup, i3 = 0 !== e2.getLayers().length;
        this.options.edit && (t2 = this._modes[L.EditToolbar.Edit.TYPE].button, i3 ? L.DomUtil.removeClass(t2, "leaflet-disabled") : L.DomUtil.addClass(t2, "leaflet-disabled"), t2.setAttribute("title", i3 ? L.drawLocal.edit.toolbar.buttons.edit : L.drawLocal.edit.toolbar.buttons.editDisabled)), this.options.remove && (t2 = this._modes[L.EditToolbar.Delete.TYPE].button, i3 ? L.DomUtil.removeClass(t2, "leaflet-disabled") : L.DomUtil.addClass(t2, "leaflet-disabled"), t2.setAttribute("title", i3 ? L.drawLocal.edit.toolbar.buttons.remove : L.drawLocal.edit.toolbar.buttons.removeDisabled));
      }
    }), L.EditToolbar.Edit = L.Handler.extend({
      statics: {
        TYPE: "edit"
      },
      initialize: function(t2, e2) {
        if (L.Handler.prototype.initialize.call(this, t2), L.setOptions(this, e2), this._featureGroup = e2.featureGroup, !(this._featureGroup instanceof L.FeatureGroup))
          throw new Error("options.featureGroup must be a L.FeatureGroup");
        this._uneditedLayerProps = {}, this.type = L.EditToolbar.Edit.TYPE;
        var version = L.version.split(".");
        if (parseInt(version[0], 10) === 1 && parseInt(version[1], 10) >= 2) {
          L.EditToolbar.Edit.include(L.Evented.prototype);
        } else {
          L.EditToolbar.Edit.include(L.Mixin.Events);
        }
      },
      enable: function() {
        !this._enabled && this._hasAvailableLayers() && (this.fire("enabled", {
          handler: this.type
        }), this._map.fire(L.Draw.Event.EDITSTART, {
          handler: this.type
        }), L.Handler.prototype.enable.call(this), this._featureGroup.on("layeradd", this._enableLayerEdit, this).on("layerremove", this._disableLayerEdit, this));
      },
      disable: function() {
        this._enabled && (this._featureGroup.off("layeradd", this._enableLayerEdit, this).off("layerremove", this._disableLayerEdit, this), L.Handler.prototype.disable.call(this), this._map.fire(L.Draw.Event.EDITSTOP, {
          handler: this.type
        }), this.fire("disabled", {
          handler: this.type
        }));
      },
      addHooks: function() {
        var t2 = this._map;
        t2 && (t2.getContainer().focus(), this._featureGroup.eachLayer(this._enableLayerEdit, this), this._tooltip = new L.Draw.Tooltip(this._map), this._tooltip.updateContent({
          text: L.drawLocal.edit.handlers.edit.tooltip.text,
          subtext: L.drawLocal.edit.handlers.edit.tooltip.subtext
        }), t2._editTooltip = this._tooltip, this._updateTooltip(), this._map.on("mousemove", this._onMouseMove, this).on("touchmove", this._onMouseMove, this).on("MSPointerMove", this._onMouseMove, this).on(L.Draw.Event.EDITVERTEX, this._updateTooltip, this));
      },
      removeHooks: function() {
        this._map && (this._featureGroup.eachLayer(this._disableLayerEdit, this), this._uneditedLayerProps = {}, this._tooltip.dispose(), this._tooltip = null, this._map.off("mousemove", this._onMouseMove, this).off("touchmove", this._onMouseMove, this).off("MSPointerMove", this._onMouseMove, this).off(L.Draw.Event.EDITVERTEX, this._updateTooltip, this));
      },
      revertLayers: function() {
        this._featureGroup.eachLayer(function(t2) {
          this._revertLayer(t2);
        }, this);
      },
      save: function() {
        var t2 = new L.LayerGroup();
        this._featureGroup.eachLayer(function(e2) {
          e2.edited && (t2.addLayer(e2), e2.edited = false);
        }), this._map.fire(L.Draw.Event.EDITED, {
          layers: t2
        });
      },
      _backupLayer: function(t2) {
        var e2 = L.Util.stamp(t2);
        this._uneditedLayerProps[e2] || (t2 instanceof L.Polyline || t2 instanceof L.Polygon || t2 instanceof L.Rectangle ? this._uneditedLayerProps[e2] = {
          latlngs: L.LatLngUtil.cloneLatLngs(t2.getLatLngs())
        } : t2 instanceof L.Circle ? this._uneditedLayerProps[e2] = {
          latlng: L.LatLngUtil.cloneLatLng(t2.getLatLng()),
          radius: t2.getRadius()
        } : (t2 instanceof L.Marker || t2 instanceof L.CircleMarker) && (this._uneditedLayerProps[e2] = {
          latlng: L.LatLngUtil.cloneLatLng(t2.getLatLng())
        }));
      },
      _getTooltipText: function() {
        return {
          text: L.drawLocal.edit.handlers.edit.tooltip.text,
          subtext: L.drawLocal.edit.handlers.edit.tooltip.subtext
        };
      },
      _updateTooltip: function() {
        this._tooltip.updateContent(this._getTooltipText());
      },
      _revertLayer: function(t2) {
        var e2 = L.Util.stamp(t2);
        t2.edited = false, this._uneditedLayerProps.hasOwnProperty(e2) && (t2 instanceof L.Polyline || t2 instanceof L.Polygon || t2 instanceof L.Rectangle ? t2.setLatLngs(this._uneditedLayerProps[e2].latlngs) : t2 instanceof L.Circle ? (t2.setLatLng(this._uneditedLayerProps[e2].latlng), t2.setRadius(this._uneditedLayerProps[e2].radius)) : (t2 instanceof L.Marker || t2 instanceof L.CircleMarker) && t2.setLatLng(this._uneditedLayerProps[e2].latlng), t2.fire("revert-edited", {
          layer: t2
        }));
      },
      _enableLayerEdit: function(t2) {
        var e2, i3, o2 = t2.layer || t2.target || t2;
        this._backupLayer(o2), this.options.poly && (i3 = L.Util.extend({}, this.options.poly), o2.options.poly = i3), this.options.selectedPathOptions && (e2 = L.Util.extend({}, this.options.selectedPathOptions), e2.maintainColor && (e2.color = o2.options.color, e2.fillColor = o2.options.fillColor), o2.options.original = L.extend({}, o2.options), o2.options.editing = e2), o2 instanceof L.Marker ? (o2.editing && o2.editing.enable(), o2.dragging.enable(), o2.on("dragend", this._onMarkerDragEnd).on("touchmove", this._onTouchMove, this).on("MSPointerMove", this._onTouchMove, this).on("touchend", this._onMarkerDragEnd, this).on("MSPointerUp", this._onMarkerDragEnd, this)) : o2.editing.enable();
      },
      _disableLayerEdit: function(t2) {
        var e2 = t2.layer || t2.target || t2;
        e2.edited = false, e2.editing && e2.editing.disable(), delete e2.options.editing, delete e2.options.original, this._selectedPathOptions && (e2 instanceof L.Marker ? this._toggleMarkerHighlight(e2) : (e2.setStyle(e2.options.previousOptions), delete e2.options.previousOptions)), e2 instanceof L.Marker ? (e2.dragging.disable(), e2.off("dragend", this._onMarkerDragEnd, this).off("touchmove", this._onTouchMove, this).off("MSPointerMove", this._onTouchMove, this).off("touchend", this._onMarkerDragEnd, this).off("MSPointerUp", this._onMarkerDragEnd, this)) : e2.editing.disable();
      },
      _onMouseMove: function(t2) {
        this._tooltip.updatePosition(t2.latlng);
      },
      _onMarkerDragEnd: function(t2) {
        var e2 = t2.target;
        e2.edited = true, this._map.fire(L.Draw.Event.EDITMOVE, {
          layer: e2
        });
      },
      _onTouchMove: function(t2) {
        var e2 = t2.originalEvent.changedTouches[0], i3 = this._map.mouseEventToLayerPoint(e2), o2 = this._map.layerPointToLatLng(i3);
        t2.target.setLatLng(o2);
      },
      _hasAvailableLayers: function() {
        return 0 !== this._featureGroup.getLayers().length;
      }
    }), L.EditToolbar.Delete = L.Handler.extend({
      statics: {
        TYPE: "remove"
      },
      initialize: function(t2, e2) {
        if (L.Handler.prototype.initialize.call(this, t2), L.Util.setOptions(this, e2), this._deletableLayers = this.options.featureGroup, !(this._deletableLayers instanceof L.FeatureGroup))
          throw new Error("options.featureGroup must be a L.FeatureGroup");
        this.type = L.EditToolbar.Delete.TYPE;
        var version = L.version.split(".");
        if (parseInt(version[0], 10) === 1 && parseInt(version[1], 10) >= 2) {
          L.EditToolbar.Delete.include(L.Evented.prototype);
        } else {
          L.EditToolbar.Delete.include(L.Mixin.Events);
        }
      },
      enable: function() {
        !this._enabled && this._hasAvailableLayers() && (this.fire("enabled", {
          handler: this.type
        }), this._map.fire(L.Draw.Event.DELETESTART, {
          handler: this.type
        }), L.Handler.prototype.enable.call(this), this._deletableLayers.on("layeradd", this._enableLayerDelete, this).on("layerremove", this._disableLayerDelete, this));
      },
      disable: function() {
        this._enabled && (this._deletableLayers.off("layeradd", this._enableLayerDelete, this).off("layerremove", this._disableLayerDelete, this), L.Handler.prototype.disable.call(this), this._map.fire(L.Draw.Event.DELETESTOP, {
          handler: this.type
        }), this.fire("disabled", {
          handler: this.type
        }));
      },
      addHooks: function() {
        var t2 = this._map;
        t2 && (t2.getContainer().focus(), this._deletableLayers.eachLayer(this._enableLayerDelete, this), this._deletedLayers = new L.LayerGroup(), this._tooltip = new L.Draw.Tooltip(this._map), this._tooltip.updateContent({
          text: L.drawLocal.edit.handlers.remove.tooltip.text
        }), this._map.on("mousemove", this._onMouseMove, this));
      },
      removeHooks: function() {
        this._map && (this._deletableLayers.eachLayer(this._disableLayerDelete, this), this._deletedLayers = null, this._tooltip.dispose(), this._tooltip = null, this._map.off("mousemove", this._onMouseMove, this));
      },
      revertLayers: function() {
        this._deletedLayers.eachLayer(function(t2) {
          this._deletableLayers.addLayer(t2), t2.fire("revert-deleted", {
            layer: t2
          });
        }, this);
      },
      save: function() {
        this._map.fire(L.Draw.Event.DELETED, {
          layers: this._deletedLayers
        });
      },
      removeAllLayers: function() {
        this._deletableLayers.eachLayer(function(t2) {
          this._removeLayer({
            layer: t2
          });
        }, this), this.save();
      },
      _enableLayerDelete: function(t2) {
        (t2.layer || t2.target || t2).on("click", this._removeLayer, this);
      },
      _disableLayerDelete: function(t2) {
        var e2 = t2.layer || t2.target || t2;
        e2.off("click", this._removeLayer, this), this._deletedLayers.removeLayer(e2);
      },
      _removeLayer: function(t2) {
        var e2 = t2.layer || t2.target || t2;
        this._deletableLayers.removeLayer(e2), this._deletedLayers.addLayer(e2), e2.fire("deleted");
      },
      _onMouseMove: function(t2) {
        this._tooltip.updatePosition(t2.latlng);
      },
      _hasAvailableLayers: function() {
        return 0 !== this._deletableLayers.getLayers().length;
      }
    });
  }(window, document);

  // frappe/public/js/libs.bundle.js
  var import_L_Control_Locate = __toESM(require_L_Control_Locate());
  var import_sortablejs = __toESM(require_Sortable_min());
  window.SetVueGlobals = (app) => {
    app.config.globalProperties.__ = window.__;
    app.config.globalProperties.frappe = window.frappe;
  };
  window.Sortable = import_sortablejs.default;

  // frappe/public/js/frappe/class.js
  (function(global2) {
    "use strict";
    var fnTest = /xyz/.test(function() {
      xyz;
    }) ? /\b_super\b/ : /.*/;
    function Class() {
    }
    Class.extend = function(props) {
      var _super = this.prototype;
      var proto = Object.create(_super);
      for (var name2 in props) {
        proto[name2] = typeof props[name2] === "function" && typeof _super[name2] == "function" && fnTest.test(props[name2]) ? function(name3, fn) {
          return function() {
            var tmp = this._super;
            this._super = _super[name3];
            var ret = fn.apply(this, arguments);
            this._super = tmp;
            return ret;
          };
        }(name2, props[name2]) : props[name2];
      }
      var newClass = typeof proto.init === "function" ? proto.hasOwnProperty("init") ? proto.init : function SubClass() {
        _super.init.apply(this, arguments);
      } : function EmptyClass() {
      };
      newClass.prototype = proto;
      proto.constructor = newClass;
      newClass.extend = Class.extend;
      return newClass;
    };
    global2.Class = Class;
  })(window);

  // frappe/public/js/frappe/polyfill.js
  if (!String.prototype.includes) {
    String.prototype.includes = function(search, start) {
      "use strict";
      if (typeof start !== "number") {
        start = 0;
      }
      if (start + search.length > this.length) {
        return false;
      } else {
        return this.indexOf(search, start) !== -1;
      }
    };
  }
  if (!Array.prototype.includes) {
    Object.defineProperty(Array.prototype, "includes", {
      value: function(searchElement, fromIndex) {
        if (this == null) {
          throw new TypeError('"this" is null or not defined');
        }
        var o = Object(this);
        var len = o.length >>> 0;
        if (len === 0) {
          return false;
        }
        var n = fromIndex | 0;
        var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
        while (k < len) {
          if (o[k] === searchElement) {
            return true;
          }
          k++;
        }
        return false;
      }
    });
  }
  if (typeof String.prototype.trimLeft !== "function") {
    String.prototype.trimLeft = function() {
      return this.replace(/^\s+/, "");
    };
  }
  if (typeof String.prototype.trimRight !== "function") {
    String.prototype.trimRight = function() {
      return this.replace(/\s+$/, "");
    };
  }
  if (typeof Object.assign != "function") {
    Object.defineProperty(Object, "assign", {
      value: function assign(target) {
        "use strict";
        if (target == null) {
          throw new TypeError("Cannot convert undefined or null to object");
        }
        var to = Object(target);
        for (var index = 1; index < arguments.length; index++) {
          var nextSource = arguments[index];
          if (nextSource != null) {
            for (var nextKey in nextSource) {
              if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
                to[nextKey] = nextSource[nextKey];
              }
            }
          }
        }
        return to;
      },
      writable: true,
      configurable: true
    });
  }

  // frappe/public/js/frappe/provide.js
  if (!window.frappe)
    window.frappe = {};
  frappe.provide = function(namespace) {
    var nsl = namespace.split(".");
    var parent = window;
    for (var i2 = 0; i2 < nsl.length; i2++) {
      var n = nsl[i2];
      if (!parent[n]) {
        parent[n] = {};
      }
      parent = parent[n];
    }
    return parent;
  };
  frappe.provide("locals");
  frappe.provide("frappe.flags");
  frappe.provide("frappe.settings");
  frappe.provide("frappe.utils");
  frappe.provide("frappe.ui.form");
  frappe.provide("frappe.modules");
  frappe.provide("frappe.templates");
  frappe.provide("frappe.test_data");
  frappe.provide("frappe.utils");
  frappe.provide("frappe.model");
  frappe.provide("frappe.user");
  frappe.provide("frappe.session");
  frappe.provide("frappe._messages");
  frappe.provide("locals.DocType");
  frappe.provide("frappe.listview_settings");
  frappe.provide("frappe.tour");
  frappe.provide("frappe.listview_parent_route");
  window.NEWLINE = "\n";
  window.TAB = 9;
  window.UP_ARROW = 38;
  window.DOWN_ARROW = 40;
  window.cur_frm = null;

  // frappe/public/js/frappe/translate.js
  frappe._ = function(txt, replace, context = null) {
    if (!txt)
      return txt;
    if (typeof txt != "string")
      return txt;
    let translated_text = "";
    let key = txt;
    if (context) {
      translated_text = frappe._messages[`${key}:${context}`];
    }
    if (!translated_text) {
      translated_text = frappe._messages[key] || txt;
    }
    if (replace && typeof replace === "object") {
      translated_text = $.format(translated_text, replace);
    }
    return translated_text;
  };
  window.__ = frappe._;
  frappe.get_languages = function() {
    if (!frappe.languages) {
      frappe.languages = [];
      $.each(frappe.boot.lang_dict, function(lang, value2) {
        frappe.languages.push({ label: lang, value: value2 });
      });
      frappe.languages = frappe.languages.sort(function(a, b) {
        return a.value < b.value ? -1 : 1;
      });
    }
    return frappe.languages;
  };

  // frappe/public/js/frappe/form/formatters.js
  frappe.provide("frappe.form.formatters");
  frappe.form.link_formatters = {};
  frappe.form.formatters = {
    _right: function(value2, options) {
      if (options && (options.inline || options.only_value)) {
        return value2;
      } else {
        return "<div style='text-align: right'>" + value2 + "</div>";
      }
    },
    _apply_custom_formatter: function(value2, df) {
      if (df) {
        const std_df = frappe.meta.docfield_map[df.parent] && frappe.meta.docfield_map[df.parent][df.fieldname];
        if (std_df && std_df.formatter && typeof std_df.formatter === "function") {
          value2 = std_df.formatter(value2, df);
        }
      }
      return value2;
    },
    Data: function(value2, df) {
      if (df && df.options == "URL") {
        if (!value2)
          return;
        return `<a href="${value2}" title="Open Link" target="_blank">${value2}</a>`;
      }
      value2 = value2 == null ? "" : value2;
      return frappe.form.formatters._apply_custom_formatter(value2, df);
    },
    Autocomplete: function(value2, df) {
      return __(frappe.form.formatters["Data"](value2, df));
    },
    Select: function(value2, df) {
      return __(frappe.form.formatters["Data"](value2, df));
    },
    Float: function(value2, docfield, options, doc) {
      if (value2 === null) {
        return "";
      }
      var precision3 = docfield.precision || cint(frappe.boot.sysdefaults && frappe.boot.sysdefaults.float_precision) || null;
      if (docfield.options && docfield.options.trim()) {
        docfield.precision = precision3;
        return frappe.form.formatters.Currency(value2, docfield, options, doc);
      } else {
        if (!(options || {}).always_show_decimals && !is_null(value2)) {
          var temp = cstr(value2).split(".");
          if (temp[1] == void 0 || cint(temp[1]) === 0) {
            precision3 = 0;
          }
        }
        value2 = value2 == null || value2 === "" ? "" : value2;
        return frappe.form.formatters._right(format_number(value2, null, precision3), options);
      }
    },
    Int: function(value2, docfield, options) {
      if (value2 === null) {
        return "";
      }
      if (cstr(docfield.options).trim() === "File Size") {
        return frappe.form.formatters.FileSize(value2);
      }
      return frappe.form.formatters._right(value2 == null ? "" : cint(value2), options);
    },
    Percent: function(value2, docfield, options) {
      if (value2 === null) {
        return "";
      }
      const precision3 = docfield.precision || cint(frappe.boot.sysdefaults && frappe.boot.sysdefaults.float_precision) || 2;
      return frappe.form.formatters._right(flt(value2, precision3) + "%", options);
    },
    Rating: function(value2, docfield) {
      let rating_html = "";
      let number_of_stars = docfield.options || 5;
      value2 = value2 * number_of_stars;
      value2 = Math.round(value2 * 2) / 2;
      Array.from({ length: cint(number_of_stars) }, (_, i2) => i2 + 1).forEach((i2) => {
        rating_html += `<svg class="icon icon-md" data-rating=${i2} viewBox="0 0 24 24" fill="none">
				<path class="right-half ${i2 <= (value2 || 0) ? "star-click" : ""}" d="M11.9987 3.00011C12.177 3.00011 12.3554 3.09303 12.4471 3.27888L14.8213 8.09112C14.8941 8.23872 15.0349 8.34102 15.1978 8.3647L20.5069 9.13641C20.917 9.19602 21.0807 9.69992 20.7841 9.9892L16.9421 13.7354C16.8243 13.8503 16.7706 14.0157 16.7984 14.1779L17.7053 19.4674C17.7753 19.8759 17.3466 20.1874 16.9798 19.9945L12.2314 17.4973C12.1586 17.459 12.0786 17.4398 11.9987 17.4398V3.00011Z" fill="var(--star-fill)" stroke="var(--star-fill)"/>
				<path class="left-half ${i2 <= (value2 || 0) || i2 - 0.5 == value2 ? "star-click" : ""}" d="M11.9987 3.00011C11.8207 3.00011 11.6428 3.09261 11.5509 3.27762L9.15562 8.09836C9.08253 8.24546 8.94185 8.34728 8.77927 8.37075L3.42887 9.14298C3.01771 9.20233 2.85405 9.70811 3.1525 9.99707L7.01978 13.7414C7.13858 13.8564 7.19283 14.0228 7.16469 14.1857L6.25116 19.4762C6.18071 19.8842 6.6083 20.1961 6.97531 20.0045L11.7672 17.5022C11.8397 17.4643 11.9192 17.4454 11.9987 17.4454V3.00011Z" fill="var(--star-fill)" stroke="var(--star-fill)"/>
			</svg>`;
      });
      return `<div class="rating">
			${rating_html}
		</div>`;
    },
    Currency: function(value2, docfield, options, doc) {
      if (value2 === null) {
        return "";
      }
      var currency = frappe.meta.get_field_currency(docfield, doc);
      let precision3;
      if (typeof docfield.precision == "number") {
        precision3 = docfield.precision;
      } else {
        precision3 = cint(
          docfield.precision || frappe.boot.sysdefaults.currency_precision || 2
        );
      }
      if (precision3 > 2) {
        var parts2 = cstr(value2).split(".");
        var decimals = parts2.length > 1 ? parts2[1] : "";
        if (decimals.length < 3 || decimals.length < precision3) {
          const fraction = frappe.model.get_value(":Currency", currency, "fraction_units") || 100;
          if (decimals.length < cstr(fraction).length) {
            precision3 = cstr(fraction).length - 1;
          }
        }
      }
      value2 = value2 == null || value2 === "" ? "" : value2;
      value2 = format_currency(value2, currency, precision3);
      if (options && options.only_value) {
        return value2;
      } else {
        return frappe.form.formatters._right(value2, options);
      }
    },
    Check: function(value2) {
      return `<input type="checkbox" disabled
			class="disabled-${value2 ? "selected" : "deselected"}">`;
    },
    Link: function(value2, docfield, options, doc) {
      var doctype = docfield._options || docfield.options;
      var original_value = value2;
      let link_title = frappe.utils.get_link_title(doctype, value2);
      if (link_title === value2) {
        link_title = null;
      }
      if (value2 && value2.match && value2.match(/^['"].*['"]$/)) {
        value2.replace(/^.(.*).$/, "$1");
      }
      if (options && (options.for_print || options.only_value)) {
        return link_title || value2;
      }
      if (frappe.form.link_formatters[doctype]) {
        if (doc && doctype !== doc.doctype) {
          value2 = frappe.form.link_formatters[doctype](value2, doc, docfield);
        }
      }
      if (!value2) {
        return "";
      }
      if (value2[0] == "'" && value2[value2.length - 1] == "'") {
        return value2.substring(1, value2.length - 1);
      }
      if (docfield && docfield.link_onclick) {
        return repl('<a onclick="%(onclick)s" href="#">%(value)s</a>', {
          onclick: docfield.link_onclick.replace(/"/g, "&quot;") + "; return false;",
          value: value2
        });
      } else if (docfield && doctype) {
        if (frappe.model.can_read(doctype)) {
          const a = document.createElement("a");
          a.href = `/app/${encodeURIComponent(
            frappe.router.slug(doctype)
          )}/${encodeURIComponent(original_value)}`;
          a.dataset.doctype = doctype;
          a.dataset.name = original_value;
          a.dataset.value = original_value;
          a.innerText = __(options && options.label || link_title || value2);
          return a.outerHTML;
        } else {
          return link_title || value2;
        }
      } else {
        return link_title || value2;
      }
    },
    Date: function(value2) {
      if (!frappe.datetime.str_to_user) {
        return value2;
      }
      if (value2) {
        value2 = frappe.datetime.str_to_user(value2, false, true);
        if (value2 === "Invalid date") {
          value2 = null;
        }
      }
      return value2 || "";
    },
    DateRange: function(value2) {
      if (Array.isArray(value2)) {
        return __("{0} to {1}", [
          frappe.datetime.str_to_user(value2[0]),
          frappe.datetime.str_to_user(value2[1])
        ]);
      } else {
        return value2 || "";
      }
    },
    Datetime: function(value2) {
      if (value2) {
        return moment(frappe.datetime.convert_to_user_tz(value2)).format(
          frappe.boot.sysdefaults.date_format.toUpperCase() + " " + (frappe.boot.sysdefaults.time_format || "HH:mm:ss")
        );
      } else {
        return "";
      }
    },
    Text: function(value2, df) {
      if (value2) {
        var tags = ["<p", "<div", "<br", "<table"];
        var match = false;
        for (var i2 = 0; i2 < tags.length; i2++) {
          if (value2.match(tags[i2])) {
            match = true;
            break;
          }
        }
        if (!match) {
          value2 = frappe.utils.replace_newlines(value2);
        }
      }
      return frappe.form.formatters.Data(value2, df);
    },
    Time: function(value2) {
      if (value2) {
        value2 = frappe.datetime.str_to_user(value2, true);
      }
      return value2 || "";
    },
    Duration: function(value2, docfield) {
      if (value2) {
        let duration_options = frappe.utils.get_duration_options(docfield);
        value2 = frappe.utils.get_formatted_duration(value2, duration_options);
      }
      return value2 || "0s";
    },
    LikedBy: function(value2) {
      var html = "";
      $.each(JSON.parse(value2 || "[]"), function(i2, v) {
        if (v)
          html += frappe.avatar(v);
      });
      return html;
    },
    Tag: function(value2) {
      var html = "";
      $.each((value2 || "").split(","), function(i2, v) {
        if (v)
          html += `
				<span
					class="data-pill btn-xs align-center ellipsis"
					style="background-color: var(--control-bg); box-shadow: none; margin-right: 4px;"
					data-field="_user_tags" data-label="${v}'">
					${v}
				</span>`;
      });
      return html;
    },
    Comment: function(value2) {
      return value2;
    },
    Assign: function(value2) {
      var html = "";
      $.each(JSON.parse(value2 || "[]"), function(i2, v) {
        if (v)
          html += '<span class="label label-warning" 				style="margin-right: 7px;"				data-field="_assign">' + v + "</span>";
      });
      return html;
    },
    SmallText: function(value2) {
      return frappe.form.formatters.Text(value2);
    },
    TextEditor: function(value2) {
      let formatted_value = frappe.form.formatters.Text(value2);
      try {
        if (!$(formatted_value).find(".ql-editor").length && !$(formatted_value).hasClass("ql-editor")) {
          formatted_value = `<div class="ql-editor read-mode">${formatted_value}</div>`;
        }
      } catch (e) {
        formatted_value = `<div class="ql-editor read-mode">${formatted_value}</div>`;
      }
      return formatted_value;
    },
    Code: function(value2) {
      return "<pre>" + (value2 == null ? "" : $("<div>").text(value2).html()) + "</pre>";
    },
    WorkflowState: function(value2) {
      var workflow_state = frappe.get_doc("Workflow State", value2);
      if (workflow_state) {
        return repl(
          "<span class='label label-%(style)s' 				data-workflow-state='%(value)s'				style='padding-bottom: 4px; cursor: pointer;'>				<i class='fa fa-small fa-white fa-%(icon)s'></i> %(value)s</span>",
          {
            value: value2,
            style: workflow_state.style.toLowerCase(),
            icon: workflow_state.icon
          }
        );
      } else {
        return "<span class='label'>" + value2 + "</span>";
      }
    },
    Email: function(value2) {
      return $("<div></div>").text(value2).html();
    },
    FileSize: function(value2) {
      value2 = cint(value2);
      if (value2 > 1048576) {
        return (value2 / 1048576).toFixed(2) + "M";
      } else if (value2 > 1024) {
        return (value2 / 1024).toFixed(2) + "K";
      }
      return value2;
    },
    TableMultiSelect: function(rows, df, options) {
      rows = rows || [];
      const meta = frappe.get_meta(df.options);
      const link_field = meta.fields.find((df2) => df2.fieldtype === "Link");
      const formatted_values = rows.map((row) => {
        const value2 = row[link_field.fieldname];
        return `<span class="text-nowrap">
				${frappe.format(value2, link_field, options, row)}
			</span>`;
      });
      return formatted_values.join(", ");
    },
    Color: (value2) => {
      return value2 ? `<div>
			<div class="selected-color" style="background-color: ${value2}"></div>
			<span class="color-value">${value2}</span>
		</div>` : "";
    },
    Icon: (value2) => {
      return value2 ? `<div>
			<div class="selected-icon">${frappe.utils.icon(value2, "md")}</div>
			<span class="icon-value">${value2}</span>
		</div>` : "";
    },
    Attach: format_attachment_url,
    AttachImage: format_attachment_url
  };
  function format_attachment_url(url2) {
    return url2 ? `<a href="${url2}" target="_blank">${url2}</a>` : "";
  }
  frappe.form.get_formatter = function(fieldtype) {
    if (!fieldtype)
      fieldtype = "Data";
    return frappe.form.formatters[fieldtype.replace(/ /g, "")] || frappe.form.formatters.Data;
  };
  frappe.format = function(value2, df, options, doc) {
    if (!df)
      df = { fieldtype: "Data" };
    if (df.fieldname == "_user_tags")
      df = __spreadProps(__spreadValues({}, df), { fieldtype: "Tag" });
    var fieldtype = df.fieldtype || "Data";
    if (fieldtype === "Dynamic Link") {
      fieldtype = "Link";
      df._options = doc ? doc[df.options] : null;
    }
    var formatter = df.formatter || frappe.form.get_formatter(fieldtype);
    var formatted = formatter(value2, df, options, doc);
    if (typeof formatted == "string")
      formatted = frappe.dom.remove_script_and_style(formatted);
    return formatted;
  };
  frappe.get_format_helper = function(doc) {
    var helper = {
      get_formatted: function(fieldname) {
        var df = frappe.meta.get_docfield(doc.doctype, fieldname);
        if (!df) {
          console.log("fieldname not found: " + fieldname);
        }
        return frappe.format(doc[fieldname], df, { inline: 1 }, doc);
      }
    };
    $.extend(helper, doc);
    return helper;
  };
  frappe.form.link_formatters["User"] = function(value2, doc, docfield) {
    let full_name = doc && (doc.full_name || docfield && doc[`${docfield.fieldname}_full_name`]);
    return full_name || value2;
  };

  // frappe/public/js/frappe/format.js
  function format(str, args) {
    if (str == void 0)
      return str;
    this.unkeyed_index = 0;
    return str.replace(
      /\{(\w*)\}/g,
      function(match, key) {
        if (key === "") {
          key = this.unkeyed_index;
          this.unkeyed_index++;
        }
        if (key == +key) {
          return args[key] !== void 0 ? args[key] : match;
        }
      }.bind(this)
    );
  }
  if (jQuery) {
    jQuery.format = format;
  }

  // frappe/public/js/frappe/utils/datatype.js
  window.cstr = function(s) {
    if (s == null)
      return "";
    return s + "";
  };
  window.cint = function(v, def) {
    if (v === true)
      return 1;
    if (v === false)
      return 0;
    v = v + "";
    if (v !== "0")
      v = lstrip(v, ["0"]);
    v = parseInt(v);
    if (isNaN(v))
      v = def === void 0 ? 0 : def;
    return v;
  };
  window.toTitle = function(str) {
    var word_in = str.split(" ");
    var word_out = [];
    for (var w in word_in) {
      word_out[w] = word_in[w].charAt(0).toUpperCase() + word_in[w].slice(1);
    }
    return word_out.join(" ");
  };
  window.is_null = function(v) {
    if (v === null || v === void 0 || cstr(v).trim() === "")
      return true;
  };
  window.copy_dict = function(d) {
    var n = {};
    for (var k in d)
      n[k] = d[k];
    return n;
  };
  window.validate_email = function(txt) {
    return frappe.utils.validate_type(txt, "email");
  };
  window.validate_phone = function(txt) {
    return frappe.utils.validate_type(txt, "phone");
  };
  window.validate_name = function(txt) {
    return frappe.utils.validate_type(txt, "name");
  };
  window.validate_url = function(txt) {
    return frappe.utils.validate_type(txt, "url");
  };
  window.nth = function(number) {
    number = cint(number);
    var s = "th";
    if ((number + "").substr(-1) == "1")
      s = "st";
    if ((number + "").substr(-1) == "2")
      s = "nd";
    if ((number + "").substr(-1) == "3")
      s = "rd";
    return number + s;
  };
  window.has_words = function(list, item) {
    if (!item)
      return true;
    if (!list)
      return false;
    for (var i2 = 0, j = list.length; i2 < j; i2++) {
      if (item.indexOf(list[i2]) != -1)
        return true;
    }
    return false;
  };
  window.has_common = function(list1, list2) {
    if (!list1 || !list2)
      return false;
    for (var i2 = 0, j = list1.length; i2 < j; i2++) {
      if (list2.includes(list1[i2]))
        return true;
    }
    return false;
  };

  // frappe/public/js/frappe/utils/number_format.js
  if (!window.frappe)
    window.frappe = {};
  function flt2(v, decimals, number_format, rounding_method) {
    if (v == null || v == "")
      return 0;
    if (typeof v !== "number") {
      v = v + "";
      if (v.indexOf(" ") != -1) {
        var parts2 = v.split(" ");
        v = isNaN(parseFloat(parts2[0])) ? parts2.slice(parts2.length - 1).join(" ") : v;
      }
      v = strip_number_groups(v, number_format);
      v = parseFloat(v);
      if (isNaN(v))
        v = 0;
    }
    if (decimals != null)
      return _round(v, decimals, rounding_method);
    return v;
  }
  function strip_number_groups(v, number_format) {
    if (!number_format)
      number_format = get_number_format2();
    var info = get_number_format_info2(number_format);
    var group_regex = new RegExp(info.group_sep === "." ? "\\." : info.group_sep, "g");
    v = v.replace(group_regex, "");
    if (info.decimal_str !== "." && info.decimal_str !== "") {
      var decimal_regex = new RegExp(info.decimal_str, "g");
      v = v.replace(decimal_regex, ".");
    }
    return v;
  }
  function convert_old_to_new_number_format(v, old_number_format, new_number_format) {
    if (!new_number_format)
      new_number_format = get_number_format2();
    let new_info = get_number_format_info2(new_number_format);
    if (!old_number_format)
      old_number_format = "#,###.##";
    let old_info = get_number_format_info2(old_number_format);
    if (old_number_format === new_number_format)
      return v;
    if (new_info.decimal_str == "") {
      return strip_number_groups(v);
    }
    let v_parts = v.split(old_info.decimal_str);
    let v_before_decimal = v_parts[0];
    let v_after_decimal = v_parts[1] || "";
    let old_group_regex = new RegExp(old_info.group_sep === "." ? "\\." : old_info.group_sep, "g");
    v_before_decimal = v_before_decimal.replace(old_group_regex, new_info.group_sep);
    v = v_before_decimal;
    if (v_after_decimal) {
      v = v + new_info.decimal_str + v_after_decimal;
    }
    return v;
  }
  frappe.number_format_info = {
    "#,###.##": { decimal_str: ".", group_sep: "," },
    "#.###,##": { decimal_str: ",", group_sep: "." },
    "# ###.##": { decimal_str: ".", group_sep: " " },
    "# ###,##": { decimal_str: ",", group_sep: " " },
    "#'###.##": { decimal_str: ".", group_sep: "'" },
    "#, ###.##": { decimal_str: ".", group_sep: ", " },
    "#,##,###.##": { decimal_str: ".", group_sep: "," },
    "#,###.###": { decimal_str: ".", group_sep: "," },
    "#.###": { decimal_str: "", group_sep: "." },
    "#,###": { decimal_str: "", group_sep: "," }
  };
  window.format_number = function(v, format2, decimals) {
    if (!format2) {
      format2 = get_number_format2();
      if (decimals == null)
        decimals = cint(frappe.defaults.get_default("float_precision")) || 3;
    }
    var info = get_number_format_info2(format2);
    if (decimals == null)
      decimals = info.precision;
    v = flt2(v, decimals, format2);
    let is_negative = false;
    if (v < 0)
      is_negative = true;
    v = Math.abs(v);
    v = v.toFixed(decimals);
    var part = v.split(".");
    var group_position = info.group_sep ? 3 : 0;
    if (group_position) {
      var integer = part[0];
      var str = "";
      var offset = integer.length % group_position;
      for (var i2 = integer.length; i2 >= 0; i2--) {
        var l = replace_all(str, info.group_sep, "").length;
        if (format2 == "#,##,###.##" && str.indexOf(",") != -1) {
          group_position = 2;
          l += 1;
        }
        str += integer.charAt(i2);
        if (l && !((l + 1) % group_position) && i2 != 0) {
          str += info.group_sep;
        }
      }
      part[0] = str.split("").reverse().join("");
    }
    if (part[0] + "" == "") {
      part[0] = "0";
    }
    part[1] = part[1] && info.decimal_str ? info.decimal_str + part[1] : "";
    return (is_negative ? "-" : "") + part[0] + part[1];
  };
  function format_currency2(v, currency, decimals) {
    var _a;
    const format2 = get_number_format2(currency);
    const symbol = get_currency_symbol(currency);
    const show_symbol_on_right = (_a = frappe.model.get_value(":Currency", currency, "symbol_on_right")) != null ? _a : false;
    if (decimals === void 0) {
      decimals = frappe.boot.sysdefaults.currency_precision || null;
    }
    if (symbol) {
      if (show_symbol_on_right) {
        return format_number(v, format2, decimals) + " " + __(symbol);
      }
      return __(symbol) + " " + format_number(v, format2, decimals);
    }
    return format_number(v, format2, decimals);
  }
  function get_currency_symbol(currency) {
    if (frappe.boot) {
      if (frappe.boot.sysdefaults && frappe.boot.sysdefaults.hide_currency_symbol == "Yes")
        return null;
      if (!currency)
        currency = frappe.boot.sysdefaults.currency;
      return frappe.model.get_value(":Currency", currency, "symbol") || currency;
    } else {
      return frappe.currency_symbols[currency];
    }
  }
  function get_number_format2(currency) {
    var _a;
    let sysdefaults = (_a = frappe == null ? void 0 : frappe.boot) == null ? void 0 : _a.sysdefaults;
    return sysdefaults.use_number_format_from_currency && currency && frappe.model.get_value(":Currency", currency, "number_format") || sysdefaults.number_format || "#,###.##";
  }
  function get_number_format_info2(format2) {
    var info = frappe.number_format_info[format2];
    if (!info) {
      info = { decimal_str: ".", group_sep: "," };
    }
    info.precision = format2.split(info.decimal_str).slice(1)[0].length;
    return info;
  }
  function _round(num, precision3, rounding_method) {
    rounding_method = rounding_method || frappe.boot.sysdefaults.rounding_method || "Banker's Rounding (legacy)";
    let is_negative = num < 0 ? true : false;
    if (rounding_method == "Banker's Rounding (legacy)") {
      var d = cint(precision3);
      var m = Math.pow(10, d);
      var n = +(d ? Math.abs(num) * m : Math.abs(num)).toFixed(8);
      var i2 = Math.floor(n), f = n - i2;
      var r = !precision3 && f == 0.5 ? i2 % 2 == 0 ? i2 : i2 + 1 : Math.round(n);
      r = d ? r / m : r;
      return is_negative ? -r : r;
    } else if (rounding_method == "Banker's Rounding") {
      if (num == 0)
        return 0;
      precision3 = cint(precision3);
      let multiplier = Math.pow(10, precision3);
      num = Math.abs(num) * multiplier;
      let floor_num = Math.floor(num);
      let decimal_part = num - floor_num;
      let epsilon = 2 ** (Math.log2(Math.abs(num)) - 52);
      if (Math.abs(decimal_part - 0.5) < epsilon) {
        num = floor_num % 2 == 0 ? floor_num : floor_num + 1;
      } else {
        num = Math.round(num);
      }
      num = num / multiplier;
      return is_negative ? -num : num;
    } else if (rounding_method == "Commercial Rounding") {
      if (num == 0)
        return 0;
      let digits = cint(precision3);
      let multiplier = Math.pow(10, digits);
      num = num * multiplier;
      let epsilon = 2 ** (Math.log2(Math.abs(num)) - 52);
      if (is_negative) {
        epsilon = -1 * epsilon;
      }
      num = Math.round(num + epsilon);
      return num / multiplier;
    } else {
      throw new Error(`Unknown rounding method ${rounding_method}`);
    }
  }
  function roundNumber(num, precision3) {
    return _round(num, precision3);
  }
  function precision2(fieldname, doc) {
    if (cur_frm) {
      if (!doc)
        doc = cur_frm.doc;
      var df = frappe.meta.get_docfield(doc.doctype, fieldname, doc.parent || doc.name);
      if (!df)
        console.log(fieldname + ": could not find docfield in method precision()");
      return frappe.meta.get_field_precision(df, doc);
    } else {
      return frappe.boot.sysdefaults.float_precision;
    }
  }
  function in_list(list, item) {
    return list.includes(item);
  }
  function remainder(numerator, denominator, precision3) {
    precision3 = cint(precision3);
    var multiplier = Math.pow(10, precision3);
    let _remainder;
    if (precision3) {
      _remainder = numerator * multiplier % (denominator * multiplier) / multiplier;
    } else {
      _remainder = numerator % denominator;
    }
    return flt2(_remainder, precision3);
  }
  function round_based_on_smallest_currency_fraction(value2, currency, precision3) {
    var smallest_currency_fraction_value = flt2(
      frappe.model.get_value(":Currency", currency, "smallest_currency_fraction_value")
    );
    if (smallest_currency_fraction_value) {
      var remainder_val = remainder(value2, smallest_currency_fraction_value, precision3);
      if (remainder_val > smallest_currency_fraction_value / 2) {
        value2 += smallest_currency_fraction_value - remainder_val;
      } else {
        value2 -= remainder_val;
      }
    } else {
      value2 = _round(value2);
    }
    return value2;
  }
  function fmt_money(v, format2) {
    return format_currency2(v, format2);
  }
  Object.assign(window, {
    flt: flt2,
    cint,
    strip_number_groups,
    convert_old_to_new_number_format,
    format_currency: format_currency2,
    fmt_money,
    get_currency_symbol,
    get_number_format: get_number_format2,
    get_number_format_info: get_number_format_info2,
    _round,
    roundNumber,
    precision: precision2,
    remainder,
    round_based_on_smallest_currency_fraction,
    in_list
  });

  // frappe/public/js/frappe/utils/utils.js
  var import_fast_deep_equal = __toESM(require_fast_deep_equal());

  // frappe/public/js/frappe/utils/number_systems.js
  var number_systems_default = {
    default: [
      {
        divisor: 1e12,
        symbol: __("T", null, "Number system")
      },
      {
        divisor: 1e9,
        symbol: __("B", null, "Number system")
      },
      {
        divisor: 1e6,
        symbol: __("M", null, "Number system")
      },
      {
        divisor: 1e3,
        symbol: __("K", null, "Number system")
      }
    ],
    indian: [
      {
        divisor: 1e7,
        symbol: __("Cr", null, "Number system")
      },
      {
        divisor: 1e5,
        symbol: __("L", null, "Number system")
      },
      {
        divisor: 1e3,
        symbol: __("K", null, "Number system")
      }
    ],
    nepalese: [
      {
        divisor: 1e11,
        symbol: __("Kh", null, "Number system")
      },
      {
        divisor: 1e9,
        symbol: __("Ar", null, "Number system")
      },
      {
        divisor: 1e7,
        symbol: __("Cr", null, "Number system")
      },
      {
        divisor: 1e5,
        symbol: __("L", null, "Number system")
      },
      {
        divisor: 1e3,
        symbol: __("K", null, "Number system")
      }
    ]
  };

  // frappe/public/js/frappe/utils/utils.js
  var import_cloneDeepWith = __toESM(require_cloneDeepWith());
  frappe.provide("frappe.utils");
  if (!Array.prototype.uniqBy) {
    Object.defineProperty(Array.prototype, "uniqBy", {
      value: function(key) {
        var seen = {};
        return this.filter(function(item) {
          var k = key(item);
          return k in seen ? false : seen[k] = true;
        });
      }
    });
    Object.defineProperty(Array.prototype, "move", {
      value: function(from, to) {
        this.splice(to, 0, this.splice(from, 1)[0]);
      }
    });
  }
  Object.defineProperty(Object.prototype, "setDefault", {
    value: function(key, default_value) {
      if (!(key in this))
        this[key] = default_value;
      return this[key];
    },
    writable: true
  });
  String.prototype.plural = function(revert) {
    const plural = {
      "(quiz)$": "$1zes",
      "^(ox)$": "$1en",
      "([m|l])ouse$": "$1ice",
      "(matr|vert|ind)ix|ex$": "$1ices",
      "(x|ch|ss|sh)$": "$1es",
      "([^aeiouy]|qu)y$": "$1ies",
      "(hive)$": "$1s",
      "(?:([^f])fe|([lr])f)$": "$1$2ves",
      "(shea|lea|loa|thie)f$": "$1ves",
      sis$: "ses",
      "([ti])um$": "$1a",
      "(tomat|potat|ech|her|vet)o$": "$1oes",
      "(bu)s$": "$1ses",
      "(alias)$": "$1es",
      "(octop)us$": "$1i",
      "(ax|test)is$": "$1es",
      "(us)$": "$1es",
      "([^s]+)$": "$1s"
    };
    const singular = {
      "(quiz)zes$": "$1",
      "(matr)ices$": "$1ix",
      "(vert|ind)ices$": "$1ex",
      "^(ox)en$": "$1",
      "(alias)es$": "$1",
      "(octop|vir)i$": "$1us",
      "(cris|ax|test)es$": "$1is",
      "(shoe)s$": "$1",
      "(o)es$": "$1",
      "(bus)es$": "$1",
      "([m|l])ice$": "$1ouse",
      "(x|ch|ss|sh)es$": "$1",
      "(m)ovies$": "$1ovie",
      "(s)eries$": "$1eries",
      "([^aeiouy]|qu)ies$": "$1y",
      "([lr])ves$": "$1f",
      "(tive)s$": "$1",
      "(hive)s$": "$1",
      "(li|wi|kni)ves$": "$1fe",
      "(shea|loa|lea|thie)ves$": "$1f",
      "(^analy)ses$": "$1sis",
      "((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$": "$1$2sis",
      "([ti])a$": "$1um",
      "(n)ews$": "$1ews",
      "(h|bl)ouses$": "$1ouse",
      "(corpse)s$": "$1",
      "(us)es$": "$1",
      s$: ""
    };
    const irregular = {
      move: "moves",
      foot: "feet",
      goose: "geese",
      sex: "sexes",
      child: "children",
      man: "men",
      tooth: "teeth",
      person: "people"
    };
    const uncountable = [
      "sheep",
      "fish",
      "deer",
      "moose",
      "series",
      "species",
      "money",
      "rice",
      "information",
      "equipment"
    ];
    if (uncountable.indexOf(this.toLowerCase()) >= 0)
      return this;
    let word;
    let pattern;
    let replace;
    for (word in irregular) {
      if (revert) {
        pattern = new RegExp(irregular[word] + "$", "i");
        replace = word;
      } else {
        pattern = new RegExp(word + "$", "i");
        replace = irregular[word];
      }
      if (pattern.test(this))
        return this.replace(pattern, replace);
    }
    let array;
    if (revert)
      array = singular;
    else
      array = plural;
    let reg;
    for (reg in array) {
      pattern = new RegExp(reg, "i");
      if (pattern.test(this))
        return this.replace(pattern, array[reg]);
    }
    return this;
  };
  Object.assign(frappe.utils, {
    get_random: function(len) {
      var text = "";
      var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
      for (var i2 = 0; i2 < len; i2++)
        text += possible.charAt(Math.floor(Math.random() * possible.length));
      return text;
    },
    get_file_link: function(filename) {
      filename = cstr(filename);
      if (frappe.utils.is_url(filename)) {
        return filename;
      } else if (filename.indexOf("/") === -1) {
        return "files/" + filename;
      } else {
        return filename;
      }
    },
    replace_newlines(t) {
      return t ? t.replace(/\n/g, "<br>") : "";
    },
    is_html: function(txt) {
      if (!txt)
        return false;
      if (txt.indexOf("<br>") == -1 && txt.indexOf("<p") == -1 && txt.indexOf("<img") == -1 && txt.indexOf("<div") == -1 && !txt.includes("<span")) {
        return false;
      }
      return true;
    },
    is_mac: function() {
      return window.navigator.platform === "MacIntel";
    },
    is_xs: function() {
      return $(document).width() < 768;
    },
    is_sm: function() {
      return $(document).width() < 991 && $(document).width() >= 768;
    },
    is_md: function() {
      return $(document).width() < 1199 && $(document).width() >= 991;
    },
    is_json: function(str) {
      try {
        JSON.parse(str);
      } catch (e) {
        return false;
      }
      return true;
    },
    parse_json: function(str) {
      let parsed_json = "";
      try {
        parsed_json = JSON.parse(str);
      } catch (e) {
        return str;
      }
      return parsed_json;
    },
    strip_whitespace: function(html) {
      return (html || "").replace(/<p>\s*<\/p>/g, "").replace(/<br>(\s*<br>\s*)+/g, "<br><br>");
    },
    encode_tags: function(html) {
      var tagsToReplace = {
        "&": "&amp;",
        "<": "&lt;",
        ">": "&gt;"
      };
      function replaceTag(tag) {
        return tagsToReplace[tag] || tag;
      }
      return html.replace(/[&<>]/g, replaceTag);
    },
    strip_original_content: function(txt) {
      var out = [], part = [], newline = txt.indexOf("<br>") === -1 ? "\n" : "<br>";
      $.each(txt.split(newline), function(i2, t) {
        var tt = strip(t);
        if (tt && (tt.substr(0, 1) === ">" || tt.substr(0, 4) === "&gt;")) {
          part.push(t);
        } else {
          out = out.concat(part);
          out.push(t);
          part = [];
        }
      });
      return out.join(newline);
    },
    escape_html: function(txt) {
      if (!txt)
        return "";
      let escape_html_mapping = {
        "&": "&amp;",
        "<": "&lt;",
        ">": "&gt;",
        '"': "&quot;",
        "'": "&#39;",
        "`": "&#x60;",
        "=": "&#x3D;"
      };
      return String(txt).replace(/[&<>"'`=]/g, (char) => escape_html_mapping[char] || char);
    },
    unescape_html: function(txt) {
      let unescape_html_mapping = {
        "&amp;": "&",
        "&lt;": "<",
        "&gt;": ">",
        "&quot;": '"',
        "&#39;": "'",
        "&#x60;": "`",
        "&#x3D;": "="
      };
      return String(txt).replace(
        /&amp;|&lt;|&gt;|&quot;|&#39;|&#x60;|&#x3D;/g,
        (char) => unescape_html_mapping[char] || char
      );
    },
    html2text: function(html) {
      const parser = new DOMParser();
      const dom = parser.parseFromString(html, "text/html");
      return dom.body.textContent;
    },
    is_url: function(txt) {
      return txt.toLowerCase().substr(0, 7) == "http://" || txt.toLowerCase().substr(0, 8) == "https://";
    },
    to_title_case: function(string, with_space = false) {
      let titlecased_string = string.toLowerCase().replace(/(?:^|[\s-/])\w/g, function(match) {
        return match.toUpperCase();
      });
      let replace_with = with_space ? " " : "";
      return titlecased_string.replace(/-|_/g, replace_with);
    },
    toggle_blockquote: function(txt) {
      if (!txt)
        return txt;
      var content = $("<div></div>").html(txt);
      content.find("blockquote").parent("blockquote").addClass("hidden").before(
        '<p><a class="text-muted btn btn-default toggle-blockquote" style="padding: 2px 7px 0px; line-height: 1;"> 					\u2022 \u2022 \u2022 				</a></p>'
      );
      return content.html();
    },
    scroll_to: function(element, animate = true, additional_offset, element_to_be_scrolled, callback, highlight_element = false) {
      if (frappe.flags.disable_auto_scroll)
        return;
      element_to_be_scrolled = element_to_be_scrolled || $("html, body");
      let scroll_top = 0;
      if (element) {
        scroll_top = typeof element == "number" ? element - cint(additional_offset) : this.get_scroll_position(element, additional_offset);
      }
      if (scroll_top < 0) {
        scroll_top = 0;
      }
      const highlight = () => {
        if (highlight_element) {
          $(element).addClass("highlight");
          document.addEventListener(
            "click",
            function() {
              $(element).removeClass("highlight");
            },
            { once: true }
          );
        }
      };
      if (scroll_top == element_to_be_scrolled.scrollTop()) {
        return highlight();
      }
      if (animate) {
        element_to_be_scrolled.animate({
          scrollTop: scroll_top
        }).promise().then(() => {
          highlight();
          callback && callback();
        });
      } else {
        element_to_be_scrolled.scrollTop(scroll_top);
      }
    },
    get_scroll_position: function(element, additional_offset) {
      let header_offset = $(".navbar").height() + $(".page-head:visible").height() || $(".navbar").height();
      return $(element).offset().top - header_offset - cint(additional_offset);
    },
    filter_dict: function(dict, filters) {
      var ret = [];
      if (typeof filters == "string") {
        return [dict[filters]];
      }
      $.each(dict, function(i2, d) {
        for (var key in filters) {
          if ($.isArray(filters[key])) {
            if (filters[key][0] == "in") {
              if (filters[key][1].indexOf(d[key]) == -1)
                return;
            } else if (filters[key][0] == "not in") {
              if (filters[key][1].indexOf(d[key]) != -1)
                return;
            } else if (filters[key][0] == "<") {
              if (!(d[key] < filters[key]))
                return;
            } else if (filters[key][0] == "<=") {
              if (!(d[key] <= filters[key]))
                return;
            } else if (filters[key][0] == ">") {
              if (!(d[key] > filters[key]))
                return;
            } else if (filters[key][0] == ">=") {
              if (!(d[key] >= filters[key]))
                return;
            }
          } else {
            if (d[key] != filters[key])
              return;
          }
        }
        ret.push(d);
      });
      return ret;
    },
    comma_or: function(list) {
      return frappe.utils.comma_sep(list, " " + __("or") + " ");
    },
    comma_and: function(list) {
      return frappe.utils.comma_sep(list, " " + __("and") + " ");
    },
    comma_sep: function(list, sep) {
      if (list instanceof Array) {
        if (list.length == 0) {
          return "";
        } else if (list.length == 1) {
          return list[0];
        } else {
          return list.slice(0, list.length - 1).join(", ") + sep + list.slice(-1)[0];
        }
      } else {
        return list;
      }
    },
    set_footnote: function(footnote_area, wrapper, txt) {
      if (!footnote_area) {
        footnote_area = $('<div class="text-muted footnote-area level">').appendTo(wrapper);
      }
      if (txt) {
        footnote_area.html(txt);
      } else {
        footnote_area.remove();
        footnote_area = null;
      }
      return footnote_area;
    },
    get_args_dict_from_url: function(txt) {
      var args = {};
      $.each(decodeURIComponent(txt).split("&"), function(i2, arg) {
        arg = arg.split("=");
        args[arg[0]] = arg[1];
      });
      return args;
    },
    get_url_from_dict: function(args) {
      return $.map(args, function(val, key) {
        if (val !== null)
          return encodeURIComponent(key) + "=" + encodeURIComponent(val);
        else
          return null;
      }).join("&") || "";
    },
    validate_type: function(val, type2) {
      var regExp;
      switch (type2) {
        case "phone":
          regExp = /^([0-9 +_\-,.*#()]){1,20}$/;
          break;
        case "name":
          regExp = /^[\w][\w'-]*([ \w][\w'-]+)*$/;
          break;
        case "number":
          regExp = /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/;
          break;
        case "digits":
          regExp = /^\d+$/;
          break;
        case "alphanum":
          regExp = /^\w+$/;
          break;
        case "email":
          regExp = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
          break;
        case "url":
          regExp = /^((([A-Za-z0-9.+-]+:(?:\/\/)?)(?:[-;:&=\+\,\w]@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/i;
          break;
        case "dateIso":
          regExp = /^(\d{4})\D?(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])$/;
          break;
        default:
          return false;
      }
      return "" !== val ? regExp.test(val) : false;
    },
    guess_style: function(text, default_style, _colour) {
      var style = default_style || "default";
      var colour = "gray";
      if (text) {
        text = cstr(text);
        if (has_words(["Pending", "Review", "Medium", "Not Approved"], text)) {
          style = "warning";
          colour = "orange";
        } else if (has_words(["Open", "Urgent", "High", "Failed", "Rejected", "Error"], text)) {
          style = "danger";
          colour = "red";
        } else if (has_words(
          [
            "Closed",
            "Finished",
            "Converted",
            "Completed",
            "Complete",
            "Confirmed",
            "Approved",
            "Yes",
            "Active",
            "Available",
            "Paid",
            "Success"
          ],
          text
        )) {
          style = "success";
          colour = "green";
        } else if (has_words(["Submitted"], text)) {
          style = "info";
          colour = "blue";
        }
      }
      return _colour ? colour : style;
    },
    guess_colour: function(text) {
      return frappe.utils.guess_style(text, null, true);
    },
    get_indicator_color: function(state) {
      return frappe.db.get_list("Workflow State", { filters: { name: state }, fields: ["name", "style"] }).then((res) => {
        const state2 = res[0];
        if (!state2.style) {
          return frappe.utils.guess_colour(state2.name);
        }
        const style = state2.style;
        const colour_map = {
          Success: "green",
          Warning: "orange",
          Danger: "red",
          Primary: "blue"
        };
        return colour_map[style];
      });
    },
    sort: function(list, key, compare_type, reverse) {
      if (!list || list.length < 2)
        return list || [];
      var sort_fn = {
        string: function(a, b) {
          return cstr(a[key]).localeCompare(cstr(b[key]));
        },
        number: function(a, b) {
          return flt(a[key]) - flt(b[key]);
        }
      };
      if (!compare_type)
        compare_type = typeof list[0][key] === "string" ? "string" : "number";
      list.sort(sort_fn[compare_type]);
      if (reverse) {
        list.reverse();
      }
      return list;
    },
    unique: function(list) {
      var dict = {}, arr = [];
      for (var i2 = 0, l = list.length; i2 < l; i2++) {
        if (!(list[i2] in dict)) {
          dict[list[i2]] = null;
          arr.push(list[i2]);
        }
      }
      return arr;
    },
    remove_nulls: function(list) {
      var new_list = [];
      for (var i2 = 0, l = list.length; i2 < l; i2++) {
        if (!is_null(list[i2])) {
          new_list.push(list[i2]);
        }
      }
      return new_list;
    },
    all: function(lst) {
      for (var i2 = 0, l = lst.length; i2 < l; i2++) {
        if (!lst[i2]) {
          return false;
        }
      }
      return true;
    },
    dict: function(keys, values) {
      var out = [];
      $.each(values, function(row_idx, row) {
        var new_row = {};
        $.each(keys, function(key_idx, key) {
          new_row[key] = row[key_idx];
        });
        out.push(new_row);
      });
      return out;
    },
    sum: function(list) {
      return list.reduce(function(previous_value, current_value) {
        return flt(previous_value) + flt(current_value);
      }, 0);
    },
    arrays_equal: function(arr1, arr2) {
      if (!arr1 || !arr2) {
        return false;
      }
      if (arr1.length != arr2.length) {
        return false;
      }
      for (var i2 = 0; i2 < arr1.length; i2++) {
        if ($.isArray(arr1[i2])) {
          if (!frappe.utils.arrays_equal(arr1[i2], arr2[i2])) {
            return false;
          }
        } else if (arr1[i2] !== arr2[i2]) {
          return false;
        }
      }
      return true;
    },
    intersection: function(a, b) {
      var ai = 0, bi = 0;
      var result = new Array();
      a = [].concat(a).sort();
      b = [].concat(b).sort();
      while (ai < a.length && bi < b.length) {
        if (a[ai] < b[bi]) {
          ai++;
        } else if (a[ai] > b[bi]) {
          bi++;
        } else {
          result.push(a[ai]);
          ai++;
          bi++;
        }
      }
      return result;
    },
    resize_image: function(reader, callback, max_width, max_height) {
      var tempImg = new Image();
      if (!max_width)
        max_width = 600;
      if (!max_height)
        max_height = 400;
      tempImg.src = reader.result;
      tempImg.onload = function() {
        var tempW = tempImg.width;
        var tempH = tempImg.height;
        if (tempW > tempH) {
          if (tempW > max_width) {
            tempH *= max_width / tempW;
            tempW = max_width;
          }
        } else {
          if (tempH > max_height) {
            tempW *= max_height / tempH;
            tempH = max_height;
          }
        }
        var canvas = document.createElement("canvas");
        canvas.width = tempW;
        canvas.height = tempH;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(this, 0, 0, tempW, tempH);
        var dataURL = canvas.toDataURL("image/jpeg");
        setTimeout(function() {
          callback(dataURL);
        }, 10);
      };
    },
    csv_to_array: function(strData, strDelimiter) {
      strDelimiter = strDelimiter || ",";
      var objPattern = new RegExp(
        "(\\" + strDelimiter + '|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\' + strDelimiter + "\\r\\n]*))",
        "gi"
      );
      var arrData = [[]];
      var arrMatches = null;
      while (arrMatches = objPattern.exec(strData)) {
        var strMatchedDelimiter = arrMatches[1];
        if (strMatchedDelimiter.length && strMatchedDelimiter !== strDelimiter) {
          arrData.push([]);
        }
        var strMatchedValue;
        if (arrMatches[2]) {
          strMatchedValue = arrMatches[2].replace(new RegExp('""', "g"), '"');
        } else {
          strMatchedValue = arrMatches[3];
        }
        arrData[arrData.length - 1].push(strMatchedValue);
      }
      return arrData;
    },
    warn_page_name_change: function() {
      frappe.msgprint(__("Note: Changing the Page Name will break previous URL to this page."));
    },
    set_title: function(title) {
      frappe._original_title = title;
      if (frappe._title_prefix) {
        title = frappe._title_prefix + " " + title.replace(/<[^>]*>/g, "");
      }
      document.title = title;
      const sub_path = frappe.router.get_sub_path();
      frappe.route_titles[sub_path] = title;
    },
    set_title_prefix: function(prefix) {
      frappe._title_prefix = prefix;
      frappe.utils.set_title(frappe._original_title);
    },
    is_image_file: function(filename) {
      if (!filename)
        return false;
      filename = filename.split("?")[0];
      return /\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(filename);
    },
    is_video_file: function(filename) {
      if (!filename)
        return false;
      filename = filename.split("?")[0];
      return /\.(mov|mp4|mkv|webm)$/i.test(filename);
    },
    play_sound: function(name2) {
      try {
        if (frappe.boot.user.mute_sounds) {
          return;
        }
        var audio = $("#sound-" + name2)[0];
        audio.volume = audio.getAttribute("volume");
        audio.play();
      } catch (e) {
        console.log("Cannot play sound", name2, e);
      }
    },
    split_emails: function(txt) {
      var email_list = [];
      if (!txt) {
        return email_list;
      }
      txt.split(/[,\n](?=(?:[^"]|"[^"]*")*$)/g).forEach(function(email) {
        email = email.trim();
        if (email) {
          email_list.push(email);
        }
      });
      return email_list;
    },
    supportsES6: function() {
      try {
        new Function("(a = 0) => a");
        return true;
      } catch (err) {
        return false;
      }
    }(),
    throttle: function(func, wait, options) {
      var context, args, result;
      var timeout = null;
      var previous = 0;
      if (!options)
        options = {};
      let later = function() {
        previous = options.leading === false ? 0 : Date.now();
        timeout = null;
        result = func.apply(context, args);
        if (!timeout)
          context = args = null;
      };
      return function() {
        var now = Date.now();
        if (!previous && options.leading === false)
          previous = now;
        let remaining = wait - (now - previous);
        context = this;
        args = arguments;
        if (remaining <= 0 || remaining > wait) {
          if (timeout) {
            clearTimeout(timeout);
            timeout = null;
          }
          previous = now;
          result = func.apply(context, args);
          if (!timeout)
            context = args = null;
        } else if (!timeout && options.trailing !== false) {
          timeout = setTimeout(later, remaining);
        }
        return result;
      };
    },
    debounce: function(func, wait, immediate) {
      var timeout;
      return function() {
        var context = this, args = arguments;
        var later = function() {
          timeout = null;
          if (!immediate)
            func.apply(context, args);
        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow)
          func.apply(context, args);
      };
    },
    get_form_link: function(doctype, name2, html = false, display_text = null, query_params_obj = null) {
      display_text = display_text || name2;
      name2 = encodeURIComponent(name2);
      let route = `/app/${encodeURIComponent(doctype.toLowerCase().replace(/ /g, "-"))}/${name2}`;
      if (query_params_obj) {
        route += frappe.utils.make_query_string(query_params_obj);
      }
      if (html) {
        return `<a href="${route}">${display_text}</a>`;
      }
      return route;
    },
    get_route_label(route_str) {
      let route = route_str.split("/");
      if (route[2] === "Report" || route[0] === "query-report") {
        return __("{0} Report", [__(route[3]) || __(route[1])]);
      }
      if (route[0] === "List") {
        return __("{0} List", [__(route[1])]);
      }
      if (route[0] === "modules") {
        return __("{0} Modules", [__(route[1])]);
      }
      if (route[0] === "dashboard") {
        return __("{0} Dashboard", [__(route[1])]);
      }
      return __(frappe.utils.to_title_case(__(route[0]), true));
    },
    report_column_total: function(values, column, type2) {
      if (column.column.disable_total) {
        return "";
      } else if (values.length > 0) {
        if (column.column.fieldtype == "Percent" || type2 === "mean") {
          return values.reduce((a, b) => flt(a) + flt(b)) / values.length;
        } else if (column.column.fieldtype == "Int") {
          return values.reduce((a, b) => cint(a) + cint(b));
        } else if (frappe.model.is_numeric_field(column.column.fieldtype)) {
          return values.reduce((a, b) => flt(a) + flt(b));
        } else {
          return null;
        }
      } else {
        return null;
      }
    },
    setup_search($wrapper, el_class, text_class, data_attr) {
      const $search_input = $wrapper.find('[data-element="search"]').show();
      $search_input.focus().val("");
      const $elements = $wrapper.find(el_class).show();
      $search_input.off("keyup").on("keyup", () => {
        let text_filter = $search_input.val().toLowerCase();
        text_filter = text_filter.replace(/^\s+|\s+$/g, "");
        for (let i2 = 0; i2 < $elements.length; i2++) {
          const text_element = $elements.eq(i2).find(text_class);
          const text = text_element.text().toLowerCase();
          let name2 = "";
          if (data_attr && text_element.attr(data_attr)) {
            name2 = text_element.attr(data_attr).toLowerCase();
          }
          if (text.includes(text_filter) || name2.includes(text_filter)) {
            $elements.eq(i2).css("display", "");
          } else {
            $elements.eq(i2).css("display", "none");
          }
        }
      });
    },
    setup_timer(start, end, $element) {
      const increment = end > start;
      let counter = start;
      let interval = setInterval(() => {
        increment ? counter++ : counter--;
        if (increment ? counter > end : counter < end) {
          clearInterval(interval);
          return;
        }
        $element.text(counter);
      }, 1e3);
    },
    deep_equal(a, b) {
      return (0, import_fast_deep_equal.default)(a, b);
    },
    deep_clone(obj, customizer) {
      return (0, import_cloneDeepWith.default)(obj, customizer);
    },
    file_name_ellipsis(filename, length2) {
      let first_part_length = length2 * 2 / 3;
      let last_part_length = length2 - first_part_length;
      let parts2 = filename.split(".");
      let extn = parts2.pop();
      let name2 = parts2.join("");
      let first_part = name2.slice(0, first_part_length);
      let last_part = name2.slice(-last_part_length);
      if (name2.length > length2) {
        return `${first_part}...${last_part}.${extn}`;
      } else {
        return filename;
      }
    },
    get_decoded_string(dataURI) {
      let parts2 = dataURI.split(",");
      const encoded_data = parts2[1];
      let decoded = atob(encoded_data);
      try {
        const escaped = escape(decoded);
        decoded = decodeURIComponent(escaped);
      } catch (e) {
      }
      return decoded;
    },
    copy_to_clipboard(string) {
      const show_success_alert = () => {
        frappe.show_alert({
          indicator: "green",
          message: __("Copied to clipboard.")
        });
      };
      if (navigator.clipboard && window.isSecureContext) {
        navigator.clipboard.writeText(string).then(show_success_alert);
      } else {
        let input = $("<textarea>");
        $("body").append(input);
        input.val(string).select();
        document.execCommand("copy");
        show_success_alert();
        input.remove();
      }
    },
    is_rtl(lang = null) {
      return ["ar", "he", "fa", "ps"].includes(lang || frappe.boot.lang);
    },
    bind_actions_with_object($el, object) {
      $($el).off("click.class_actions");
      $($el).on("click.class_actions", "[data-action]", (e) => {
        let $target = $(e.currentTarget);
        let action = $target.data("action");
        let method = object[action];
        method ? object[action](e, $target) : null;
      });
      return $el;
    },
    eval(code, context = {}) {
      let variable_names = Object.keys(context);
      let variables = Object.values(context);
      code = `let out = ${code}; return out`;
      try {
        let expression_function = new Function(...variable_names, code);
        return expression_function(...variables);
      } catch (error) {
        console.log("Error evaluating the following expression:");
        console.error(code);
        throw error;
      }
    },
    get_browser() {
      let ua = navigator.userAgent;
      let tem;
      let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
      if (/trident/i.test(M[1])) {
        tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
        return { name: "IE", version: tem[1] || "" };
      }
      if (M[1] === "Chrome") {
        tem = ua.match(/\bOPR|Edge\/(\d+)/);
        if (tem != null) {
          return { name: "Opera", version: tem[1] };
        }
      }
      M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, "-?"];
      if ((tem = ua.match(/version\/(\d+)/i)) != null) {
        M.splice(1, 1, tem[1]);
      }
      return {
        name: M[0],
        version: M[1]
      };
    },
    get_formatted_duration(value2, duration_options = null) {
      let duration = "";
      if (!duration_options) {
        duration_options = {
          hide_days: 0,
          hide_seconds: 0
        };
      }
      if (value2) {
        let total_duration = frappe.utils.seconds_to_duration(value2, duration_options);
        if (total_duration.days) {
          duration += total_duration.days + __("d", null, "Days (Field: Duration)");
        }
        if (total_duration.hours) {
          duration += duration.length ? " " : "";
          duration += total_duration.hours + __("h", null, "Hours (Field: Duration)");
        }
        if (total_duration.minutes) {
          duration += duration.length ? " " : "";
          duration += total_duration.minutes + __("m", null, "Minutes (Field: Duration)");
        }
        if (total_duration.seconds) {
          duration += duration.length ? " " : "";
          duration += total_duration.seconds + __("s", null, "Seconds (Field: Duration)");
        }
      }
      return duration;
    },
    seconds_to_duration(seconds, duration_options) {
      const round = seconds > 0 ? Math.floor : Math.ceil;
      const total_duration = {
        days: round(seconds / 86400),
        hours: round(seconds % 86400 / 3600),
        minutes: round(seconds % 3600 / 60),
        seconds: round(seconds % 60)
      };
      if (duration_options && duration_options.hide_days) {
        total_duration.hours = round(seconds / 3600);
        total_duration.days = 0;
      }
      return total_duration;
    },
    duration_to_seconds(days = 0, hours = 0, minutes = 0, seconds = 0) {
      let value2 = 0;
      if (days) {
        value2 += days * 24 * 60 * 60;
      }
      if (hours) {
        value2 += hours * 60 * 60;
      }
      if (minutes) {
        value2 += minutes * 60;
      }
      if (seconds) {
        value2 += seconds;
      }
      return value2;
    },
    get_duration_options: function(docfield) {
      return {
        hide_days: docfield.hide_days,
        hide_seconds: docfield.hide_seconds
      };
    },
    get_number_system: function(country) {
      if (["Bangladesh", "India", "Myanmar", "Pakistan"].includes(country)) {
        return number_systems_default.indian;
      } else if (country == "Nepal") {
        return number_systems_default.nepalese;
      } else {
        return number_systems_default.default;
      }
    },
    map_defaults: {
      center: [19.08, 72.8961],
      zoom: 13,
      tiles: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
      options: {
        attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
      },
      image_path: "/assets/frappe/images/leaflet/"
    },
    icon(icon_name, size = "sm", icon_class = "", icon_style = "", svg_class = "") {
      let size_class = "";
      let is_espresso = icon_name.startsWith("es-");
      icon_name = is_espresso ? `${"#" + icon_name}` : `${"#icon-" + icon_name}`;
      if (typeof size == "object") {
        icon_style += ` width: ${size.width}; height: ${size.height}`;
      } else {
        size_class = `icon-${size}`;
      }
      return `<svg class="${is_espresso ? icon_name.startsWith("es-solid") ? "es-icon es-solid" : "es-icon es-line" : "icon"} ${svg_class} ${size_class}" style="${icon_style}" aria-hidden="true">
			<use class="${icon_class}" href="${icon_name}"></use>
		</svg>`;
    },
    flag(country_code) {
      return `<img
		src="https://flagcdn.com/${country_code}.svg"
		width="20" height="15">`;
    },
    make_chart(wrapper, custom_options = {}) {
      let chart_args = {
        type: "bar",
        colors: ["light-blue"],
        axisOptions: {
          xIsSeries: 1,
          shortenYAxisNumbers: 1,
          xAxisMode: "tick",
          numberFormatter: frappe.utils.format_chart_axis_number
        }
      };
      for (let key in custom_options) {
        if (typeof chart_args[key] === "object" && typeof custom_options[key] === "object") {
          chart_args[key] = Object.assign(chart_args[key], custom_options[key]);
        } else {
          chart_args[key] = custom_options[key];
        }
      }
      return new frappe.Chart(wrapper, chart_args);
    },
    format_chart_axis_number(label, country) {
      const default_country = frappe.sys_defaults.country;
      return frappe.utils.shorten_number(label, country || default_country, 3);
    },
    generate_route(item) {
      const type2 = item.type.toLowerCase();
      if (type2 === "doctype") {
        item.doctype = item.name;
      }
      let route = "";
      if (!item.route) {
        if (item.link) {
          route = strip(item.link, "#");
        } else if (type2 === "doctype") {
          let doctype_slug = frappe.router.slug(item.doctype);
          if (frappe.model.is_single(item.doctype)) {
            route = doctype_slug;
          } else {
            switch (item.doc_view) {
              case "List":
                if (item.filters) {
                  frappe.route_options = item.filters;
                }
                route = `${doctype_slug}/view/list`;
                break;
              case "Tree":
                route = `${doctype_slug}/view/tree`;
                break;
              case "Report Builder":
                route = `${doctype_slug}/view/report`;
                break;
              case "Dashboard":
                route = `${doctype_slug}/view/dashboard`;
                break;
              case "New":
                route = `${doctype_slug}/new`;
                break;
              case "Calendar":
                route = `${doctype_slug}/view/calendar/default`;
                break;
              case "Kanban":
                route = `${doctype_slug}/view/kanban`;
                if (item.kanban_board) {
                  route += `/${item.kanban_board}`;
                }
                break;
              default:
                route = doctype_slug;
            }
          }
        } else if (type2 === "report") {
          if (item.is_query_report) {
            route = "query-report/" + item.name;
          } else if (!item.is_query_report && item.report_ref_doctype) {
            route = frappe.router.slug(item.report_ref_doctype) + "/view/report/" + item.name;
          } else {
            route = "/report/" + item.name;
          }
        } else if (type2 === "page") {
          route = item.name;
        } else if (type2 === "dashboard") {
          route = `dashboard-view/${item.name}`;
        }
      } else {
        route = item.route;
      }
      if (item.route_options) {
        route += "?" + $.map(item.route_options, function(value2, key) {
          return encodeURIComponent(key) + "=" + encodeURIComponent(value2);
        }).join("&");
      }
      return `/app/${route}`;
    },
    shorten_number: function(number, country, min_length = 4, max_no_of_decimals = 2) {
      const len = String(number).match(/\d/g).length;
      if (len < min_length) {
        return number.toString();
      }
      const number_system = this.get_number_system(country);
      let x = Math.abs(Math.round(number));
      const x_string = x.toString();
      if (x_string.length < min_length) {
        return x_string;
      }
      for (const map2 of number_system) {
        if (x >= map2.divisor) {
          let result = number / map2.divisor;
          const no_of_decimals = this.get_number_of_decimals(result);
          result = no_of_decimals > max_no_of_decimals ? result.toFixed(max_no_of_decimals) : result;
          return result + " " + map2.symbol;
        }
      }
      return number.toFixed(max_no_of_decimals);
    },
    get_number_of_decimals: function(number) {
      if (Math.floor(number) === number)
        return 0;
      return number.toString().split(".")[1].length || 0;
    },
    build_summary_item(summary) {
      if (summary.type == "separator") {
        return $(`<div class="summary-separator">
				<div class="summary-value ${summary.color ? summary.color.toLowerCase() : "text-muted"}">${summary.value}</div>
			</div>`);
      }
      let df = { fieldtype: summary.datatype };
      let doc = null;
      if (summary.datatype == "Currency") {
        df.options = "currency";
        doc = { currency: summary.currency };
      }
      let value2 = frappe.format(summary.value, df, { only_value: true }, doc);
      let color = summary.indicator ? summary.indicator.toLowerCase() : summary.color ? summary.color.toLowerCase() : "";
      return $(`<div class="summary-item">
			<span class="summary-label">${__(summary.label)}</span>
			<div class="summary-value ${color}">${value2}</div>
		</div>`);
    },
    print(doctype, docname, print_format, letterhead, lang_code) {
      let w = window.open(
        frappe.urllib.get_full_url(
          "/printview?doctype=" + encodeURIComponent(doctype) + "&name=" + encodeURIComponent(docname) + "&trigger_print=1&format=" + encodeURIComponent(print_format) + "&no_letterhead=" + (letterhead ? "0" : "1") + "&letterhead=" + encodeURIComponent(letterhead) + (lang_code ? "&_lang=" + lang_code : "")
        )
      );
      if (!w) {
        frappe.msgprint(__("Please enable pop-ups"));
        return;
      }
    },
    get_clipboard_data(clipboard_paste_event) {
      let e = clipboard_paste_event;
      let clipboard_data = e.clipboardData || window.clipboardData || e.originalEvent.clipboardData;
      return clipboard_data.getData("Text");
    },
    add_custom_button(html, action, class_name = "", title = "", btn_type, wrapper, prepend) {
      if (!btn_type)
        btn_type = "btn-secondary";
      let button = $(
        `<button class="btn ${btn_type} btn-xs ${class_name}" title="${title}">${html}</button>`
      );
      button.click((event) => {
        event.stopPropagation();
        action && action(event);
      });
      !prepend && button.appendTo(wrapper);
      prepend && wrapper.prepend(button);
    },
    add_select_group_button(wrapper, actions, btn_type, icon = "", prepend) {
      let selected_action = actions[0];
      let $select_group_button = $(`
			<div class="btn-group select-group-btn">
				<button type="button" class="btn ${btn_type} btn-sm selected-button">
					<span class="left-icon">${icon && frappe.utils.icon(icon, "xs")}</span>
					<span class="label">${selected_action.label}</span>
				</button>

				<button type="button" class="btn ${btn_type} btn-sm dropdown-toggle dropdown-toggle-split" data-toggle="dropdown">
					${frappe.utils.icon("down", "xs")}
				</button>

				<ul class="dropdown-menu dropdown-menu-right" role="menu"></ul>
			</div>
		`);
      actions.forEach((action) => {
        $(`<li>
				<a class="dropdown-item flex">
					<div class="tick-icon mr-2">${frappe.utils.icon("check", "xs")}</div>
					<div>
						<div class="item-label">${action.label}</div>
						<div class="item-description text-muted small">${action.description || ""}</div>
					</div>
				</a>
			</li>`).appendTo($select_group_button.find(".dropdown-menu")).click((e) => {
          selected_action = action;
          $select_group_button.find(".selected-button .label").text(action.label);
          $(e.currentTarget).find(".tick-icon").addClass("selected");
          $(e.currentTarget).siblings().find(".tick-icon").removeClass("selected");
        });
      });
      $select_group_button.find(".dropdown-menu li:first-child .tick-icon").addClass("selected");
      $select_group_button.find(".selected-button").click((event) => {
        event.stopPropagation();
        selected_action.action && selected_action.action(event);
      });
      !prepend && $select_group_button.appendTo(wrapper);
      prepend && wrapper.prepend($select_group_button);
      return $select_group_button;
    },
    sleep(time) {
      return new Promise((resolve) => setTimeout(resolve, time));
    },
    parse_array(array) {
      if (array && array.length !== 0) {
        return array;
      }
      return void 0;
    },
    range(start, end) {
      if (!end) {
        end = start;
        start = 0;
      }
      let arr = [];
      for (let i2 = start; i2 < end; i2++) {
        arr.push(i2);
      }
      return arr;
    },
    get_link_title(doctype, name2) {
      if (!doctype || !name2 || !frappe._link_titles) {
        return;
      }
      return frappe._link_titles[doctype + "::" + name2];
    },
    add_link_title(doctype, name2, value2) {
      if (!doctype || !name2) {
        return;
      }
      if (!frappe._link_titles) {
        frappe._link_titles = {};
      }
      frappe._link_titles[doctype + "::" + name2] = value2;
    },
    fetch_link_title(doctype, name2) {
      if (!doctype || !name2) {
        return;
      }
      try {
        return frappe.xcall("frappe.desk.search.get_link_title", {
          doctype,
          docname: name2
        }).then((title) => {
          frappe.utils.add_link_title(doctype, name2, title);
          return title;
        });
      } catch (error) {
        console.log("Error while fetching link title.");
        console.log(error);
        return Promise.resolve(name2);
      }
    },
    only_allow_num_decimal(input) {
      input.on("input", (e) => {
        let self2 = $(e.target);
        self2.val(self2.val().replace(/[^0-9.\-]/g, ""));
        if ((e.which != 46 || self2.val().indexOf(".") != -1) && (e.which < 48 || e.which > 57)) {
          e.preventDefault();
        }
      });
    },
    string_to_boolean(string) {
      switch (string.toLowerCase().trim()) {
        case "t":
        case "true":
        case "y":
        case "yes":
        case "1":
          return true;
        case "f":
        case "false":
        case "n":
        case "no":
        case "0":
        case null:
          return false;
        default:
          return string;
      }
    },
    get_filter_as_json(filters) {
      let filter = null;
      if (filters.length) {
        filter = {};
        filters.forEach((arr) => {
          filter[arr[1]] = [arr[2], arr[3]];
        });
        filter = JSON.stringify(filter);
      }
      return filter;
    },
    process_filter_expression(filter) {
      return new Function(`return ${filter}`)();
    },
    get_filter_from_json(filter_json, doctype) {
      if (filter_json) {
        if (!filter_json.length) {
          return [];
        }
        const filters_json = this.process_filter_expression(filter_json);
        if (!doctype) {
          if (Array.isArray(filters_json)) {
            let filter = {};
            filters_json.forEach((arr) => {
              filter[arr[1]] = [arr[2], arr[3]];
            });
            return filter || [];
          }
          return filters_json || [];
        }
        if (Array.isArray(filters_json)) {
          return filters_json;
        }
        return Object.keys(filters_json).map((filter) => {
          let val = filters_json[filter];
          return [doctype, filter, val[0], val[1], false];
        });
      }
    },
    load_video_player() {
      return frappe.require("video_player.bundle.js");
    },
    is_current_user(user) {
      return user === frappe.session.user;
    },
    debug: {
      watch_property(obj, prop, callback = console.trace) {
        if (!frappe.boot.developer_mode) {
          return;
        }
        console.warn("Adding property watcher, make sure to remove it after debugging.");
        const private_prop = "$_" + prop + "_$";
        obj[private_prop] = obj[prop];
        Object.defineProperty(obj, prop, {
          get: function() {
            return obj[private_prop];
          },
          set: function(value2) {
            callback();
            obj[private_prop] = value2;
          }
        });
      }
    },
    generate_tracking_url() {
      frappe.prompt(
        [
          {
            fieldname: "url",
            label: __("Web Page URL"),
            fieldtype: "Data",
            options: "URL",
            reqd: 1,
            default: localStorage.getItem("tracker_url:url")
          },
          {
            fieldname: "source",
            label: __("Source"),
            fieldtype: "Data",
            default: localStorage.getItem("tracker_url:source")
          },
          {
            fieldname: "campaign",
            label: __("Campaign"),
            fieldtype: "Link",
            ignore_link_validation: 1,
            options: "Marketing Campaign",
            default: localStorage.getItem("tracker_url:campaign")
          },
          {
            fieldname: "medium",
            label: __("Medium"),
            fieldtype: "Data",
            default: localStorage.getItem("tracker_url:medium")
          }
        ],
        function(data) {
          let url2 = data.url;
          localStorage.setItem("tracker_url:url", data.url);
          if (data.source) {
            url2 += "?source=" + data.source;
            localStorage.setItem("tracker_url:source", data.source);
          }
          if (data.campaign) {
            url2 += "&campaign=" + data.campaign;
            localStorage.setItem("tracker_url:campaign", data.campaign);
          }
          if (data.medium) {
            url2 += "&medium=" + data.medium.toLowerCase();
            localStorage.setItem("tracker_url:medium", data.medium);
          }
          frappe.utils.copy_to_clipboard(url2);
          frappe.msgprint(
            __("Tracking URL generated and copied to clipboard") + `: <br><a href="${url2}">${url2.bold()}</a>`,
            __("Here's your tracking URL")
          );
        },
        __("Generate Tracking URL")
      );
    }
  });

  // frappe/public/js/frappe/utils/common.js
  var import_md5 = __toESM(require_md5());
  frappe.avatar = function(user, css_class, title, image_url = null, remove_color = false, filterable = false) {
    let user_info;
    if (user) {
      user_info = frappe.user_info(user);
    } else {
      let full_name = title || frappe.get_cookie("full_name");
      user_info = {
        image: image_url === null ? frappe.get_cookie("user_image") : image_url,
        fullname: full_name,
        abbr: frappe.get_abbr(full_name),
        color: frappe.get_palette(full_name)
      };
    }
    if (!title) {
      title = user_info.fullname;
    }
    let data_attr = "";
    if (filterable) {
      css_class += " filterable";
      data_attr = `data-filter="_assign,like,%${user}%"`;
    }
    return frappe.get_avatar(
      css_class,
      title,
      image_url || user_info.image,
      remove_color,
      data_attr
    );
  };
  frappe.get_avatar = function(css_class, title, image_url = null, remove_color, data_attributes) {
    if (!css_class) {
      css_class = "avatar-small";
    }
    let el = document.createElement("div");
    if (image_url) {
      el.innerHTML = `
			<span class="avatar ${css_class}" ${data_attributes}>
				<span class="avatar-frame" style='background-image: url("${image_url}")'</span>
			</span>`;
    } else {
      let abbr = frappe.get_abbr(title);
      let style = "";
      if (!remove_color) {
        let color = frappe.get_palette(title);
        style = `background-color: var(${color[0]}); color: var(${color[1]})`;
      }
      if (css_class === "avatar-small" || css_class == "avatar-xs") {
        abbr = abbr.substr(0, 1);
      }
      el.innerHTML = `<span class="avatar ${css_class}" ${data_attributes}>
			<div class="avatar-frame standard-image"
				style="${style}">
					${abbr}
			</div>
		</span>`;
    }
    el.querySelector(".avatar").setAttribute("title", title);
    el.querySelector(".avatar-frame").setAttribute("title", title);
    return el.innerHTML;
  };
  frappe.avatar_group = function(users, limit = 4, options = {}) {
    let avatar_action_html = "";
    const display_users = users.slice(0, limit);
    const extra_users = users.slice(limit);
    const css_class = options.css_class || "";
    let html = display_users.map(
      (user) => frappe.avatar(user, "avatar-small " + css_class, null, null, false, options.filterable)
    ).join("");
    if (extra_users.length === 1) {
      html += frappe.avatar(
        extra_users[0],
        "avatar-small " + css_class,
        null,
        null,
        false,
        options.filterable
      );
    } else if (extra_users.length > 1) {
      html = `
			${html}
			<span class="avatar avatar-small ${css_class}">
				<div class="avatar-frame standard-image avatar-extra-count"
					title="${extra_users.map((u) => frappe.user_info(u).fullname).join(", ")}">
					+${extra_users.length}
				</div>
			</span>
		`;
    }
    if (options.action_icon) {
      avatar_action_html = `
			<span class="avatar avatar-small">
				<div class="avatar-frame avatar-action">
					${frappe.utils.icon(options.action_icon, "sm")}
				</div>
			</span>
		`;
    }
    const $avatar_group = $(`<div class="avatar-group ${options.align || "right"} ${options.overlap != false ? "overlap" : ""}">
			${html}
			${avatar_action_html}
		</div>`);
    $avatar_group.find(".avatar-action").on("click", options.action);
    return $avatar_group;
  };
  frappe.ui.scroll = function(element, animate, additional_offset) {
    var header_offset = $(".navbar").height() + $(".page-head").height();
    var top = $(element).offset().top - header_offset - cint(additional_offset);
    if (animate) {
      $("html, body").animate({ scrollTop: top });
    } else {
      $(window).scrollTop(top);
    }
  };
  frappe.palette = [
    ["--orange-avatar-bg", "--orange-avatar-color"],
    ["--pink-avatar-bg", "--pink-avatar-color"],
    ["--blue-avatar-bg", "--blue-avatar-color"],
    ["--green-avatar-bg", "--green-avatar-color"],
    ["--dark-green-avatar-bg", "--dark-green-avatar-color"],
    ["--red-avatar-bg", "--red-avatar-color"],
    ["--yellow-avatar-bg", "--yellow-avatar-color"],
    ["--purple-avatar-bg", "--purple-avatar-color"],
    ["--gray-avatar-bg", "--gray-avatar-color0"]
  ];
  frappe.get_palette = function(txt) {
    if (!txt)
      return frappe.palette[8];
    var idx = cint((parseInt((0, import_md5.default)(txt).substr(4, 2), 16) + 1) / 5.33);
    return frappe.palette[idx % 8];
  };
  frappe.get_abbr = function(txt, max_length) {
    if (!txt)
      return "";
    var abbr = "";
    $.each(txt.split(" "), function(i2, w) {
      if (abbr.length >= (max_length || 2)) {
        return false;
      } else if (!w.trim().length) {
        return true;
      }
      abbr += w.trim()[0];
    });
    return abbr || "?";
  };
  frappe.gravatars = {};
  frappe.get_gravatar = function(email_id, size = 0) {
    var param = size ? "s=" + size : "d=retro";
    if (!frappe.gravatars[email_id]) {
      frappe.gravatars[email_id] = "https://secure.gravatar.com/avatar/" + (0, import_md5.default)(email_id) + "?" + param;
    }
    return frappe.gravatars[email_id];
  };
  window.repl = function repl2(s, dict) {
    if (s == null)
      return "";
    for (var key in dict) {
      s = s.split("%(" + key + ")s").join(dict[key]);
    }
    return s;
  };
  window.replace_all = function(s, t1, t2) {
    return s.split(t1).join(t2);
  };
  window.strip_html = function(txt) {
    return cstr(txt).replace(/<[^>]*>/g, "");
  };
  window.strip = function(s, chars2) {
    if (s) {
      s = lstrip(s, chars2);
      s = rstrip(s, chars2);
      return s;
    }
  };
  window.lstrip = function lstrip2(s, chars2) {
    if (!chars2)
      chars2 = ["\n", "	", " "];
    let first_char = s.substr(0, 1);
    while (chars2.includes(first_char)) {
      s = s.substr(1);
      first_char = s.substr(0, 1);
    }
    return s;
  };
  window.rstrip = function(s, chars2) {
    if (!chars2)
      chars2 = ["\n", "	", " "];
    let last_char = s.substr(s.length - 1);
    while (chars2.includes(last_char)) {
      s = s.substr(0, s.length - 1);
      last_char = s.substr(s.length - 1);
    }
    return s;
  };
  frappe.get_cookie = function getCookie(name2) {
    return frappe.get_cookies()[name2];
  };
  frappe.get_cookies = function getCookies() {
    var c = document.cookie, v = 0, cookies = {};
    if (document.cookie.match(/^\s*\$Version=(?:"1"|1);\s*(.*)/)) {
      c = RegExp.$1;
      v = 1;
    }
    if (v === 0) {
      c.split(/[,;]/).map(function(cookie) {
        var parts2 = cookie.split(/=/, 2), name2 = decodeURIComponent(parts2[0].trimLeft()), value2 = parts2.length > 1 ? decodeURIComponent(parts2[1].trimRight()) : null;
        if (value2 && value2.charAt(0) === '"') {
          value2 = value2.substr(1, value2.length - 2);
        }
        cookies[name2] = value2;
      });
    } else {
      c.match(
        /(?:^|\s+)([!#$%&'*+\-.0-9A-Z^`a-z|~]+)=([!#$%&'*+\-.0-9A-Z^`a-z|~]*|"(?:[\x20-\x7E\x80\xFF]|\\[\x00-\x7F])*")(?=\s*[,;]|$)/g
      ).map(function($0, $1) {
        var name2 = $0, value2 = $1.charAt(0) === '"' ? $1.substr(1, -1).replace(/\\(.)/g, "$1") : $1;
        cookies[name2] = value2;
      });
    }
    return cookies;
  };
  frappe.is_mobile = function() {
    return $(document).width() < 768;
  };
  frappe.is_large_screen = function() {
    return $(document).height() > 1180;
  };
  frappe.utils.xss_sanitise = function(string, options) {
    let sanitised = string;
    const DEFAULT_OPTIONS = {
      strategies: ["html", "js"]
    };
    const HTML_ESCAPE_MAP = {
      "<": "&lt;",
      ">": "&gt;",
      '"': "&quot;",
      "'": "&#x27;",
      "/": "&#x2F;"
    };
    const REGEX_SCRIPT = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;
    const REGEX_ALERT = /confirm\(.*\)|alert\(.*\)|prompt\(.*\)/gi;
    options = Object.assign({}, DEFAULT_OPTIONS, options);
    if (options.strategies.includes("js")) {
      sanitised = sanitised.replace(REGEX_SCRIPT, "");
      sanitised = sanitised.replace(REGEX_ALERT, "");
    }
    if (options.strategies.includes("html")) {
      for (let char in HTML_ESCAPE_MAP) {
        const escape2 = HTML_ESCAPE_MAP[char];
        const regex = new RegExp(char, "g");
        sanitised = sanitised.replace(regex, escape2);
      }
    }
    return sanitised;
  };
  frappe.utils.sanitise_redirect = (url2) => {
    const is_external = (() => {
      return (url3) => {
        function domain(url4) {
          let base_domain = /^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:/\n?]+)/gim.exec(
            url4
          );
          return base_domain == null ? "" : base_domain[1];
        }
        function is_absolute(url4) {
          return /^(?:[a-z]+:)?\/\//i.test(url4);
        }
        return is_absolute(url3) ? domain(location.href) !== domain(url3) : false;
      };
    })();
    const sanitise_javascript = (url3) => {
      const REGEX_ESC_UNIT = /\s*(&#x.{1,7})?/;
      const REGEX_SCRIPT = new RegExp(
        Array.from("javascript").join(REGEX_ESC_UNIT.source),
        "gi"
      );
      return url3.replace(REGEX_SCRIPT, "");
    };
    url2 = frappe.utils.strip_url(url2);
    return is_external(url2) ? "" : sanitise_javascript(frappe.utils.xss_sanitise(url2, { strategies: ["js"] }));
  };
  frappe.utils.strip_url = (url2) => {
    return url2.replace(/^[^A-Za-z0-9(//)#]+/g, "");
  };
  frappe.utils.new_auto_repeat_prompt = function(frm) {
    const fields = [
      {
        fieldname: "frequency",
        fieldtype: "Select",
        label: __("Frequency"),
        reqd: 1,
        options: [
          { label: __("Daily"), value: "Daily" },
          { label: __("Weekly"), value: "Weekly" },
          { label: __("Monthly"), value: "Monthly" },
          { label: __("Quarterly"), value: "Quarterly" },
          { label: __("Half-yearly"), value: "Half-yearly" },
          { label: __("Yearly"), value: "Yearly" }
        ]
      },
      {
        fieldname: "start_date",
        fieldtype: "Date",
        label: __("Start Date"),
        reqd: 1,
        default: frappe.datetime.nowdate()
      },
      {
        fieldname: "end_date",
        fieldtype: "Date",
        label: __("End Date")
      }
    ];
    frappe.prompt(
      fields,
      function(values) {
        frappe.call({
          method: "frappe.automation.doctype.auto_repeat.auto_repeat.make_auto_repeat",
          args: {
            doctype: frm.doc.doctype,
            docname: frm.doc.name,
            frequency: values["frequency"],
            start_date: values["start_date"],
            end_date: values["end_date"]
          },
          callback: function(r) {
            if (r.message) {
              frappe.show_alert({
                message: __("Auto Repeat created for this document"),
                indicator: "green"
              });
              frm.reload_doc();
            }
          }
        });
      },
      __("Auto Repeat"),
      __("Save")
    );
  };
  frappe.utils.get_page_view_count = function(route) {
    return frappe.call("frappe.website.doctype.web_page_view.web_page_view.get_page_view_count", {
      path: route
    });
  };

  // frappe/public/js/frappe/form/section.js
  var Section = class {
    constructor(parent, df, card_layout, layout) {
      this.layout = layout;
      this.card_layout = card_layout;
      this.parent = parent;
      this.df = df || {};
      this.columns = [];
      this.fields_list = [];
      this.fields_dict = {};
      this.make();
      if (this.df.label && this.df.collapsible && localStorage.getItem(df.css_class + "-closed")) {
        this.collapse();
      }
      this.row = {
        wrapper: this.wrapper
      };
      this.refresh();
    }
    make() {
      let make_card = this.card_layout;
      this.wrapper = $(`<div class="row
				${this.df.is_dashboard_section ? "form-dashboard-section" : "form-section"}
				${make_card ? "card-section" : ""}" data-fieldname="${this.df.fieldname}">
			`).appendTo(this.parent);
      if (this.df) {
        if (this.df.label) {
          this.make_head();
        }
        if (this.df.description) {
          this.description_wrapper = $(
            `<div class="col-sm-12 form-section-description">
						${__(this.df.description)}
					</div>`
          );
          this.wrapper.append(this.description_wrapper);
        }
        if (this.df.css_class) {
          this.wrapper.addClass(this.df.css_class);
        }
        if (this.df.hide_border) {
          this.wrapper.toggleClass("hide-border", true);
        }
      }
      this.body = $('<div class="section-body">').appendTo(this.wrapper);
      if (this.df.body_html) {
        this.body.append(this.df.body_html);
      }
    }
    make_head() {
      this.head = $(`
			<div class="section-head">
				${__(this.df.label, null, this.df.parent)}
				<span class="ml-2 collapse-indicator mb-1"></span>
			</div>
		`);
      this.head.appendTo(this.wrapper);
      this.indicator = this.head.find(".collapse-indicator");
      this.indicator.hide();
      if (this.df.collapsible) {
        this.head.addClass("collapsible");
        this.collapse_link = this.head.on("click", () => {
          this.collapse();
        });
        this.set_icon();
        this.indicator.show();
      }
    }
    replace_field(fieldname, fieldobj) {
      var _a;
      if ((_a = this.fields_dict[fieldname]) == null ? void 0 : _a.df) {
        const olfldobj = this.fields_dict[fieldname];
        const idx = this.fields_list.findIndex((e) => e == olfldobj);
        this.fields_list.splice(idx, 1, fieldobj);
        this.fields_dict[fieldname] = fieldobj;
        fieldobj.section = this;
      }
    }
    add_field(fieldobj) {
      this.fields_list.push(fieldobj);
      this.fields_dict[fieldobj.df.fieldname] = fieldobj;
      fieldobj.section = this;
    }
    refresh(hide) {
      if (!this.df)
        return;
      hide = hide || this.df.hidden || this.df.hidden_due_to_dependency;
      this.wrapper.toggleClass("hide-control", !!hide);
    }
    collapse(hide) {
      if (!(this.head && this.body)) {
        return;
      }
      if (hide === void 0) {
        hide = !this.body.hasClass("hide");
      }
      this.body.toggleClass("hide", hide);
      this.head && this.head.toggleClass("collapsed", hide);
      this.set_icon(hide);
      this.fields_list.forEach((f) => f.on_section_collapse && f.on_section_collapse(hide));
      if (this.df.css_class)
        localStorage.setItem(this.df.css_class + "-closed", hide ? "1" : "");
    }
    set_icon(hide) {
      let indicator_icon = hide ? "es-line-down" : "es-line-up";
      this.indicator && this.indicator.html(frappe.utils.icon(indicator_icon, "sm", "mb-1"));
    }
    is_collapsed() {
      return this.body.hasClass("hide");
    }
    has_missing_mandatory() {
      let missing_mandatory = false;
      for (let j = 0, l = this.fields_list.length; j < l; j++) {
        const section_df = this.fields_list[j].df;
        if (section_df.reqd && this.layout.doc[section_df.fieldname] == null) {
          missing_mandatory = true;
          break;
        }
      }
      return missing_mandatory;
    }
    hide() {
      this.on_section_toggle(false);
    }
    show() {
      this.on_section_toggle(true);
    }
    on_section_toggle(show) {
      this.wrapper.toggleClass("hide-control", !show);
    }
  };

  // frappe/public/js/frappe/form/tab.js
  var Tab2 = class {
    constructor(layout, df, frm, tab_link_container, tabs_content) {
      var _a, _b;
      this.layout = layout;
      this.df = df || {};
      this.frm = frm;
      this.doctype = (_b = (_a = this.frm) == null ? void 0 : _a.doctype) != null ? _b : this.df.parent;
      this.label = this.df && this.df.label;
      this.tab_link_container = tab_link_container;
      this.tabs_content = tabs_content;
      this.make();
      this.setup_listeners();
      this.refresh();
    }
    make() {
      const id = `${frappe.scrub(this.doctype, "-")}-${this.df.fieldname}`;
      this.tab_link = $(`
			<li class="nav-item">
				<a class="nav-link ${this.df.active ? "active" : ""}" id="${id}-tab"
					data-toggle="tab"
					data-fieldname="${this.df.fieldname}"
					href="#${id}"
					role="tab"
					aria-controls="${id}">
						${__(this.label)}
				</a>
			</li>
		`).appendTo(this.tab_link_container);
      this.wrapper = $(`<div class="tab-pane fade show ${this.df.active ? "active" : ""}"
			id="${id}" role="tabpanel" aria-labelledby="${id}-tab">`).appendTo(this.tabs_content);
    }
    refresh() {
      if (!this.df)
        return;
      let hide = this.df.hidden || this.df.hidden_due_to_dependency;
      if (!hide && this.frm && !this.frm.get_perm(this.df.permlevel || 0, "read")) {
        hide = true;
      }
      if (!hide) {
        hide = true;
        if (this.wrapper.find(
          ".form-section:not(.hide-control, .empty-section), .form-dashboard-section:not(.hide-control, .empty-section)"
        ).length) {
          hide = false;
        }
      }
      this.toggle(!hide);
    }
    toggle(show) {
      this.tab_link.toggleClass("hide", !show);
      this.wrapper.toggleClass("hide", !show);
      this.tab_link.toggleClass("show", show);
      this.wrapper.toggleClass("show", show);
      this.hidden = !show;
    }
    show() {
      this.tab_link.show();
    }
    hide() {
      this.tab_link.hide();
    }
    add_field(fieldobj) {
      fieldobj.tab = this;
    }
    replace_field(fieldobj) {
      fieldobj.tab = this;
    }
    set_active() {
      var _a, _b;
      this.tab_link.find(".nav-link").tab("show");
      this.wrapper.addClass("show");
      (_b = (_a = this.frm) == null ? void 0 : _a.set_active_tab) == null ? void 0 : _b.call(_a, this);
    }
    is_active() {
      return this.wrapper.hasClass("active");
    }
    is_hidden() {
      return this.wrapper.hasClass("hide") && this.tab_link.hasClass("hide");
    }
    setup_listeners() {
      this.tab_link.find(".nav-link").on("shown.bs.tab", () => {
        var _a, _b;
        (_b = this == null ? void 0 : (_a = this.frm).set_active_tab) == null ? void 0 : _b.call(_a, this);
      });
    }
  };

  // frappe/public/js/frappe/form/column.js
  var Column = class {
    constructor(section, df) {
      if (!df)
        df = {};
      this.df = df;
      this.section = section;
      this.section.columns.push(this);
      this.make();
      this.resize_all_columns();
    }
    make() {
      this.wrapper = $(`
			<div class="form-column" data-fieldname="${this.df.fieldname}">
				<form>
				</form>
			</div>
		`).appendTo(this.section.body);
      this.form = this.wrapper.find("form").on("submit", () => false);
      if (this.df.description) {
        $(`
				<p class="col-sm-12 form-column-description">
					${__(this.df.description)}
				</p>
			`).prependTo(this.wrapper);
      }
      if (this.df.label) {
        $(`
				<label class="column-label">
					${__(this.df.label, null, this.df.parent)}
				</label>
			`).prependTo(this.wrapper);
      }
    }
    resize_all_columns() {
      let columns = this.section.wrapper.find(".form-column").length;
      let colspan = cint(12 / columns);
      if (columns == 5) {
        colspan = 20;
      }
      this.section.wrapper.find(".form-column").removeClass().addClass("form-column").addClass("col-sm-" + colspan);
    }
    add_field() {
    }
    refresh() {
      this.section.refresh();
    }
  };

  // frappe/public/js/frappe/form/layout.js
  frappe.ui.form.Layout = class Layout {
    constructor(opts) {
      this.views = {};
      this.pages = [];
      this.tabs = [];
      this.sections = [];
      this.page_breaks = [];
      this.sections_dict = {};
      this.fields_list = [];
      this.fields_dict = {};
      this.section_count = 0;
      this.column_count = 0;
      $.extend(this, opts);
    }
    make() {
      if (!this.parent && this.body) {
        this.parent = this.body;
      }
      this.wrapper = $('<div class="form-layout">').appendTo(this.parent);
      this.message = $('<div class="form-message hidden"></div>').appendTo(this.wrapper);
      this.page = $('<div class="form-page"></div>').appendTo(this.wrapper);
      if (!this.fields) {
        this.fields = this.get_doctype_fields();
      }
      if (this.is_tabbed_layout()) {
        this.setup_tabbed_layout();
      }
      this.setup_tab_events();
      this.frm && this.setup_tooltip_events();
      this.render();
    }
    setup_tabbed_layout() {
      $(`
			<div class="form-tabs-list">
				<ul class="nav form-tabs" id="form-tabs" role="tablist"></ul>
			</div>
		`).appendTo(this.page);
      this.tab_link_container = this.page.find(".form-tabs");
      this.tabs_content = $(`<div class="form-tab-content tab-content"></div>`).appendTo(
        this.page
      );
      this.setup_events();
    }
    get_doctype_fields() {
      let fields = [this.get_new_name_field()];
      if (this.doctype_layout) {
        fields = fields.concat(this.get_fields_from_layout());
      } else {
        fields = fields.concat(
          frappe.meta.sort_docfields(frappe.meta.docfield_map[this.doctype])
        );
      }
      return fields;
    }
    get_new_name_field() {
      return {
        parent: this.frm.doctype,
        fieldtype: "Data",
        fieldname: "__newname",
        reqd: 1,
        hidden: 1,
        label: __("Name"),
        get_status: function(field) {
          if (field.frm && field.frm.is_new() && field.frm.meta.autoname && ["prompt", "name"].includes(field.frm.meta.autoname.toLowerCase())) {
            return "Write";
          }
          return "None";
        }
      };
    }
    get_fields_from_layout() {
      const fields = [];
      for (let f of this.doctype_layout.fields) {
        const docfield = copy_dict(frappe.meta.docfield_map[this.doctype][f.fieldname]);
        docfield.label = f.label;
        fields.push(docfield);
      }
      return fields;
    }
    show_message(html, color) {
      if (this.message_color) {
        this.message.removeClass(this.message_color);
      }
      let close_message = $(`<div class="close-message">${frappe.utils.icon("close")}</div>`);
      this.message_color = color && ["yellow", "blue", "red", "green", "orange"].includes(color) ? color : "blue";
      if (html) {
        if (html.substr(0, 1) !== "<") {
          html = "<div>" + html + "</div>";
        }
        this.message.removeClass("hidden").addClass(this.message_color);
        $(html).appendTo(this.message);
        close_message.appendTo(this.message);
        close_message.on("click", () => this.message.empty().addClass("hidden"));
      } else {
        this.message.empty().addClass("hidden");
      }
    }
    render(new_fields) {
      let fields = new_fields || this.fields;
      this.section = null;
      this.column = null;
      if (this.no_opening_section() && !this.is_tabbed_layout()) {
        this.fields.unshift({ fieldtype: "Section Break" });
      }
      if (this.is_tabbed_layout()) {
        let default_tab = {
          label: __("Details"),
          fieldtype: "Tab Break",
          fieldname: "__details"
        };
        let first_field_visible = this.fields.find((element) => element.hidden == false);
        let first_tab = (first_field_visible == null ? void 0 : first_field_visible.fieldtype) === "Tab Break" ? first_field_visible : null;
        if (!first_tab) {
          this.fields.splice(0, 0, default_tab);
        } else {
          let newname_field = this.fields.find((df) => df.fieldname === "__newname");
          if (newname_field && newname_field.get_status(this) === "Write") {
            this.fields.splice(0, 1);
            this.fields.splice(1, 0, newname_field);
          }
        }
      }
      fields.forEach((df) => {
        switch (df.fieldtype) {
          case "Fold":
            this.make_page(df);
            break;
          case "Page Break":
            this.make_page_break();
            this.make_section(df);
            break;
          case "Section Break":
            this.make_section(df);
            break;
          case "Column Break":
            this.make_column(df);
            break;
          case "Tab Break":
            this.make_tab(df);
            break;
          default:
            this.make_field(df);
        }
      });
    }
    no_opening_section() {
      return this.fields[0] && this.fields[0].fieldtype != "Section Break" || !this.fields.length;
    }
    no_opening_tab() {
      return this.fields[1] && this.fields[1].fieldtype != "Tab Break" || !this.fields.length;
    }
    is_tabbed_layout() {
      return this.fields.find((f) => f.fieldtype === "Tab Break");
    }
    replace_field(fieldname, df, render) {
      var _a;
      df.fieldname = fieldname;
      if (this.fields_dict[fieldname] && this.fields_dict[fieldname].df) {
        const prev_fieldobj = this.fields_dict[fieldname];
        const fieldobj = this.init_field(df, prev_fieldobj.parent, render);
        prev_fieldobj.$wrapper.replaceWith(fieldobj.$wrapper);
        const idx = this.fields_list.findIndex((e) => e == prev_fieldobj);
        this.fields_list.splice(idx, 1, fieldobj);
        this.fields_dict[fieldname] = fieldobj;
        this.sections.forEach((section) => section.replace_field(fieldname, fieldobj));
        (_a = prev_fieldobj.tab) == null ? void 0 : _a.replace_field(fieldobj);
        this.refresh_fields([df]);
      }
    }
    make_field(df, colspan, render) {
      !this.section && this.make_section();
      !this.column && this.make_column();
      const parent = this.column.form.get(0);
      const fieldobj = this.init_field(df, parent, render);
      if (!fieldobj)
        return;
      this.fields_list.push(fieldobj);
      this.fields_dict[df.fieldname] = fieldobj;
      this.section.add_field(fieldobj);
      this.column.add_field(fieldobj);
      if (this.current_tab) {
        this.current_tab.add_field(fieldobj);
      }
    }
    init_field(df, parent, render = false) {
      const fieldobj = frappe.ui.form.make_control({
        df,
        doctype: this.doctype,
        parent,
        frm: this.frm,
        render_input: render,
        doc: this.doc,
        layout: this
      });
      if (fieldobj) {
        fieldobj.layout = this;
      }
      return fieldobj;
    }
    make_page_break() {
      this.page = $('<div class="form-page page-break"></div>').appendTo(this.wrapper);
    }
    make_page(df) {
      let me = this;
      let head = $(`
			<div class="form-clickable-section text-center">
				<a class="btn-fold h6 text-muted">
					${__("Show more details")}
				</a>
			</div>
		`).appendTo(this.wrapper);
      this.page = $('<div class="form-page second-page hide"></div>').appendTo(this.wrapper);
      this.fold_btn = head.find(".btn-fold").on("click", function() {
        let page = $(this).parent().next();
        if (page.hasClass("hide")) {
          $(this).removeClass("btn-fold").html(__("Hide details"));
          page.removeClass("hide");
          frappe.utils.scroll_to($(this), true, 30);
          me.folded = false;
        } else {
          $(this).addClass("btn-fold").html(__("Show more details"));
          page.addClass("hide");
          me.folded = true;
        }
      });
      this.section = null;
      this.folded = true;
    }
    unfold() {
      this.fold_btn.trigger("click");
    }
    make_section(df = {}) {
      this.section_count++;
      if (!df.fieldname) {
        df.fieldname = `__section_${this.section_count}`;
        df.fieldtype = "Section Break";
      }
      this.section = new Section(
        this.current_tab ? this.current_tab.wrapper : this.page,
        df,
        this.card_layout,
        this
      );
      this.sections.push(this.section);
      this.sections_dict[df.fieldname] = this.section;
      if (df) {
        this.fields_dict[df.fieldname] = this.section;
        this.fields_list.push(this.section);
      }
      this.column = null;
    }
    make_column(df = {}) {
      this.column_count++;
      if (!df.fieldname) {
        df.fieldname = `__column_${this.section_count}`;
        df.fieldtype = "Column Break";
      }
      this.column = new Column(this.section, df);
      if (df && df.fieldname) {
        this.fields_list.push(this.column);
      }
    }
    make_tab(df) {
      this.section = null;
      let tab = new Tab2(this, df, this.frm, this.tab_link_container, this.tabs_content);
      this.current_tab = tab;
      this.make_section({ fieldtype: "Section Break" });
      this.tabs.push(tab);
      return tab;
    }
    refresh(doc) {
      if (doc)
        this.doc = doc;
      if (this.frm) {
        this.wrapper.find(".empty-form-alert").remove();
      }
      this.attach_doc_and_docfields(true);
      if (this.frm && this.frm.wrapper) {
        $(this.frm.wrapper).trigger("refresh-fields");
      }
      this.refresh_dependency();
      this.refresh_sections();
      if (this.frm) {
        this.refresh_section_collapse();
      }
      if (document.activeElement) {
        if (document.activeElement.tagName == "INPUT" && this.is_numeric_field_active()) {
          document.activeElement.select();
        }
      }
    }
    is_numeric_field_active() {
      const control = $(document.activeElement).closest(".frappe-control");
      const fieldtype = (control.data() || {}).fieldtype;
      return frappe.model.numeric_fieldtypes.includes(fieldtype);
    }
    refresh_sections() {
      this.wrapper.find(".form-section:not(.hide-control)").each(function() {
        const section = $(this).removeClass("empty-section visible-section");
        if (section.find(".frappe-control:not(.hide-control)").length) {
          section.addClass("visible-section");
        } else if (section.parent().hasClass("tab-pane") || section.parent().hasClass("form-page")) {
          section.addClass("empty-section");
        }
      });
      this.is_tabbed_layout() && this.refresh_tabs();
    }
    refresh_tabs() {
      for (let tab of this.tabs) {
        tab.refresh();
      }
      const visible_tabs = this.tabs.filter((tab) => !tab.hidden);
      if (visible_tabs && visible_tabs.length == 1) {
        visible_tabs[0].tab_link.toggleClass("hide show");
      }
      this.set_tab_as_active();
    }
    select_tab(label_or_fieldname) {
      var _a;
      for (let tab of this.tabs) {
        if (tab.label.toLowerCase() === label_or_fieldname.toLowerCase() || ((_a = tab.df.fieldname) == null ? void 0 : _a.toLowerCase()) === label_or_fieldname.toLowerCase()) {
          tab.set_active();
          return;
        }
      }
    }
    set_tab_as_active() {
      var _a, _b;
      let frm_active_tab = (_b = (_a = this.frm) == null ? void 0 : _a.get_active_tab) == null ? void 0 : _b.call(_a);
      if (frm_active_tab) {
        frm_active_tab.set_active();
      } else if (this.tabs.length) {
        let first_visible_tab = this.tabs.find((tab) => !tab.is_hidden());
        first_visible_tab && first_visible_tab.set_active();
      }
    }
    refresh_fields(fields) {
      let fieldnames = fields.map((field) => {
        if (field.fieldname)
          return field.fieldname;
      });
      this.fields_list.map((fieldobj) => {
        if (fieldnames.includes(fieldobj.df.fieldname)) {
          fieldobj.refresh();
          if (fieldobj.df["default"]) {
            fieldobj.set_input(fieldobj.df["default"]);
          }
        }
      });
    }
    add_fields(fields) {
      this.render(fields);
      this.refresh_fields(fields);
    }
    refresh_section_collapse() {
      if (!(this.sections && this.sections.length))
        return;
      for (let i2 = 0; i2 < this.sections.length; i2++) {
        let section = this.sections[i2];
        let df = section.df;
        if (df && df.collapsible) {
          let collapse = true;
          if (df.collapsible_depends_on) {
            collapse = !this.evaluate_depends_on_value(df.collapsible_depends_on);
          }
          if (collapse && section.has_missing_mandatory()) {
            collapse = false;
          }
          section.collapse(collapse);
        }
      }
    }
    attach_doc_and_docfields(refresh) {
      let me = this;
      for (let i2 = 0, l = this.fields_list.length; i2 < l; i2++) {
        let fieldobj = this.fields_list[i2];
        if (me.doc) {
          fieldobj.doc = me.doc;
          fieldobj.doctype = me.doc.doctype;
          fieldobj.docname = me.doc.name;
          fieldobj.df = frappe.meta.get_docfield(me.doc.doctype, fieldobj.df.fieldname, me.doc.name) || fieldobj.df;
        }
        refresh && fieldobj.df && fieldobj.refresh && fieldobj.refresh();
      }
    }
    refresh_section_count() {
      this.wrapper.find(".section-count-label:visible").each(function(i2) {
        $(this).html(i2 + 1);
      });
    }
    setup_events() {
      let last_scroll = 0;
      let tabs_list = $(".form-tabs-list");
      let tabs_content = this.tabs_content[0];
      if (!tabs_list.length)
        return;
      $(window).scroll(
        frappe.utils.throttle(() => {
          let current_scroll = document.documentElement.scrollTop;
          if (current_scroll > 0 && last_scroll <= current_scroll) {
            tabs_list.removeClass("form-tabs-sticky-down");
            tabs_list.addClass("form-tabs-sticky-up");
          } else {
            tabs_list.removeClass("form-tabs-sticky-up");
            tabs_list.addClass("form-tabs-sticky-down");
          }
          last_scroll = current_scroll;
        }, 500)
      );
      this.tab_link_container.off("click").on("click", ".nav-link", (e) => {
        e.preventDefault();
        e.stopImmediatePropagation();
        $(e.currentTarget).tab("show");
        if (tabs_content.getBoundingClientRect().top < 100) {
          tabs_content.scrollIntoView();
          setTimeout(() => {
            $(".page-head").css("top", "-15px");
            $(".form-tabs-list").removeClass("form-tabs-sticky-down");
            $(".form-tabs-list").addClass("form-tabs-sticky-up");
          }, 3);
        }
      });
    }
    setup_tab_events() {
      this.wrapper.on("keydown", (ev) => {
        if (ev.which == 9) {
          let current = $(ev.target);
          let doctype = current.attr("data-doctype");
          let fieldname = current.attr("data-fieldname");
          if (doctype) {
            return this.handle_tab(doctype, fieldname, ev.shiftKey);
          }
        }
      });
    }
    setup_tooltip_events() {
      $(document).on("keydown", (e) => {
        if (e.altKey) {
          this.wrapper.addClass("show-tooltip");
        }
      });
      $(document).on("keyup", (e) => {
        if (!e.altKey) {
          this.wrapper.removeClass("show-tooltip");
        }
      });
      this.frm.page && frappe.ui.keys.add_shortcut({
        shortcut: "alt+hover",
        page: this.frm.page,
        description: __("Show Fieldname (click to copy on clipboard)")
      });
    }
    handle_tab(doctype, fieldname, shift) {
      let grid_row = null, prev2 = null, fields = this.fields_list, focused = false;
      if (doctype != this.doctype) {
        grid_row = this.get_open_grid_row();
        if (!grid_row || !grid_row.layout) {
          return;
        }
        fields = grid_row.layout.fields_list;
      }
      for (let i2 = 0, len = fields.length; i2 < len; i2++) {
        if (fields[i2].df.fieldname == fieldname) {
          if (shift) {
            if (prev2) {
              this.set_focus(prev2);
            } else {
              $(this.primary_button).focus();
            }
            break;
          }
          if (i2 < len - 1) {
            focused = this.focus_on_next_field(i2, fields);
          }
          if (focused) {
            break;
          }
        }
        if (this.is_visible(fields[i2]))
          prev2 = fields[i2];
      }
      if (!focused) {
        if (grid_row) {
          if (grid_row.doc.idx == grid_row.grid.grid_rows.length) {
            grid_row.toggle_view(false, function() {
              grid_row.grid.frm.layout.handle_tab(
                grid_row.grid.df.parent,
                grid_row.grid.df.fieldname
              );
            });
          } else {
            grid_row.grid.grid_rows[grid_row.doc.idx].toggle_view(true);
          }
        } else if (!shift) {
          $(this.primary_button).focus();
        }
      }
      return false;
    }
    focus_on_next_field(start_idx, fields) {
      for (let i2 = start_idx + 1, len = fields.length; i2 < len; i2++) {
        let field = fields[i2];
        if (this.is_visible(field)) {
          if (field.df.fieldtype === "Table") {
            if (!(field.grid.grid_rows && field.grid.grid_rows.length)) {
              field.grid.add_new_row();
            }
            field.grid.grid_rows[0].show_form();
            return true;
          } else if (field.df.fieldtype === "Table MultiSelect" || !frappe.model.no_value_type.includes(field.df.fieldtype)) {
            this.set_focus(field);
            return true;
          }
        }
      }
    }
    is_visible(field) {
      return field.disp_status === "Write" && field.df && "hidden" in field.df && !field.df.hidden;
    }
    set_focus(field) {
      if (field.tab) {
        field.tab.set_active();
      }
      if (field.df.fieldtype == "Table") {
        if (!field.grid.grid_rows.length) {
          field.grid.add_new_row(1);
        } else {
          field.grid.grid_rows[0].toggle_view(true);
        }
      } else if (field.editor) {
        field.editor.set_focus();
      } else if (field.$input) {
        field.$input.focus();
      }
    }
    get_open_grid_row() {
      return $(".grid-row-open").data("grid_row");
    }
    refresh_dependency() {
      let has_dep = false;
      const fields = this.fields_list.concat(this.tabs);
      for (let fkey in fields) {
        let f = fields[fkey];
        if (f.df.depends_on || f.df.mandatory_depends_on || f.df.read_only_depends_on) {
          has_dep = true;
          break;
        }
      }
      if (!has_dep)
        return;
      for (let i2 = fields.length - 1; i2 >= 0; i2--) {
        let f = fields[i2];
        f.guardian_has_value = true;
        if (f.df.depends_on) {
          f.guardian_has_value = this.evaluate_depends_on_value(f.df.depends_on);
          if (f.guardian_has_value) {
            if (f.df.hidden_due_to_dependency) {
              f.df.hidden_due_to_dependency = false;
              f.refresh();
            }
          } else {
            if (!f.df.hidden_due_to_dependency) {
              f.df.hidden_due_to_dependency = true;
              f.refresh();
            }
          }
        }
        if (f.df.mandatory_depends_on) {
          this.set_dependant_property(f.df.mandatory_depends_on, f.df.fieldname, "reqd");
        }
        if (f.df.read_only_depends_on) {
          this.set_dependant_property(
            f.df.read_only_depends_on,
            f.df.fieldname,
            "read_only"
          );
        }
      }
      this.refresh_section_count();
    }
    set_dependant_property(condition, fieldname, property) {
      let set_property = this.evaluate_depends_on_value(condition);
      let value2 = set_property ? 1 : 0;
      let form_obj;
      if (this.frm) {
        form_obj = this.frm;
      } else if (this.is_dialog || this.doctype === "Web Form") {
        form_obj = this;
      }
      if (form_obj) {
        if (this.doc && this.doc.parent && this.doc.parentfield) {
          form_obj.setting_dependency = true;
          form_obj.set_df_property(
            this.doc.parentfield,
            property,
            value2,
            this.doc.parent,
            fieldname,
            this.doc.name
          );
          form_obj.setting_dependency = false;
          this.fields_dict[fieldname] && this.fields_dict[fieldname].refresh();
        } else {
          form_obj.set_df_property(fieldname, property, value2);
        }
      }
    }
    evaluate_depends_on_value(expression) {
      let out = null;
      let doc = this.doc;
      if (!doc && this.get_values) {
        doc = this.get_values(true);
      }
      if (!doc) {
        return;
      }
      let parent = this.frm ? this.frm.doc : this.doc || null;
      if (typeof expression === "boolean") {
        out = expression;
      } else if (typeof expression === "function") {
        out = expression(doc);
      } else if (expression.substr(0, 5) == "eval:") {
        try {
          out = frappe.utils.eval(expression.substr(5), { doc, parent });
          if (parent && parent.istable && expression.includes("is_submittable")) {
            out = true;
          }
        } catch (e) {
          frappe.throw(__('Invalid "depends_on" expression'));
        }
      } else if (expression.substr(0, 3) == "fn:" && this.frm) {
        out = this.frm.script_manager.trigger(
          expression.substr(3),
          this.doctype,
          this.docname
        );
      } else {
        var value2 = doc[expression];
        if ($.isArray(value2)) {
          out = !!value2.length;
        } else {
          out = !!value2;
        }
      }
      return out;
    }
  };

  // frappe/public/js/frappe/ui/field_group.js
  frappe.provide("frappe.ui");
  frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout {
    constructor(opts) {
      super(opts);
      this.dirty = false;
      $.each(this.fields || [], function(i2, f) {
        if (!f.fieldname && f.label) {
          f.fieldname = f.label.replace(/ /g, "_").toLowerCase();
        }
      });
      if (this.values) {
        this.set_values(this.values);
      }
    }
    make() {
      let me = this;
      if (this.fields) {
        super.make();
        this.refresh();
        $.each(this.fields_list, function(i2, field) {
          if (field.df["default"]) {
            let def_value = field.df["default"];
            if (def_value == "Today" && field.df["fieldtype"] == "Date") {
              def_value = frappe.datetime.get_today();
            }
            field.set_input(def_value);
            me.refresh_dependency();
          }
        });
        if (!this.no_submit_on_enter) {
          this.catch_enter_as_submit();
        }
        $(this.wrapper).find("input, select").on("change awesomplete-selectcomplete", () => {
          this.dirty = true;
          frappe.run_serially([
            () => frappe.timeout(0.1),
            () => me.refresh_dependency()
          ]);
        });
      }
    }
    focus_on_first_input() {
      if (this.no_focus)
        return;
      $.each(this.fields_list, function(i2, f) {
        if (!["Date", "Datetime", "Time", "Check"].includes(f.df.fieldtype) && f.set_focus) {
          f.set_focus();
          return false;
        }
      });
    }
    catch_enter_as_submit() {
      let me = this;
      $(this.body).find('input[type="text"], input[type="password"], select').keypress(function(e) {
        if (e.which == 13) {
          if (me.has_primary_action) {
            e.preventDefault();
            me.get_primary_btn().trigger("click");
          }
        }
      });
    }
    get_input(fieldname) {
      let field = this.fields_dict[fieldname];
      if (!field)
        return "";
      return $(field.txt ? field.txt : field.input);
    }
    get_field(fieldname) {
      return this.fields_dict[fieldname];
    }
    get_values(ignore_errors, check_invalid) {
      let ret = {};
      let errors = [];
      let invalid = [];
      for (let key in this.fields_dict) {
        let f = this.fields_dict[key];
        if (f.get_value) {
          let v = f.get_value();
          if (f.df.reqd && is_null(typeof v === "string" ? strip_html(v) : v))
            errors.push(__(f.df.label));
          if (f.df.reqd && f.df.fieldtype === "Text Editor" && is_null(strip_html(cstr(v))))
            errors.push(__(f.df.label));
          if (!is_null(v))
            ret[f.df.fieldname] = v;
        }
        if (this.is_dialog && f.df.reqd && !f.value) {
          f.refresh_input();
        }
        if (f.df.invalid) {
          invalid.push(__(f.df.label));
        }
      }
      if (errors.length && !ignore_errors) {
        frappe.msgprint({
          title: __("Missing Values Required"),
          message: __("Following fields have missing values:") + "<br><br><ul><li>" + errors.join("<li>") + "</ul>",
          indicator: "orange"
        });
        return null;
      }
      if (invalid.length && check_invalid) {
        frappe.msgprint({
          title: __("Inavlid Values"),
          message: __("Following fields have invalid values:") + "<br><br><ul><li>" + invalid.join("<li>") + "</ul>",
          indicator: "orange"
        });
        return null;
      }
      return ret;
    }
    get_value(key) {
      let f = this.fields_dict[key];
      return f && (f.get_value ? f.get_value() : null);
    }
    set_value(key, val) {
      return new Promise((resolve) => {
        let f = this.fields_dict[key];
        if (f) {
          f.set_value(val).then(() => {
            var _a;
            (_a = f.set_input) == null ? void 0 : _a.call(f, val);
            this.refresh_dependency();
            resolve();
          });
        } else {
          resolve();
        }
      });
    }
    has_field(fieldname) {
      return !!this.fields_dict[fieldname];
    }
    set_input(key, val) {
      return this.set_value(key, val);
    }
    set_values(dict) {
      let promises = [];
      for (let key in dict) {
        if (this.fields_dict[key]) {
          promises.push(this.set_value(key, dict[key]));
        }
      }
      return Promise.all(promises);
    }
    clear() {
      for (let key in this.fields_dict) {
        let f = this.fields_dict[key];
        if (f && f.set_input) {
          f.set_input(f.df["default"] || "");
        }
      }
    }
    set_df_property(fieldname, prop, value2) {
      if (!fieldname) {
        return;
      }
      const field = this.get_field(fieldname);
      field.df[prop] = value2;
      field.refresh();
    }
  };

  // frappe/public/js/frappe/dom.js
  frappe.provide("frappe.dom");
  frappe.dom = {
    id_count: 0,
    freeze_count: 0,
    by_id: function(id) {
      return document.getElementById(id);
    },
    get_unique_id: function() {
      const id = "unique-" + frappe.dom.id_count;
      frappe.dom.id_count++;
      return id;
    },
    set_unique_id: function(ele) {
      var $ele = $(ele);
      if ($ele.attr("id")) {
        return $ele.attr("id");
      }
      var id = "unique-" + frappe.dom.id_count;
      $ele.attr("id", id);
      frappe.dom.id_count++;
      return id;
    },
    eval: function(txt) {
      if (!txt)
        return;
      var el = document.createElement("script");
      el.appendChild(document.createTextNode(txt));
      document.getElementsByTagName("head")[0].appendChild(el);
    },
    remove_script_and_style: function(txt) {
      const evil_tags = ["script", "style", "noscript", "title", "meta", "base", "head"];
      const parser = new DOMParser();
      const doc = parser.parseFromString(txt, "text/html");
      const body = doc.body;
      let found = !!doc.head.innerHTML;
      for (const tag of evil_tags) {
        for (const element of body.getElementsByTagName(tag)) {
          found = true;
          element.parentNode.removeChild(element);
        }
      }
      for (const element of body.getElementsByTagName("link")) {
        const relation = element.getAttribute("rel");
        if (relation && relation.toLowerCase().trim() === "stylesheet") {
          found = true;
          element.parentNode.removeChild(element);
        }
      }
      if (found) {
        return body.innerHTML;
      } else {
        return txt;
      }
    },
    is_element_in_viewport: function(el, tolerance = 0) {
      if (typeof jQuery === "function" && el instanceof jQuery) {
        el = el[0];
      }
      var rect = el.getBoundingClientRect();
      return rect.top + tolerance >= 0 && rect.left + tolerance >= 0 && rect.bottom - tolerance <= $(window).height() && rect.right - tolerance <= $(window).width();
    },
    is_element_in_modal(element) {
      return Boolean($(element).parents(".modal").length);
    },
    set_style: function(txt, id) {
      if (!txt)
        return;
      var se = document.createElement("style");
      se.type = "text/css";
      if (id) {
        var element = document.getElementById(id);
        if (element) {
          element.parentNode.removeChild(element);
        }
        se.id = id;
      }
      if (se.styleSheet) {
        se.styleSheet.cssText = txt;
      } else {
        se.appendChild(document.createTextNode(txt));
      }
      document.getElementsByTagName("head")[0].appendChild(se);
      return se;
    },
    add: function(parent, newtag, className, cs, innerHTML, onclick) {
      if (parent && parent.substr)
        parent = frappe.dom.by_id(parent);
      var c = document.createElement(newtag);
      if (parent)
        parent.appendChild(c);
      if (className) {
        if (newtag.toLowerCase() == "img")
          c.src = className;
        else
          c.className = className;
      }
      if (cs)
        frappe.dom.css(c, cs);
      if (innerHTML)
        c.innerHTML = innerHTML;
      if (onclick)
        c.onclick = onclick;
      return c;
    },
    css: function(ele, s) {
      if (ele && s) {
        $.extend(ele.style, s);
      }
      return ele;
    },
    activate: function($parent, $child, common_class, active_class = "active") {
      $parent.find(`.${common_class}.${active_class}`).removeClass(active_class);
      $child.addClass(active_class);
    },
    freeze: function(msg, css_class) {
      if (!$("#freeze").length) {
        var freeze = $('<div id="freeze" class="modal-backdrop fade"></div>').on("click", function() {
          if (cur_frm && cur_frm.cur_grid) {
            cur_frm.cur_grid.toggle_view();
            return false;
          }
        }).appendTo("#body");
        freeze.html(
          repl(
            '<div class="freeze-message-container"><div class="freeze-message"><p class="lead">%(msg)s</p></div></div>',
            { msg: msg || "" }
          )
        );
        setTimeout(function() {
          freeze.addClass("in");
        }, 1);
      } else {
        $("#freeze").addClass("in");
      }
      if (css_class) {
        $("#freeze").addClass(css_class);
      }
      frappe.dom.freeze_count++;
    },
    unfreeze: function() {
      if (!frappe.dom.freeze_count)
        return;
      frappe.dom.freeze_count--;
      if (!frappe.dom.freeze_count) {
        var freeze = $("#freeze").removeClass("in").remove();
      }
    },
    save_selection: function() {
      if (window.getSelection) {
        var sel = window.getSelection();
        if (sel.getRangeAt && sel.rangeCount) {
          var ranges = [];
          for (var i2 = 0, len = sel.rangeCount; i2 < len; ++i2) {
            ranges.push(sel.getRangeAt(i2));
          }
          return ranges;
        }
      } else if (document.selection && document.selection.createRange) {
        return document.selection.createRange();
      }
      return null;
    },
    restore_selection: function(savedSel) {
      if (savedSel) {
        if (window.getSelection) {
          var sel = window.getSelection();
          sel.removeAllRanges();
          for (var i2 = 0, len = savedSel.length; i2 < len; ++i2) {
            sel.addRange(savedSel[i2]);
          }
        } else if (document.selection && savedSel.select) {
          savedSel.select();
        }
      }
    },
    is_touchscreen: function() {
      return "ontouchstart" in window;
    },
    handle_broken_images(container) {
      $(container).find("img").on("error", (e) => {
        const $img = $(e.currentTarget);
        $img.addClass("no-image");
      });
    },
    scroll_to_bottom(container) {
      const $container = $(container);
      $container.scrollTop($container[0].scrollHeight);
    },
    file_to_base64(file_obj) {
      return new Promise((resolve) => {
        const reader = new FileReader();
        reader.onload = function() {
          resolve(reader.result);
        };
        reader.readAsDataURL(file_obj);
      });
    },
    scroll_to_section(section_name) {
      setTimeout(() => {
        const section = $(`a:contains("${section_name}")`);
        if (section.length) {
          if (section.parent().hasClass("collapsed")) {
            section.click();
          }
          frappe.ui.scroll(section.parent().parent());
        }
      }, 200);
    },
    pixel_to_inches(pixels) {
      const div = $(
        '<div id="dpi" style="height: 1in; width: 1in; left: 100%; position: fixed; top: 100%;"></div>'
      );
      div.appendTo(document.body);
      const dpi_x = document.getElementById("dpi").offsetWidth;
      const inches = pixels / dpi_x;
      div.remove();
      return inches;
    }
  };
  frappe.ellipsis = function(text, max) {
    if (!max)
      max = 20;
    text = cstr(text);
    if (text.length > max) {
      text = text.substr(0, max) + "...";
    }
    return text;
  };
  frappe.run_serially = function(tasks) {
    var result = Promise.resolve();
    tasks.forEach((task) => {
      if (task) {
        result = result.then ? result.then(task) : Promise.resolve();
      }
    });
    return result;
  };
  frappe.load_image = (src, onload, onerror, preprocess = () => {
  }) => {
    var tester = new Image();
    tester.onload = function() {
      onload(this);
    };
    tester.onerror = onerror;
    preprocess(tester);
    tester.src = src;
  };
  frappe.timeout = (seconds) => {
    return new Promise((resolve) => {
      setTimeout(() => resolve(), seconds * 1e3);
    });
  };
  frappe.scrub = function(text, spacer = "_") {
    return text.replace(/ /g, spacer).toLowerCase();
  };
  frappe.unscrub = function(txt) {
    return frappe.model.unscrub(txt);
  };
  frappe.get_data_pill = (label, target_id = null, remove_action = null, image = null, colored = false) => {
    let color = "", style = "";
    if (colored) {
      color = frappe.get_palette(label);
    }
    style = `background-color: var(${color[0]}); color: var(${color[1]})`;
    let data_pill_wrapper = $(`
		<button class="data-pill btn" style="${style}">
			<div class="flex align-center ellipsis">
				${image ? image : ""}
				<span class="pill-label">${label} </span>
			</div>
		</button>
	`);
    if (remove_action) {
      let remove_btn = $(`
			<span class="remove-btn cursor-pointer">
				${frappe.utils.icon("close", "sm")}
			</span>
		`);
      if (typeof remove_action === "function") {
        remove_btn.click(() => {
          remove_action(target_id || label, data_pill_wrapper);
        });
      }
      data_pill_wrapper.append(remove_btn);
    }
    return data_pill_wrapper;
  };
  frappe.get_modal = function(title, content) {
    return $(`<div class="modal fade" style="overflow: auto;" tabindex="-1">
		<div class="modal-dialog">
			<div class="modal-content">
				<div class="modal-header">
					<div class="fill-width flex title-section">
						<span class="indicator hidden"></span>
						<h4 class="modal-title">${title}</h4>
					</div>
					<div class="modal-actions">
						<button class="btn btn-modal-minimize btn-link hide">
							${frappe.utils.icon("collapse")}
						</button>
						<button class="btn btn-modal-close btn-link" data-dismiss="modal">
							${frappe.utils.icon("close-alt", "sm", "close-alt")}
						</button>
					</div>
				</div>
				<div class="modal-body ui-front">${content}</div>
				<div class="modal-footer hide">
					<div class="custom-actions"></div>
					<div class="standard-actions">
						<button type="button" class="btn btn-secondary btn-sm hide btn-modal-secondary">
						</button>
						<button type="button" class="btn btn-primary btn-sm hide btn-modal-primary">
							${__("Confirm")}
						</button>
					</div>
				</div>
			</div>
		</div>
	</div>`);
  };
  frappe.is_online = function() {
    if (frappe.boot.developer_mode == 1) {
      return true;
    }
    if ("onLine" in navigator) {
      return navigator.onLine;
    }
    return true;
  };
  frappe.create_shadow_element = function(wrapper, html, css, js) {
    let random_id = "custom-block-" + frappe.utils.get_random(5).toLowerCase();
    class CustomBlock extends HTMLElement {
      constructor() {
        var _a, _b, _c, _d;
        super();
        let div = document.createElement("div");
        div.innerHTML = frappe.dom.remove_script_and_style(html);
        let link = document.createElement("link");
        link.rel = "stylesheet";
        link.href = frappe.assets.bundled_asset("desk.bundle.css");
        let style = document.createElement("style");
        style.textContent = css;
        let script = document.createElement("script");
        script.textContent = `
				(function() {
					let cname = ${JSON.stringify(random_id)};
					let root_element = document.querySelector(cname).shadowRoot;
					${js}
				})();
			`;
        this.attachShadow({ mode: "open" });
        (_a = this.shadowRoot) == null ? void 0 : _a.appendChild(link);
        (_b = this.shadowRoot) == null ? void 0 : _b.appendChild(div);
        (_c = this.shadowRoot) == null ? void 0 : _c.appendChild(style);
        (_d = this.shadowRoot) == null ? void 0 : _d.appendChild(script);
      }
    }
    if (!customElements.get(random_id)) {
      customElements.define(random_id, CustomBlock);
    }
    wrapper.innerHTML = `<${random_id}></${random_id}>`;
  };
  $(window).on("online", function() {
    if (document.hidden)
      return;
    frappe.show_alert({
      indicator: "green",
      message: __("You are connected to internet.")
    });
  });
  $(window).on("offline", function() {
    if (document.hidden)
      return;
    frappe.show_alert({
      indicator: "orange",
      message: __("Connection lost. Some features might not work.")
    });
  });

  // frappe/public/js/frappe/ui/dialog.js
  frappe.provide("frappe.ui");
  window.cur_dialog = null;
  frappe.ui.open_dialogs = [];
  frappe.ui.Dialog = class Dialog extends frappe.ui.FieldGroup {
    constructor(opts) {
      super();
      this.display = false;
      this.is_dialog = true;
      $.extend(this, { animate: true, size: null }, opts);
      this.make();
    }
    make() {
      this.$wrapper = frappe.get_modal("", "");
      if (this.static) {
        this.$wrapper.modal({
          backdrop: "static",
          keyboard: false
        });
        this.get_close_btn().hide();
      }
      if (!this.size)
        this.set_modal_size();
      this.wrapper = this.$wrapper.find(".modal-dialog").get(0);
      if (this.size == "small")
        $(this.wrapper).addClass("modal-sm");
      else if (this.size == "large")
        $(this.wrapper).addClass("modal-lg");
      else if (this.size == "extra-large")
        $(this.wrapper).addClass("modal-xl");
      this.make_head();
      this.modal_body = this.$wrapper.find(".modal-body");
      this.$body = $("<div></div>").appendTo(this.modal_body);
      this.body = this.$body.get(0);
      this.$message = $('<div class="hide modal-message"></div>').appendTo(this.modal_body);
      this.header = this.$wrapper.find(".modal-header");
      this.footer = this.$wrapper.find(".modal-footer");
      this.standard_actions = this.footer.find(".standard-actions");
      this.custom_actions = this.footer.find(".custom-actions");
      this.set_indicator();
      super.make();
      this.refresh_section_collapse();
      this.action = this.action || { primary: {}, secondary: {} };
      if (this.primary_action || this.action.primary && this.action.primary.onsubmit) {
        this.set_primary_action(
          this.primary_action_label || this.action.primary.label || __("Submit", null, "Primary action in dialog"),
          this.primary_action || this.action.primary.onsubmit
        );
      }
      if (this.secondary_action) {
        this.set_secondary_action(this.secondary_action);
      }
      if (this.secondary_action_label || this.action.secondary && this.action.secondary.label) {
        this.set_secondary_action_label(
          this.secondary_action_label || this.action.secondary.label
        );
      }
      if (this.minimizable) {
        this.header.find(".title-section").click(() => this.is_minimized && this.toggle_minimize());
        this.get_minimize_btn().removeClass("hide").on("click", () => this.toggle_minimize());
      }
      var me = this;
      this.$wrapper.on("hide.bs.modal", function() {
        var _a, _b, _c;
        me.display = false;
        me.is_minimized = false;
        me.hide_scrollbar(false);
        (_c = (_b = (_a = frappe.ui.form).get_open_grid_form) == null ? void 0 : _b.call(_a)) == null ? void 0 : _c.hide_form();
        if (frappe.ui.open_dialogs[frappe.ui.open_dialogs.length - 1] === me) {
          frappe.ui.open_dialogs.pop();
          if (frappe.ui.open_dialogs.length) {
            window.cur_dialog = frappe.ui.open_dialogs[frappe.ui.open_dialogs.length - 1];
          } else {
            window.cur_dialog = null;
          }
        }
        me.onhide && me.onhide();
        me.on_hide && me.on_hide();
      }).on("shown.bs.modal", function() {
        me.display = true;
        window.cur_dialog = me;
        frappe.ui.open_dialogs.push(me);
        me.focus_on_first_input();
        me.hide_scrollbar(true);
        me.on_page_show && me.on_page_show();
        $(document).trigger("frappe.ui.Dialog:shown");
        $(document).off("focusin.modal");
      }).on("scroll", function() {
        var $input = $("input:focus");
        if ($input.length && ["Date", "Datetime", "Time"].includes($input.attr("data-fieldtype"))) {
          $input.blur();
        }
      });
    }
    set_modal_size() {
      if (!this.fields) {
        this.size = "";
        return;
      }
      let col_brk = 0;
      let cur_col_brk = 0;
      this.fields.forEach((field) => {
        if (field.fieldtype == "Column Break") {
          cur_col_brk++;
          if (cur_col_brk > col_brk) {
            col_brk = cur_col_brk;
          }
        } else if (field.fieldtype == "Section Break") {
          cur_col_brk = 0;
        }
      });
      this.size = col_brk >= 4 ? "extra-large" : col_brk >= 2 ? "large" : "";
    }
    get_primary_btn() {
      return this.standard_actions.find(".btn-primary");
    }
    get_minimize_btn() {
      return this.$wrapper.find(".modal-header .btn-modal-minimize");
    }
    set_message(text) {
      this.$message.removeClass("hide");
      this.$body.addClass("hide");
      this.$message.text(text);
    }
    clear_message() {
      this.$message.addClass("hide");
      this.$body.removeClass("hide");
    }
    clear() {
      super.clear();
      this.clear_message();
    }
    set_primary_action(label, click) {
      this.footer.removeClass("hide");
      this.has_primary_action = true;
      var me = this;
      const primary_btn = this.get_primary_btn().removeClass("hide").html(label);
      if (typeof click == "function") {
        primary_btn.off("click").on("click", function() {
          me.primary_action_fulfilled = true;
          var values = me.get_values();
          if (!values)
            return;
          click && click.apply(me, [values]);
        });
      }
      return primary_btn;
    }
    set_secondary_action(click) {
      this.footer.removeClass("hide");
      return this.get_secondary_btn().removeClass("hide").off("click").on("click", click);
    }
    set_secondary_action_label(label) {
      this.get_secondary_btn().removeClass("hide").html(label);
    }
    disable_primary_action() {
      this.get_primary_btn().addClass("disabled");
    }
    enable_primary_action() {
      this.get_primary_btn().removeClass("disabled");
    }
    make_head() {
      this.set_title(this.title);
    }
    set_title(t) {
      this.$wrapper.find(".modal-title").html(t);
    }
    set_indicator() {
      if (this.indicator) {
        this.header.find(".indicator").removeClass().addClass("indicator " + this.indicator);
      }
    }
    show() {
      if (this.animate) {
        this.$wrapper.addClass("fade");
      } else {
        this.$wrapper.removeClass("fade");
      }
      this.$wrapper.modal("show");
      this.$wrapper.removeClass("modal-minimize");
      if (this.minimizable && this.is_minimized) {
        $(".modal-backdrop").toggle();
        this.is_minimized = false;
      }
      this.clear_message();
      this.primary_action_fulfilled = false;
      this.is_visible = true;
      return this;
    }
    hide() {
      this.$wrapper.modal("hide");
      this.is_visible = false;
    }
    get_close_btn() {
      return this.$wrapper.find(".btn-modal-close");
    }
    get_secondary_btn() {
      return this.standard_actions.find(".btn-modal-secondary");
    }
    no_cancel() {
      this.get_close_btn().toggle(false);
    }
    cancel() {
      this.get_close_btn().trigger("click");
    }
    toggle_minimize() {
      $(".modal-backdrop").toggle();
      let modal = this.$wrapper.closest(".modal").toggleClass("modal-minimize");
      modal.attr("tabindex") ? modal.removeAttr("tabindex") : modal.attr("tabindex", -1);
      this.is_minimized = !this.is_minimized;
      const icon = this.is_minimized ? "expand" : "collapse";
      this.get_minimize_btn().html(frappe.utils.icon(icon));
      this.on_minimize_toggle && this.on_minimize_toggle(this.is_minimized);
      this.header.find(".modal-title").toggleClass("cursor-pointer");
      this.hide_scrollbar(!this.is_minimized);
    }
    hide_scrollbar(bool) {
      $("body").css("overflow", bool ? "hidden" : "auto");
    }
    add_custom_action(label, action, css_class = null) {
      this.footer.removeClass("hide");
      let action_button = $(`
			<button class="btn btn-secondary btn-sm ${css_class || ""}">
				${label}
			</button>
		`);
      this.custom_actions.append(action_button);
      action && action_button.click(action);
    }
  };
  frappe.ui.hide_open_dialog = () => {
    if (window.cur_dialog) {
      if (!cur_dialog.minimizable) {
        cur_dialog.hide();
      } else if (!cur_dialog.is_minimized) {
        cur_dialog.toggle_minimize();
      }
    }
  };

  // frappe/public/js/frappe/ui/messages.js
  frappe.provide("frappe.messages");
  frappe.messages.waiting = function(parent, msg) {
    return $(frappe.messages.get_waiting_message(msg)).appendTo(parent);
  };
  frappe.messages.get_waiting_message = function(msg) {
    return repl(
      '<div class="msg-box" style="width: 63%; margin: 30px auto;">		<p class="text-center">%(msg)s</p></div>',
      { msg }
    );
  };
  frappe.throw = function(msg) {
    if (typeof msg === "string") {
      msg = { message: msg, title: __("Error") };
    }
    if (!msg.indicator)
      msg.indicator = "red";
    frappe.msgprint(msg);
    throw new Error(msg.message);
  };
  frappe.confirm = function(message, confirm_action, reject_action) {
    var d = new frappe.ui.Dialog({
      title: __("Confirm", null, "Title of confirmation dialog"),
      primary_action_label: __("Yes", null, "Approve confirmation dialog"),
      primary_action: () => {
        confirm_action && confirm_action();
        d.hide();
      },
      secondary_action_label: __("No", null, "Dismiss confirmation dialog"),
      secondary_action: () => d.hide()
    });
    d.$body.append(`<p class="frappe-confirm-message">${message}</p>`);
    d.show();
    d.confirm_dialog = true;
    if (reject_action) {
      d.onhide = () => {
        if (!d.primary_action_fulfilled) {
          reject_action();
        }
      };
    }
    return d;
  };
  frappe.warn = function(title, message_html, proceed_action, primary_label, is_minimizable) {
    const d = new frappe.ui.Dialog({
      title,
      indicator: "red",
      primary_action_label: primary_label,
      primary_action: () => {
        if (proceed_action)
          proceed_action();
        d.hide();
      },
      secondary_action_label: __("Cancel", null, "Secondary button in warning dialog"),
      secondary_action: () => d.hide(),
      minimizable: is_minimizable
    });
    d.$body.append(`<div class="frappe-confirm-message">${message_html}</div>`);
    d.standard_actions.find(".btn-primary").removeClass("btn-primary").addClass("btn-danger");
    d.show();
    return d;
  };
  frappe.prompt = function(fields, callback, title, primary_label) {
    if (typeof fields === "string") {
      fields = [
        {
          label: fields,
          fieldname: "value",
          fieldtype: "Data",
          reqd: 1
        }
      ];
    }
    if (!$.isArray(fields))
      fields = [fields];
    var d = new frappe.ui.Dialog({
      fields,
      title: title || __("Enter Value", null, "Title of prompt dialog")
    });
    d.set_primary_action(
      primary_label || __("Submit", null, "Primary action of prompt dialog"),
      function() {
        var values = d.get_values();
        if (!values) {
          return;
        }
        d.hide();
        callback(values);
      }
    );
    d.show();
    return d;
  };
  frappe.msgprint = function(msg, title, is_minimizable) {
    if (!msg)
      return;
    let data;
    if ($.isPlainObject(msg)) {
      data = msg;
    } else {
      if (typeof msg === "string" && msg.substr(0, 1) === "{") {
        data = JSON.parse(msg);
      } else {
        data = { message: msg, title };
      }
    }
    if (!data.indicator) {
      data.indicator = "blue";
    }
    if (data.as_list) {
      const list_rows = data.message.map((m) => `<li>${m}</li>`).join("");
      data.message = `<ul style="padding-left: 20px">${list_rows}</ul>`;
    }
    if (data.as_table) {
      const rows = data.message.map((row) => {
        const cols = row.map((col) => `<td>${col}</td>`).join("");
        return `<tr>${cols}</tr>`;
      }).join("");
      data.message = `<table class="table table-bordered" style="margin: 0;">${rows}</table>`;
    }
    if (data.message instanceof Array) {
      let messages = data.message;
      const exceptions = messages.map((m) => {
        if (typeof m == "string") {
          return JSON.parse(m);
        } else {
          return m;
        }
      }).filter((m) => m.raise_exception);
      if (exceptions.length) {
        messages = exceptions;
      }
      messages.forEach(function(m) {
        frappe.msgprint(m);
      });
      return;
    }
    if (data.alert || data.toast) {
      frappe.show_alert(data);
      return;
    }
    if (!frappe.msg_dialog) {
      frappe.msg_dialog = new frappe.ui.Dialog({
        title: __("Message"),
        onhide: function() {
          if (frappe.msg_dialog.custom_onhide) {
            frappe.msg_dialog.custom_onhide();
          }
          frappe.msg_dialog.msg_area.empty();
        },
        minimizable: data.is_minimizable || is_minimizable
      });
      frappe.msg_dialog.msg_area = $('<div class="msgprint">').appendTo(frappe.msg_dialog.body);
      frappe.msg_dialog.clear = function() {
        frappe.msg_dialog.msg_area.empty();
      };
      frappe.msg_dialog.indicator = frappe.msg_dialog.header.find(".indicator");
    }
    if (data.primary_action) {
      if (data.primary_action.server_action && typeof data.primary_action.server_action === "string") {
        data.primary_action.action = () => {
          frappe.call({
            method: data.primary_action.server_action,
            args: {
              args: data.primary_action.args
            },
            callback() {
              if (data.primary_action.hide_on_success) {
                frappe.hide_msgprint();
              }
            }
          });
        };
      }
      if (data.primary_action.client_action && typeof data.primary_action.client_action === "string") {
        let parts2 = data.primary_action.client_action.split(".");
        let obj = window;
        for (let part of parts2) {
          obj = obj[part];
        }
        data.primary_action.action = () => {
          if (typeof obj === "function") {
            obj(data.primary_action.args);
          }
        };
      }
      frappe.msg_dialog.set_primary_action(
        __(data.primary_action.label || data.primary_action_label || "Done"),
        data.primary_action.action
      );
    } else {
      if (frappe.msg_dialog.has_primary_action) {
        frappe.msg_dialog.get_primary_btn().addClass("hide");
        frappe.msg_dialog.has_primary_action = false;
      }
    }
    if (data.secondary_action) {
      frappe.msg_dialog.set_secondary_action(data.secondary_action.action);
      frappe.msg_dialog.set_secondary_action_label(__(data.secondary_action.label || "Close"));
    }
    if (data.message == null) {
      data.message = "";
    }
    if (data.message.search(/<br>|<p>|<li>/) == -1) {
      msg = frappe.utils.replace_newlines(data.message);
    }
    var msg_exists = false;
    if (data.clear) {
      frappe.msg_dialog.msg_area.empty();
    } else {
      msg_exists = frappe.msg_dialog.msg_area.html();
    }
    if (data.title || !msg_exists) {
      frappe.msg_dialog.set_title(
        data.title || __("Message", null, "Default title of the message dialog")
      );
    }
    if (data.indicator) {
      frappe.msg_dialog.indicator.removeClass().addClass("indicator " + data.indicator);
    } else {
      frappe.msg_dialog.indicator.removeClass().addClass("hidden");
    }
    if (data.wide) {
      if (frappe.msg_dialog.wrapper.classList.contains("msgprint-dialog")) {
        frappe.msg_dialog.wrapper.classList.remove("msgprint-dialog");
      }
    } else {
      frappe.msg_dialog.wrapper.classList.add("msgprint-dialog");
    }
    if (msg_exists) {
      frappe.msg_dialog.msg_area.append("<hr>");
    }
    frappe.msg_dialog.msg_area.append(data.message);
    frappe.msg_dialog.$wrapper.css("z-index", 2e3);
    frappe.msg_dialog.show();
    return frappe.msg_dialog;
  };
  window.msgprint = frappe.msgprint;
  frappe.hide_msgprint = function(instant) {
    if (frappe.msg_dialog && frappe.msg_dialog.msg_area) {
      frappe.msg_dialog.msg_area.empty();
    }
    if (frappe.msg_dialog && frappe.msg_dialog.$wrapper.is(":visible")) {
      if (instant) {
        frappe.msg_dialog.$wrapper.removeClass("fade");
      }
      frappe.msg_dialog.hide();
      if (instant) {
        frappe.msg_dialog.$wrapper.addClass("fade");
      }
    }
  };
  frappe.update_msgprint = function(html) {
    if (!frappe.msg_dialog || frappe.msg_dialog && !frappe.msg_dialog.$wrapper.is(":visible")) {
      frappe.msgprint(html);
    } else {
      frappe.msg_dialog.msg_area.html(html);
    }
  };
  frappe.verify_password = function(callback) {
    frappe.prompt(
      {
        fieldname: "password",
        label: __("Enter your password"),
        fieldtype: "Password",
        reqd: 1
      },
      function(data) {
        frappe.call({
          method: "frappe.core.doctype.user.user.verify_password",
          args: {
            password: data.password
          },
          callback: function(r) {
            if (!r.exc) {
              callback();
            }
          }
        });
      },
      __("Verify Password"),
      __("Verify")
    );
  };
  frappe.show_progress = (title, count, total = 100, description, hide_on_completion = false) => {
    let dialog;
    if (frappe.cur_progress && frappe.cur_progress.title === title && frappe.cur_progress.is_visible) {
      dialog = frappe.cur_progress;
    } else {
      dialog = new frappe.ui.Dialog({
        title
      });
      dialog.progress = $(`<div>
			<div class="progress">
				<div class="progress-bar"></div>
			</div>
			<p class="description text-muted small"></p>
		</div`).appendTo(dialog.body);
      dialog.progress_bar = dialog.progress.css({ "margin-top": "10px" }).find(".progress-bar");
      dialog.$wrapper.removeClass("fade");
      dialog.show();
      frappe.cur_progress = dialog;
    }
    if (description) {
      dialog.progress.find(".description").text(description);
    }
    dialog.percent = cint(flt(count) * 100 / total);
    dialog.progress_bar.css({ width: dialog.percent + "%" });
    if (hide_on_completion && dialog.percent === 100) {
      setTimeout(frappe.hide_progress, 500);
    }
    frappe.cur_progress.$wrapper.css("z-index", 2e3);
    return dialog;
  };
  frappe.hide_progress = function() {
    if (frappe.cur_progress) {
      frappe.cur_progress.hide();
      frappe.cur_progress = null;
    }
  };
  frappe.show_alert = frappe.toast = function(message, seconds = 7, actions = {}) {
    let indicator_icon_map = {
      orange: "solid-warning",
      yellow: "solid-warning",
      blue: "solid-info",
      green: "solid-success",
      red: "solid-error"
    };
    if (typeof message === "string") {
      message = {
        message
      };
    }
    if (!$("#dialog-container").length) {
      $('<div id="dialog-container"><div id="alert-container"></div></div>').appendTo("body");
    }
    let icon;
    if (message.indicator) {
      icon = indicator_icon_map[message.indicator.toLowerCase()] || "solid-" + message.indicator;
    } else {
      icon = "solid-info";
    }
    const indicator = message.indicator || "blue";
    const div = $(`
		<div class="alert desk-alert ${indicator}" role="alert">
			<div class="alert-message-container">
				<div class="alert-title-container">
					<div>${frappe.utils.icon(icon, "lg")}</div>
					<div class="alert-message">${message.message}</div>
				</div>
				<div class="alert-subtitle">${message.subtitle || ""}</div>
			</div>
			<div class="alert-body" style="display: none"></div>
			<a class="close">${frappe.utils.icon("close-alt")}</a>
		</div>
	`);
    div.hide().appendTo("#alert-container").show();
    if (message.body) {
      div.find(".alert-body").show().html(message.body);
    }
    div.find(".close, button").click(function() {
      div.addClass("out");
      setTimeout(() => div.remove(), 800);
      return false;
    });
    Object.keys(actions).map((key) => {
      div.find(`[data-action=${key}]`).on("click", actions[key]);
    });
    if (seconds > 2) {
      seconds = seconds - 0.8;
    }
    setTimeout(() => {
      div.addClass("out");
      setTimeout(() => div.remove(), 800);
      return false;
    }, seconds * 1e3);
    return div;
  };

  // frappe/public/js/frappe/utils/pretty_date.js
  function prettyDate(date, mini) {
    if (!date)
      return "";
    if (typeof date == "string") {
      date = frappe.datetime.convert_to_user_tz(date);
      date = new Date(
        (date || "").replace(/-/g, "/").replace(/[TZ]/g, " ").replace(/\.[0-9]*/, "")
      );
    }
    let diff = (new Date(frappe.datetime.now_datetime().replace(/-/g, "/")).getTime() - date.getTime()) / 1e3;
    let day_diff = Math.floor(diff / 86400);
    if (isNaN(day_diff) || day_diff < 0)
      return "";
    if (mini) {
      if (day_diff == 0) {
        if (diff < 60) {
          return __("now");
        } else if (diff < 3600) {
          return __("{0} m", [Math.floor(diff / 60)]);
        } else if (diff < 86400) {
          return __("{0} h", [Math.floor(diff / 3600)]);
        }
      } else {
        if (day_diff < 7) {
          return __("{0} d", [day_diff]);
        } else if (day_diff < 31) {
          return __("{0} w", [Math.floor(day_diff / 7)]);
        } else if (day_diff < 365) {
          return __("{0} M", [Math.floor(day_diff / 30)]);
        } else {
          return __("{0} y", [Math.floor(day_diff / 365)]);
        }
      }
    } else {
      if (day_diff == 0) {
        if (diff < 60) {
          return __("just now");
        } else if (diff < 120) {
          return __("1 minute ago");
        } else if (diff < 3600) {
          return __("{0} minutes ago", [Math.floor(diff / 60)]);
        } else if (diff < 7200) {
          return __("1 hour ago");
        } else if (diff < 86400) {
          return __("{0} hours ago", [Math.floor(diff / 3600)]);
        }
      } else {
        if (day_diff == 1) {
          return __("yesterday");
        } else if (day_diff < 7) {
          return __("{0} days ago", [day_diff]);
        } else if (day_diff < 14) {
          return __("1 week ago");
        } else if (day_diff < 31) {
          return __("{0} weeks ago", [Math.floor(day_diff / 7)]);
        } else if (day_diff < 62) {
          return __("1 month ago");
        } else if (day_diff < 365) {
          return __("{0} months ago", [Math.floor(day_diff / 30)]);
        } else if (day_diff < 730) {
          return __("1 year ago");
        } else {
          return __("{0} years ago", [Math.floor(day_diff / 365)]);
        }
      }
    }
  }
  frappe.provide("frappe.datetime");
  window.comment_when = function(datetime, mini) {
    var timestamp = frappe.datetime.str_to_user ? frappe.datetime.str_to_user(datetime) : datetime;
    return '<span class="frappe-timestamp ' + (mini ? " mini" : "") + '" data-timestamp="' + datetime + '" title="' + timestamp + '">' + prettyDate(datetime, mini) + "</span>";
  };
  frappe.datetime.comment_when = comment_when;
  frappe.datetime.prettyDate = prettyDate;
  frappe.datetime.refresh_when = function() {
    if (jQuery) {
      $(".frappe-timestamp").each(function() {
        $(this).html(prettyDate($(this).attr("data-timestamp"), $(this).hasClass("mini")));
      });
    }
  };
  setInterval(function() {
    frappe.datetime.refresh_when();
  }, 6e4);

  // frappe/public/js/frappe/utils/datetime.js
  frappe.provide("frappe.datetime");
  frappe.defaultDateFormat = "YYYY-MM-DD";
  frappe.defaultTimeFormat = "HH:mm:ss";
  frappe.defaultDatetimeFormat = frappe.defaultDateFormat + " " + frappe.defaultTimeFormat;
  moment.defaultFormat = frappe.defaultDateFormat;
  frappe.provide("frappe.datetime");
  $.extend(frappe.datetime, {
    convert_to_user_tz: function(date, format2) {
      let date_obj = null;
      if (frappe.boot.time_zone && frappe.boot.time_zone.system && frappe.boot.time_zone.user) {
        date_obj = moment.tz(date, frappe.boot.time_zone.system).clone().tz(frappe.boot.time_zone.user);
      } else {
        date_obj = moment(date);
      }
      return format2 === false ? date_obj : date_obj.format(frappe.defaultDatetimeFormat);
    },
    convert_to_system_tz: function(date, format2) {
      let date_obj = null;
      if (frappe.boot.time_zone && frappe.boot.time_zone.system && frappe.boot.time_zone.user) {
        date_obj = moment.tz(date, frappe.boot.time_zone.user).clone().tz(frappe.boot.time_zone.system);
      } else {
        date_obj = moment(date);
      }
      return format2 === false ? date_obj : date_obj.format(frappe.defaultDatetimeFormat);
    },
    is_system_time_zone: function() {
      if (frappe.boot.time_zone && frappe.boot.time_zone.system && frappe.boot.time_zone.user) {
        return moment().tz(frappe.boot.time_zone.system).utcOffset() === moment().tz(frappe.boot.time_zone.user).utcOffset();
      }
      return true;
    },
    is_timezone_same: function() {
      return frappe.datetime.is_system_time_zone();
    },
    str_to_obj: function(d) {
      return moment(d, frappe.defaultDatetimeFormat)._d;
    },
    obj_to_str: function(d) {
      return moment(d).locale("en").format();
    },
    obj_to_user: function(d) {
      return moment(d).format(frappe.datetime.get_user_date_fmt().toUpperCase());
    },
    get_diff: function(d1, d2) {
      return moment(d1).diff(d2, "days");
    },
    get_hour_diff: function(d1, d2) {
      return moment(d1).diff(d2, "hours");
    },
    get_minute_diff: function(d1, d2) {
      return moment(d1).diff(d2, "minutes");
    },
    get_day_diff: function(d1, d2) {
      return moment(d1).diff(d2, "days");
    },
    add_days: function(d, days) {
      return moment(d).add(days, "days").format();
    },
    add_months: function(d, months) {
      return moment(d).add(months, "months").format();
    },
    week_start: function() {
      return moment().startOf("week").format();
    },
    week_end: function() {
      return moment().endOf("week").format();
    },
    month_start: function() {
      return moment().startOf("month").format();
    },
    month_end: function() {
      return moment().endOf("month").format();
    },
    quarter_start: function() {
      return moment().startOf("quarter").format();
    },
    quarter_end: function() {
      return moment().endOf("quarter").format();
    },
    year_start: function() {
      return moment().startOf("year").format();
    },
    year_end: function() {
      return moment().endOf("year").format();
    },
    get_user_time_fmt: function() {
      return frappe.sys_defaults && frappe.sys_defaults.time_format || "HH:mm:ss";
    },
    get_user_date_fmt: function() {
      return frappe.sys_defaults && frappe.sys_defaults.date_format || "yyyy-mm-dd";
    },
    get_user_fmt: function() {
      return frappe.sys_defaults && frappe.sys_defaults.date_format || "yyyy-mm-dd";
    },
    str_to_user: function(val, only_time = false, only_date = false) {
      if (!val)
        return "";
      const user_date_fmt = frappe.datetime.get_user_date_fmt().toUpperCase();
      const user_time_fmt = frappe.datetime.get_user_time_fmt();
      let user_format = user_time_fmt;
      if (only_time) {
        let date_obj = moment(val, frappe.defaultTimeFormat);
        return date_obj.format(user_format);
      } else if (only_date) {
        let date_obj = moment(val, frappe.defaultDateFormat);
        return date_obj.format(user_date_fmt);
      } else {
        let date_obj = moment.tz(val, frappe.boot.time_zone.system);
        if (typeof val !== "string" || val.indexOf(" ") === -1) {
          user_format = user_date_fmt;
        } else {
          user_format = user_date_fmt + " " + user_time_fmt;
        }
        return date_obj.clone().tz(frappe.boot.time_zone.user).format(user_format);
      }
    },
    get_datetime_as_string: function(d) {
      return moment(d).format("YYYY-MM-DD HH:mm:ss");
    },
    user_to_str: function(val, only_time = false) {
      var user_time_fmt = frappe.datetime.get_user_time_fmt();
      if (only_time) {
        return moment(val, user_time_fmt).format(frappe.defaultTimeFormat);
      }
      var user_fmt = frappe.datetime.get_user_date_fmt().toUpperCase();
      var system_fmt = "YYYY-MM-DD";
      if (val.indexOf(" ") !== -1) {
        user_fmt += " " + user_time_fmt;
        system_fmt += " HH:mm:ss";
      }
      return moment(val, [user_fmt.replace("YYYY", "YY"), user_fmt]).locale("en").format(system_fmt);
    },
    user_to_obj: function(d) {
      return frappe.datetime.str_to_obj(frappe.datetime.user_to_str(d));
    },
    global_date_format: function(d) {
      var m = moment(d);
      if (m._f && m._f.indexOf("HH") !== -1) {
        return m.format("Do MMMM YYYY, hh:mm A");
      } else {
        return m.format("Do MMMM YYYY");
      }
    },
    now_date: function(as_obj = false) {
      return frappe.datetime._date(frappe.defaultDateFormat, as_obj);
    },
    now_time: function(as_obj = false) {
      return frappe.datetime._date(frappe.defaultTimeFormat, as_obj);
    },
    now_datetime: function(as_obj = false) {
      return frappe.datetime._date(frappe.defaultDatetimeFormat, as_obj);
    },
    system_datetime: function(as_obj = false) {
      return frappe.datetime._date(frappe.defaultDatetimeFormat, as_obj, true);
    },
    _date: function(format2, as_obj = false, system_time = false) {
      var _a, _b;
      let time_zone = ((_a = frappe.boot.time_zone) == null ? void 0 : _a.system) || frappe.sys_defaults.time_zone;
      if (!system_time) {
        time_zone = ((_b = frappe.boot.time_zone) == null ? void 0 : _b.user) || time_zone;
      }
      let date = moment.tz(time_zone);
      return as_obj ? frappe.datetime.moment_to_date_obj(date) : date.format(format2);
    },
    moment_to_date_obj: function(moment_obj) {
      const date_obj = new Date();
      const date_array = moment_obj.toArray();
      date_obj.setFullYear(date_array[0]);
      date_obj.setMonth(date_array[1]);
      date_obj.setDate(date_array[2]);
      date_obj.setHours(date_array[3]);
      date_obj.setMinutes(date_array[4]);
      date_obj.setSeconds(date_array[5]);
      date_obj.setMilliseconds(date_array[6]);
      return date_obj;
    },
    nowdate: function() {
      return frappe.datetime.now_date();
    },
    get_today: function() {
      return frappe.datetime.now_date();
    },
    get_time: (timestamp) => {
      return moment(timestamp).format("hh:mm A");
    },
    validate: function(d) {
      return moment(
        d,
        [frappe.defaultDateFormat, frappe.defaultDatetimeFormat, frappe.defaultTimeFormat],
        true
      ).isValid();
    },
    get_first_day_of_the_week_index() {
      const first_day_of_the_week = frappe.sys_defaults.first_day_of_the_week || "Sunday";
      return moment.weekdays().indexOf(first_day_of_the_week);
    }
  });

  // frappe/public/js/frappe/microtemplate.js
  frappe.template = { compiled: {}, debug: {} };
  frappe.template.compile = function(str, name2) {
    var key = name2 || str;
    if (!frappe.template.compiled[key]) {
      let replacer2 = function(match, p1, p2, offset, string) {
        var i2 = frappe.utils.get_random(3);
        var len = frappe.utils.get_random(3);
        return "{% for (var " + i2 + "=0, " + len + "=" + p2 + ".length; " + i2 + "<" + len + "; " + i2 + "++) { var " + p1 + " = " + p2 + "[" + i2 + "]; " + p1 + "._index = " + i2 + "; %}";
      };
      var replacer = replacer2;
      if (str.indexOf("'") !== -1) {
        str.replace(/'/g, "\\'");
      }
      str = str.replace(/{{/g, "{%=").replace(/}}/g, "%}");
      str = str.replace(/{%\s?if\s?\s?not\s?([^\(][^%{]+)\s?%}/g, "{% if (! $1) { %}");
      str = str.replace(/{%\s?if\s?([^\(][^%{]+)\s?%}/g, "{% if ($1) { %}");
      str = str.replace(/{%\s?for\s([a-z._]+)\sin\s([a-z._]+)\s?%}/g, replacer2);
      str = str.replace(/{%\s?endif\s?%}/g, "{% }; %}");
      str = str.replace(/{%\s?else\s?%}/g, "{% } else { %}");
      str = str.replace(/{%\s?endfor\s?%}/g, "{% }; %}");
      var fn_str = "var _p=[],print=function(){_p.push.apply(_p,arguments)};with(obj){\n_p.push('" + str.replace(/[\r\t\n]/g, " ").split("{%").join("	").replace(/((^|%})[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%}/g, "',$1,'").split("	").join("');\n").split("%}").join("\n_p.push('").split("\r").join("\\'") + "');}return _p.join('');";
      frappe.template.debug[name2] = fn_str;
      try {
        frappe.template.compiled[key] = new Function("obj", fn_str);
      } catch (e) {
        console.log("Error in Template:");
        console.log(fn_str);
        if (e.lineNumber) {
          console.log("Error in Line " + e.lineNumber + ", Col " + e.columnNumber + ":");
          console.log(fn_str.split("\n")[e.lineNumber - 1]);
        }
      }
    }
    return frappe.template.compiled[key];
  };
  frappe.render = function(str, data, name2) {
    return frappe.template.compile(str, name2)(data);
  };
  frappe.render_template = function(name2, data) {
    let template;
    if (name2.indexOf(" ") !== -1) {
      template = name2;
    } else {
      template = frappe.templates[name2];
    }
    if (data === void 0) {
      data = {};
    }
    if (!template) {
      frappe.throw(`Template <b>${name2}</b> not found.`);
    }
    return frappe.render(template, data, name2);
  };
  frappe.render_grid = function(opts) {
    if (opts.grid) {
      opts.columns = opts.grid.getColumns();
      opts.data = opts.grid.getData().getItems();
    }
    if (opts.print_settings && opts.print_settings.orientation && opts.print_settings.orientation.toLowerCase() === "landscape") {
      opts.landscape = true;
    }
    if (opts.landscape == null) {
      if (opts.columns && opts.columns.length > 10) {
        opts.landscape = true;
      } else {
        opts.landscape = false;
      }
    }
    if (!opts.content) {
      opts.content = frappe.render_template(opts.template || "print_grid", opts);
    }
    opts.base_url = frappe.urllib.get_base_url();
    opts.print_css = frappe.boot.print_css;
    opts.lang = opts.lang || frappe.boot.lang, opts.layout_direction = opts.layout_direction || frappe.utils.is_rtl() ? "rtl" : "ltr";
    var html = frappe.render_template("print_template", opts);
    var w = window.open();
    if (!w) {
      frappe.msgprint(__("Please enable pop-ups in your browser"));
    }
    w.document.write(html);
    w.document.close();
  }, frappe.render_tree = function(opts) {
    opts.base_url = frappe.urllib.get_base_url();
    opts.landscape = false;
    opts.print_css = frappe.boot.print_css;
    opts.print_format_css_path = frappe.assets.bundled_asset("print_format.bundle.css");
    var tree = frappe.render_template("print_tree", opts);
    var w = window.open();
    if (!w) {
      frappe.msgprint(__("Please enable pop-ups in your browser"));
    }
    w.document.write(tree);
    w.document.close();
  };
  frappe.render_pdf = function(html, opts = {}) {
    var formData = new FormData();
    formData.append("html", html);
    if (opts.orientation) {
      formData.append("orientation", opts.orientation);
    }
    var blob = new Blob([], { type: "text/xml" });
    formData.append("blob", blob);
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "/api/method/frappe.utils.print_format.report_to_pdf");
    xhr.setRequestHeader("X-Frappe-CSRF-Token", frappe.csrf_token);
    xhr.responseType = "arraybuffer";
    xhr.onload = function(success) {
      if (this.status === 200) {
        var blob2 = new Blob([success.currentTarget.response], { type: "application/pdf" });
        var objectUrl = URL.createObjectURL(blob2);
        let hidden_a_tag = document.createElement("a");
        document.body.appendChild(hidden_a_tag);
        hidden_a_tag.style = "display: none";
        hidden_a_tag.href = objectUrl;
        hidden_a_tag.download = opts.report_name || "report.pdf";
        hidden_a_tag.click();
        window.URL.revokeObjectURL(objectUrl);
      }
    };
    xhr.send(formData);
  };

  // frappe/public/js/frappe/query_string.js
  frappe.provide("frappe.utils");
  function get_url_arg(name2) {
    return get_query_params()[name2] || "";
  }
  function get_query_string(url2) {
    if (url2.includes("?")) {
      return url2.slice(url2.indexOf("?") + 1);
    } else {
      return "";
    }
  }
  function get_query_params(query_string) {
    var query_params = {};
    if (!query_string) {
      query_string = location.search.substring(1);
    }
    var query_list = query_string.split("&");
    for (var i2 = 0, l = query_list.length; i2 < l; i2++) {
      var pair = query_list[i2].split(/=(.+)/);
      var key = pair[0];
      if (!key) {
        continue;
      }
      var value2 = pair[1];
      if (typeof value2 === "string") {
        value2 = value2.replace(/\+/g, "%20");
        try {
          value2 = decodeURIComponent(value2);
        } catch (e) {
        }
      }
      if (key in query_params) {
        if (typeof query_params[key] === "undefined") {
          query_params[key] = [];
        } else if (typeof query_params[key] === "string") {
          query_params[key] = [query_params[key]];
        }
        query_params[key].push(value2);
      } else {
        query_params[key] = value2;
      }
    }
    return query_params;
  }
  function make_query_string(obj, encode3 = true) {
    let query_params = [];
    for (let key in obj) {
      let value2 = obj[key];
      if (value2 === void 0 || value2 === "" || value2 === null) {
        continue;
      }
      if (typeof value2 === "object") {
        value2 = JSON.stringify(value2);
      }
      if (encode3) {
        key = encodeURIComponent(key);
        value2 = encodeURIComponent(value2);
      }
      query_params.push(`${key}=${value2}`);
    }
    return "?" + query_params.join("&");
  }
  Object.assign(frappe.utils, {
    get_url_arg,
    get_query_string,
    get_query_params,
    make_query_string
  });

  // frappe/public/js/frappe/upload.js
  if (frappe.require) {
    frappe.require("file_uploader.bundle.js");
  } else {
    frappe.ready(function() {
      frappe.require("file_uploader.bundle.js");
    });
  }

  // frappe/public/js/frappe/model/meta.js
  frappe.provide("frappe.meta.docfield_map");
  frappe.provide("frappe.meta.docfield_copy");
  frappe.provide("frappe.meta.docfield_list");
  frappe.provide("frappe.meta.doctypes");
  frappe.provide("frappe.meta.precision_map");
  frappe.get_meta = function(doctype) {
    return locals["DocType"] ? locals["DocType"][doctype] : null;
  };
  $.extend(frappe.meta, {
    sync: function(doc) {
      $.each(doc.fields, function(i2, df) {
        frappe.meta.add_field(df);
      });
      frappe.meta.sync_messages(doc);
      if (doc.__print_formats)
        frappe.model.sync(doc.__print_formats);
      if (doc.__workflow_docs)
        frappe.model.sync(doc.__workflow_docs);
    },
    add_field: function(df) {
      frappe.provide("frappe.meta.docfield_map." + df.parent);
      frappe.meta.docfield_map[df.parent][df.fieldname || df.label] = df;
      if (!frappe.meta.docfield_list[df.parent])
        frappe.meta.docfield_list[df.parent] = [];
      for (var i2 in frappe.meta.docfield_list[df.parent]) {
        var d = frappe.meta.docfield_list[df.parent][i2];
        if (df.fieldname == d.fieldname)
          return;
      }
      frappe.meta.docfield_list[df.parent].push(df);
    },
    make_docfield_copy_for: function(doctype, docname, docfield_list = null) {
      var c = frappe.meta.docfield_copy;
      if (!c[doctype])
        c[doctype] = {};
      if (!c[doctype][docname])
        c[doctype][docname] = {};
      docfield_list = docfield_list || frappe.meta.docfield_list[doctype] || [];
      for (var i2 = 0, j = docfield_list.length; i2 < j; i2++) {
        var df = docfield_list[i2];
        c[doctype][docname][df.fieldname || df.label] = copy_dict(df);
      }
    },
    get_field: function(doctype, fieldname, name2) {
      var out = frappe.meta.get_docfield(doctype, fieldname, name2);
      if (!out) {
        frappe.model.std_fields.every(function(d) {
          if (d.fieldname === fieldname) {
            out = d;
            return false;
          } else {
            return true;
          }
        });
      }
      return out;
    },
    get_docfield: function(doctype, fieldname, name2) {
      var fields_dict = frappe.meta.get_docfield_copy(doctype, name2);
      return fields_dict ? fields_dict[fieldname] : null;
    },
    set_formatter: function(doctype, fieldname, name2, formatter) {
      frappe.meta.get_docfield(doctype, fieldname, name2).formatter = formatter;
    },
    set_indicator_formatter: function(doctype, fieldname, name2, get_text, get_color) {
      frappe.meta.get_docfield(doctype, fieldname, name2).formatter = function(value2, df, options, doc) {
        return repl('<span class="indicator %(color)s">%(name)s</span>', {
          color: get_color(),
          name: get_text()
        });
      };
    },
    get_docfields: function(doctype, name2, filters) {
      var docfield_map = frappe.meta.get_docfield_copy(doctype, name2);
      var docfields = frappe.meta.sort_docfields(docfield_map);
      if (filters) {
        docfields = frappe.utils.filter_dict(docfields, filters);
      }
      return docfields;
    },
    get_linked_fields: function(doctype) {
      return $.map(frappe.get_meta(doctype).fields, function(d) {
        return d.fieldtype == "Link" ? d.options : null;
      });
    },
    get_fields_to_check_permissions: function(doctype) {
      var fields = $.map(frappe.meta.get_docfields(doctype, name), function(df) {
        return df.fieldtype === "Link" && df.ignore_user_permissions !== 1 ? df : null;
      });
      fields = fields.concat({ label: "ID", fieldname: name, options: doctype });
      return fields;
    },
    sort_docfields: function(docs) {
      return $.map(docs, function(d) {
        return d;
      }).sort(function(a, b) {
        return a.idx - b.idx;
      });
    },
    get_docfield_copy: function(doctype, name2) {
      if (!name2)
        return frappe.meta.docfield_map[doctype];
      if (!(frappe.meta.docfield_copy[doctype] && frappe.meta.docfield_copy[doctype][name2])) {
        frappe.meta.make_docfield_copy_for(doctype, name2);
      }
      return frappe.meta.docfield_copy[doctype][name2];
    },
    get_fieldnames: function(doctype, name2, filters) {
      return $.map(
        frappe.utils.filter_dict(frappe.meta.docfield_map[doctype], filters),
        function(df) {
          return df.fieldname;
        }
      );
    },
    has_field: function(dt, fn) {
      let docfield_map = frappe.meta.docfield_map[dt];
      return docfield_map && docfield_map[fn];
    },
    get_table_fields: function(dt) {
      return $.map(frappe.meta.docfield_list[dt], function(d) {
        return frappe.model.table_fields.includes(d.fieldtype) ? d : null;
      });
    },
    get_doctype_for_field: function(doctype, key) {
      var out = null;
      if (frappe.model.std_fields_list.includes(key)) {
        out = doctype;
      } else if (frappe.meta.has_field(doctype, key)) {
        out = doctype;
      } else {
        frappe.meta.get_table_fields(doctype).every(function(d) {
          if (frappe.meta.has_field(d.options, key) || frappe.model.child_table_field_list.includes(key)) {
            out = d.options;
            return false;
          }
          return true;
        });
        if (!out) {
          console.log(
            __("Warning: Unable to find {0} in any table related to {1}", [
              key,
              __(doctype)
            ])
          );
        }
      }
      return out;
    },
    get_parentfield: function(parent_dt, child_dt) {
      var df = (frappe.get_doc("DocType", parent_dt).fields || []).filter(
        (df2) => frappe.model.table_fields.includes(df2.fieldtype) && df2.options === child_dt
      );
      if (!df.length)
        throw "parentfield not found for " + parent_dt + ", " + child_dt;
      return df[0].fieldname;
    },
    get_label: function(dt, fn, dn) {
      var standard = {
        name: __("ID"),
        creation: __("Created On"),
        docstatus: __("Document Status"),
        idx: __("Index"),
        modified: __("Last Updated On"),
        modified_by: __("Last Updated By"),
        owner: __("Created By"),
        _user_tags: __("Tags"),
        _liked_by: __("Liked By"),
        _comments: __("Comments"),
        _assign: __("Assigned To")
      };
      if (standard[fn]) {
        return standard[fn];
      } else {
        var df = this.get_docfield(dt, fn, dn);
        return (df ? df.label : "") || fn;
      }
    },
    get_print_sizes: function() {
      return [
        "A0",
        "A1",
        "A2",
        "A3",
        "A4",
        "A5",
        "A6",
        "A7",
        "A8",
        "A9",
        "B0",
        "B1",
        "B2",
        "B3",
        "B4",
        "B5",
        "B6",
        "B7",
        "B8",
        "B9",
        "B10",
        "C5E",
        "Comm10E",
        "DLE",
        "Executive",
        "Folio",
        "Ledger",
        "Legal",
        "Letter",
        "Tabloid",
        "Custom"
      ];
    },
    get_print_formats: function(doctype) {
      var print_format_list = ["Standard"];
      var default_print_format = locals.DocType[doctype].default_print_format;
      let enable_raw_printing = frappe.model.get_doc(
        ":Print Settings",
        "Print Settings"
      ).enable_raw_printing;
      var print_formats = frappe.get_list("Print Format", { doc_type: doctype }).sort(function(a, b) {
        return a > b ? 1 : -1;
      });
      $.each(print_formats, function(i2, d) {
        if (!print_format_list.includes(d.name) && d.print_format_type !== "JS" && (cint(enable_raw_printing) || !d.raw_printing)) {
          print_format_list.push(d.name);
        }
      });
      if (default_print_format && default_print_format != "Standard") {
        var index = print_format_list.indexOf(default_print_format);
        print_format_list.splice(index, 1).sort();
        print_format_list.unshift(default_print_format);
      }
      return print_format_list;
    },
    sync_messages: function(doc) {
      if (doc.__messages) {
        $.extend(frappe._messages, doc.__messages);
      }
    },
    get_field_currency: function(df, doc) {
      var currency = frappe.boot.sysdefaults.currency;
      if (!doc && cur_frm)
        doc = cur_frm.doc;
      if (df && df.options) {
        if (df.options.indexOf(":") != -1) {
          var options = df.options.split(":");
          if (options.length == 3) {
            let docname = null;
            if (doc) {
              docname = doc[options[1]];
              if (!docname && cur_frm) {
                docname = cur_frm.doc[options[1]];
              }
            } else {
              docname = frappe.defaults.get_user_default(options[1]);
            }
            currency = frappe.model.get_value(options[0], docname, options[2]) || frappe.model.get_value(":" + options[0], docname, options[2]) || currency;
          }
        } else if (doc && doc[df.options]) {
          currency = doc[df.options];
        } else if (cur_frm && cur_frm.doc[df.options]) {
          currency = cur_frm.doc[df.options];
        }
      }
      return currency;
    },
    get_field_precision: function(df, doc) {
      var precision3 = null;
      if (df && df.precision) {
        precision3 = cint(df.precision);
      } else if (df && df.fieldtype === "Currency") {
        precision3 = cint(frappe.defaults.get_default("currency_precision"));
        if (!precision3) {
          var number_format = get_number_format();
          var number_format_info = get_number_format_info(number_format);
          precision3 = number_format_info.precision;
        }
      } else {
        precision3 = cint(frappe.defaults.get_default("float_precision")) || 3;
      }
      return precision3;
    }
  });

  // frappe/public/js/frappe/model/model.js
  frappe.provide("frappe.model");
  $.extend(frappe.model, {
    all_fieldtypes: [
      "Autocomplete",
      "Attach",
      "Attach Image",
      "Barcode",
      "Button",
      "Check",
      "Code",
      "Color",
      "Currency",
      "Data",
      "Date",
      "Datetime",
      "Duration",
      "Dynamic Link",
      "Float",
      "Geolocation",
      "Heading",
      "HTML",
      "HTML Editor",
      "Icon",
      "Image",
      "Int",
      "JSON",
      "Link",
      "Long Text",
      "Markdown Editor",
      "Password",
      "Percent",
      "Phone",
      "Read Only",
      "Rating",
      "Select",
      "Signature",
      "Small Text",
      "Table",
      "Table MultiSelect",
      "Text",
      "Text Editor",
      "Time"
    ],
    no_value_type: [
      "Section Break",
      "Column Break",
      "Tab Break",
      "HTML",
      "Table",
      "Table MultiSelect",
      "Button",
      "Image",
      "Fold",
      "Heading"
    ],
    layout_fields: ["Section Break", "Column Break", "Tab Break", "Fold"],
    std_fields_list: [
      "name",
      "owner",
      "creation",
      "modified",
      "modified_by",
      "_user_tags",
      "_comments",
      "_assign",
      "_liked_by",
      "docstatus",
      "idx"
    ],
    child_table_field_list: ["parent", "parenttype", "parentfield"],
    core_doctypes_list: [
      "DocType",
      "DocField",
      "DocPerm",
      "User",
      "Role",
      "Has Role",
      "Page",
      "Module Def",
      "Print Format",
      "Report",
      "Customize Form",
      "Customize Form Field",
      "Property Setter",
      "Custom Field",
      "Client Script"
    ],
    restricted_fields: [
      "name",
      "parent",
      "creation",
      "modified",
      "modified_by",
      "parentfield",
      "parenttype",
      "file_list",
      "flags",
      "docstatus"
    ],
    html_fieldtypes: [
      "Text Editor",
      "Text",
      "Small Text",
      "Long Text",
      "HTML Editor",
      "Markdown Editor",
      "Code"
    ],
    std_fields: [
      { fieldname: "name", fieldtype: "Link", label: __("ID") },
      { fieldname: "owner", fieldtype: "Link", label: __("Created By"), options: "User" },
      { fieldname: "idx", fieldtype: "Int", label: __("Index") },
      { fieldname: "creation", fieldtype: "Datetime", label: __("Created On") },
      { fieldname: "modified", fieldtype: "Datetime", label: __("Last Updated On") },
      {
        fieldname: "modified_by",
        fieldtype: "Link",
        label: __("Last Updated By"),
        options: "User"
      },
      { fieldname: "_user_tags", fieldtype: "Data", label: __("Tags") },
      { fieldname: "_liked_by", fieldtype: "Data", label: __("Liked By") },
      { fieldname: "_comments", fieldtype: "Text", label: __("Comments") },
      { fieldname: "_assign", fieldtype: "Text", label: __("Assigned To") },
      { fieldname: "docstatus", fieldtype: "Int", label: __("Document Status") }
    ],
    numeric_fieldtypes: ["Int", "Float", "Currency", "Percent", "Duration"],
    std_fields_table: [{ fieldname: "parent", fieldtype: "Data", label: __("Parent") }],
    table_fields: ["Table", "Table MultiSelect"],
    new_names: {},
    events: {},
    user_settings: {},
    init: function() {
      frappe.realtime.on("doc_update", function(data) {
        var doc = locals[data.doctype] && locals[data.doctype][data.name];
        if (doc) {
          if (frappe.get_route()[0] === "Form" && cur_frm.doc.doctype === doc.doctype && cur_frm.doc.name === doc.name) {
            if (data.modified !== cur_frm.doc.modified && !frappe.ui.form.is_saving) {
              if (!cur_frm.is_dirty()) {
                cur_frm.debounced_reload_doc();
              } else {
                doc.__needs_refresh = true;
                cur_frm.show_conflict_message();
              }
            }
          } else {
            if (!doc.__unsaved) {
              frappe.model.remove_from_locals(doc.doctype, doc.name);
            } else {
              doc.__needs_refresh = true;
            }
          }
        }
      });
    },
    is_value_type: function(fieldtype) {
      if (typeof fieldtype == "object") {
        fieldtype = fieldtype.fieldtype;
      }
      return frappe.model.no_value_type.indexOf(fieldtype) === -1;
    },
    is_non_std_field: function(fieldname) {
      return ![...frappe.model.std_fields_list, ...frappe.model.child_table_field_list].includes(
        fieldname
      );
    },
    get_std_field: function(fieldname, ignore = false) {
      var docfield = $.map(
        [].concat(frappe.model.std_fields).concat(frappe.model.std_fields_table),
        function(d) {
          if (d.fieldname == fieldname)
            return d;
        }
      );
      if (!docfield.length) {
        if (ignore) {
          return { fieldname };
        } else {
          frappe.msgprint(__("Unknown Column: {0}", [fieldname]));
        }
      }
      return docfield[0];
    },
    get_from_localstorage: function(doctype) {
      if (localStorage["_doctype:" + doctype]) {
        return JSON.parse(localStorage["_doctype:" + doctype]);
      }
    },
    set_in_localstorage: function(doctype, docs) {
      try {
        localStorage["_doctype:" + doctype] = JSON.stringify(docs);
      } catch (e) {
        console.warn("localStorage quota exceeded, clearing doctype cache");
        frappe.model.clear_local_storage();
        localStorage["_doctype:" + doctype] = JSON.stringify(docs);
      }
    },
    clear_local_storage: function() {
      for (var key in localStorage) {
        if (key.startsWith("_doctype:")) {
          localStorage.removeItem(key);
        }
      }
    },
    with_doctype: function(doctype, callback, async) {
      if (locals.DocType[doctype]) {
        callback && callback();
        return Promise.resolve();
      } else {
        let cached_timestamp = null;
        let cached_doc = null;
        let cached_docs = frappe.model.get_from_localstorage(doctype);
        if (cached_docs) {
          cached_doc = cached_docs.filter((doc) => doc.name === doctype)[0];
          if (cached_doc) {
            cached_timestamp = cached_doc.modified;
          }
        }
        return frappe.call({
          method: "frappe.desk.form.load.getdoctype",
          type: "GET",
          args: {
            doctype,
            with_parent: 1,
            cached_timestamp
          },
          async,
          callback: function(r) {
            if (r.exc) {
              frappe.msgprint(__("Unable to load: {0}", [__(doctype)]));
              throw "No doctype";
            }
            if (r.message == "use_cache") {
              frappe.model.sync(cached_doc);
            } else {
              frappe.model.set_in_localstorage(doctype, r.docs);
            }
            frappe.model.init_doctype(doctype);
            if (r.user_settings) {
              frappe.model.user_settings[doctype] = JSON.parse(r.user_settings);
              frappe.model.user_settings[doctype].updated_on = moment().toString();
            }
            callback && callback(r);
          }
        });
      }
    },
    init_doctype: function(doctype) {
      var meta = locals.DocType[doctype];
      for (const asset_key of [
        "__list_js",
        "__custom_list_js",
        "__calendar_js",
        "__map_js",
        "__tree_js"
      ]) {
        if (meta[asset_key]) {
          new Function(meta[asset_key])();
        }
      }
      if (meta.__templates) {
        $.extend(frappe.templates, meta.__templates);
      }
    },
    with_doc: function(doctype, name2, callback) {
      return new Promise((resolve) => {
        if (!name2)
          name2 = doctype;
        if (locals[doctype] && locals[doctype][name2] && frappe.model.get_docinfo(doctype, name2)) {
          callback && callback(name2);
          resolve(frappe.get_doc(doctype, name2));
        } else {
          return frappe.call({
            method: "frappe.desk.form.load.getdoc",
            type: "GET",
            args: {
              doctype,
              name: name2
            },
            callback: function(r) {
              callback && callback(name2, r);
              resolve(frappe.get_doc(doctype, name2));
            }
          });
        }
      });
    },
    get_docinfo: function(doctype, name2) {
      return frappe.model.docinfo[doctype] && frappe.model.docinfo[doctype][name2] || null;
    },
    set_docinfo: function(doctype, name2, key, value2) {
      if (frappe.model.docinfo[doctype] && frappe.model.docinfo[doctype][name2]) {
        frappe.model.docinfo[doctype][name2][key] = value2;
      }
    },
    get_shared: function(doctype, name2) {
      return frappe.model.get_docinfo(doctype, name2).shared;
    },
    get_server_module_name: function(doctype) {
      var dt = frappe.model.scrub(doctype);
      var module = frappe.model.scrub(locals.DocType[doctype].module);
      var app = frappe.boot.module_app[module];
      return app + "." + module + ".doctype." + dt + "." + dt;
    },
    scrub: function(txt) {
      return txt.replace(/ /g, "_").toLowerCase();
    },
    unscrub: function(txt) {
      return (txt || "").replace(/-|_/g, " ").replace(/\w*/g, function(keywords) {
        return keywords.charAt(0).toUpperCase() + keywords.substr(1).toLowerCase();
      });
    },
    can_create: function(doctype) {
      return frappe.boot.user.can_create.indexOf(doctype) !== -1;
    },
    can_select: function(doctype) {
      if (frappe.boot.user) {
        return frappe.boot.user.can_select.indexOf(doctype) !== -1;
      }
    },
    can_read: function(doctype) {
      if (frappe.boot.user) {
        return frappe.boot.user.can_read.indexOf(doctype) !== -1;
      }
    },
    can_write: function(doctype) {
      return frappe.boot.user.can_write.indexOf(doctype) !== -1;
    },
    can_get_report: function(doctype) {
      return frappe.boot.user.can_get_report.indexOf(doctype) !== -1;
    },
    can_delete: function(doctype) {
      if (!doctype)
        return false;
      return frappe.boot.user.can_delete.indexOf(doctype) !== -1;
    },
    can_submit: function(doctype) {
      if (!doctype)
        return false;
      return frappe.boot.user.can_submit.indexOf(doctype) !== -1;
    },
    can_cancel: function(doctype) {
      if (!doctype)
        return false;
      return frappe.boot.user.can_cancel.indexOf(doctype) !== -1;
    },
    has_workflow: function(doctype) {
      return frappe.get_list("Workflow", { document_type: doctype, is_active: 1 }).length;
    },
    is_submittable: function(doctype) {
      if (!doctype)
        return false;
      return locals.DocType[doctype] && locals.DocType[doctype].is_submittable;
    },
    is_table: function(doctype) {
      if (!doctype)
        return false;
      return locals.DocType[doctype] && locals.DocType[doctype].istable;
    },
    is_single: function(doctype) {
      if (!doctype)
        return false;
      return frappe.boot.single_types.indexOf(doctype) != -1;
    },
    is_tree: function(doctype) {
      if (!doctype)
        return false;
      return locals.DocType[doctype] && locals.DocType[doctype].is_tree;
    },
    is_fresh(doc) {
      return doc && doc.__last_sync_on && new Date() - doc.__last_sync_on < 5e3;
    },
    can_import: function(doctype, frm, meta = null) {
      if (meta && !meta.allow_import)
        return false;
      if (frappe.user_roles.includes("System Manager"))
        return true;
      if (frm)
        return frm.perm[0].import === 1;
      return frappe.boot.user.can_import.indexOf(doctype) !== -1;
    },
    can_export: function(doctype, frm) {
      if (frappe.user_roles.includes("System Manager"))
        return true;
      if (frm)
        return frm.perm[0].export === 1;
      return frappe.boot.user.can_export.indexOf(doctype) !== -1;
    },
    can_print: function(doctype, frm) {
      if (frm)
        return frm.perm[0].print === 1;
      return frappe.boot.user.can_print.indexOf(doctype) !== -1;
    },
    can_email: function(doctype, frm) {
      if (frm)
        return frm.perm[0].email === 1;
      return frappe.boot.user.can_email.indexOf(doctype) !== -1;
    },
    can_share: function(doctype, frm) {
      let disable_sharing = cint(frappe.sys_defaults.disable_document_sharing);
      if (disable_sharing && frappe.session.user !== "Administrator") {
        return false;
      }
      if (frm) {
        return frm.perm[0].share === 1;
      }
      return frappe.boot.user.can_share.indexOf(doctype) !== -1;
    },
    has_value: function(dt, dn, fn) {
      var val = locals[dt] && locals[dt][dn] && locals[dt][dn][fn];
      var df = frappe.meta.get_docfield(dt, fn, dn);
      let ret;
      if (frappe.model.table_fields.includes(df.fieldtype)) {
        ret = false;
        $.each(locals[df.options] || {}, function(k, d) {
          if (d.parent == dn && d.parenttype == dt && d.parentfield == df.fieldname) {
            ret = true;
            return false;
          }
        });
      } else {
        ret = !is_null(val);
      }
      return ret ? true : false;
    },
    get_list: function(doctype, filters) {
      var docsdict = locals[doctype] || locals[":" + doctype] || {};
      if ($.isEmptyObject(docsdict))
        return [];
      return frappe.utils.filter_dict(docsdict, filters);
    },
    get_value: function(doctype, filters, fieldname, callback) {
      if (callback) {
        frappe.call({
          method: "frappe.client.get_value",
          args: {
            doctype,
            fieldname,
            filters
          },
          callback: function(r) {
            if (!r.exc) {
              callback(r.message);
            }
          }
        });
      } else {
        if (["number", "string"].includes(typeof filters) && locals[doctype] && locals[doctype][filters]) {
          return locals[doctype][filters][fieldname];
        } else {
          var l = frappe.get_list(doctype, filters);
          return l.length && l[0] ? l[0][fieldname] : null;
        }
      }
    },
    set_value: function(doctype, docname, fieldname, value2, fieldtype, skip_dirty_trigger = false) {
      var doc;
      if ($.isPlainObject(doctype)) {
        doc = doctype;
        fieldname = docname;
        value2 = fieldname;
      } else {
        doc = locals[doctype] && locals[doctype][docname];
      }
      let to_update = fieldname;
      let tasks = [];
      if (!$.isPlainObject(to_update)) {
        to_update = {};
        to_update[fieldname] = value2;
      }
      $.each(to_update, (key, value3) => {
        if (doc && doc[key] !== value3) {
          if (doc.__unedited && !(!doc[key] && !value3)) {
            doc.__unedited = false;
          }
          doc[key] = value3;
          tasks.push(() => frappe.model.trigger(key, value3, doc, skip_dirty_trigger));
        } else {
          if (["Link", "Dynamic Link"].includes(fieldtype) && doc) {
            tasks.push(() => frappe.model.trigger(key, value3, doc, skip_dirty_trigger));
          }
        }
      });
      return frappe.run_serially(tasks);
    },
    on: function(doctype, fieldname, fn) {
      frappe.provide("frappe.model.events." + doctype);
      if (!frappe.model.events[doctype][fieldname]) {
        frappe.model.events[doctype][fieldname] = [];
      }
      frappe.model.events[doctype][fieldname].push(fn);
    },
    trigger: function(fieldname, value2, doc, skip_dirty_trigger = false) {
      const tasks = [];
      function enqueue_events(events) {
        if (!events)
          return;
        for (const fn of events) {
          if (!fn)
            continue;
          tasks.push(() => {
            const return_value = fn(fieldname, value2, doc, skip_dirty_trigger);
            if (return_value && return_value.then) {
              return return_value;
            } else {
              return frappe.after_server_call();
            }
          });
        }
      }
      if (frappe.model.events[doc.doctype]) {
        enqueue_events(frappe.model.events[doc.doctype][fieldname]);
        enqueue_events(frappe.model.events[doc.doctype]["*"]);
      }
      return frappe.run_serially(tasks);
    },
    get_doc: function(doctype, name2) {
      if (!name2)
        name2 = doctype;
      if ($.isPlainObject(name2)) {
        var doc = frappe.get_list(doctype, name2);
        return doc && doc.length ? doc[0] : null;
      }
      return locals[doctype] ? locals[doctype][name2] : null;
    },
    get_children: function(doctype, parent, parentfield, filters) {
      let doc;
      if ($.isPlainObject(doctype)) {
        doc = doctype;
        filters = parentfield;
        parentfield = parent;
      } else {
        doc = frappe.get_doc(doctype, parent);
      }
      var children = doc[parentfield] || [];
      if (filters) {
        return frappe.utils.filter_dict(children, filters);
      } else {
        return children;
      }
    },
    clear_table: function(doc, parentfield) {
      for (const d of doc[parentfield] || []) {
        delete locals[d.doctype][d.name];
      }
      doc[parentfield] = [];
    },
    remove_from_locals: function(doctype, name2) {
      this.clear_doc(doctype, name2);
      if (frappe.views.formview[doctype]) {
        delete frappe.views.formview[doctype].frm.opendocs[name2];
      }
    },
    clear_doc: function(doctype, name2) {
      var doc = locals[doctype] && locals[doctype][name2];
      if (!doc)
        return;
      var parent = null;
      if (doc.parenttype) {
        parent = doc.parent;
        var parenttype = doc.parenttype, parentfield = doc.parentfield;
      }
      delete locals[doctype][name2];
      if (parent) {
        var parent_doc = locals[parenttype][parent];
        var newlist = [], idx = 1;
        $.each(parent_doc[parentfield], function(i2, d) {
          if (d.name != name2) {
            newlist.push(d);
            d.idx = idx;
            idx++;
          }
          parent_doc[parentfield] = newlist;
        });
      }
    },
    get_no_copy_list: function(doctype) {
      var no_copy_list = ["name", "amended_from", "amendment_date", "cancel_reason"];
      var docfields = frappe.get_doc("DocType", doctype).fields || [];
      for (var i2 = 0, j = docfields.length; i2 < j; i2++) {
        var df = docfields[i2];
        if (cint(df.no_copy))
          no_copy_list.push(df.fieldname);
      }
      return no_copy_list;
    },
    delete_doc: function(doctype, docname, callback) {
      let title = docname;
      const title_field = frappe.get_meta(doctype).title_field;
      if (frappe.get_meta(doctype).autoname == "hash" && title_field) {
        const value2 = frappe.model.get_value(doctype, docname, title_field);
        if (value2) {
          title = `${value2} (${docname})`;
        }
      }
      frappe.confirm(__("Permanently delete {0}?", [title.bold()]), function() {
        return frappe.call({
          method: "frappe.client.delete",
          args: {
            doctype,
            name: docname
          },
          freeze: true,
          freeze_message: __("Deleting {0}...", [title]),
          callback: function(r, rt) {
            if (!r.exc) {
              frappe.utils.play_sound("delete");
              frappe.model.clear_doc(doctype, docname);
              if (callback)
                callback(r, rt);
            }
          }
        });
      });
    },
    rename_doc: function(doctype, docname, callback) {
      let message = __("Merge with existing");
      let warning = __("This cannot be undone");
      let merge_label = message + " <b>(" + warning + ")</b>";
      var d = new frappe.ui.Dialog({
        title: __("Rename {0}", [__(docname)]),
        fields: [
          {
            label: __("New Name"),
            fieldname: "new_name",
            fieldtype: "Data",
            reqd: 1,
            default: docname
          },
          { label: merge_label, fieldtype: "Check", fieldname: "merge" }
        ]
      });
      d.set_primary_action(__("Rename"), function() {
        d.hide();
        var args = d.get_values();
        if (!args)
          return;
        return frappe.call({
          method: "frappe.rename_doc",
          freeze: true,
          freeze_message: "Updating related fields...",
          args: {
            doctype,
            old: docname,
            new: args.new_name,
            merge: args.merge
          },
          btn: d.get_primary_btn(),
          callback: function(r, rt) {
            if (!r.exc) {
              $(document).trigger("rename", [
                doctype,
                docname,
                r.message || args.new_name
              ]);
              if (locals[doctype] && locals[doctype][docname])
                delete locals[doctype][docname];
              d.hide();
              if (callback)
                callback(r.message);
            }
          }
        });
      });
      d.show();
    },
    round_floats_in: function(doc, fieldnames) {
      if (!doc) {
        return;
      }
      if (!fieldnames) {
        fieldnames = frappe.meta.get_fieldnames(doc.doctype, doc.parent, {
          fieldtype: ["in", ["Currency", "Float"]]
        });
      }
      for (var i2 = 0, j = fieldnames.length; i2 < j; i2++) {
        var fieldname = fieldnames[i2];
        doc[fieldname] = flt(doc[fieldname], precision(fieldname, doc));
      }
    },
    validate_missing: function(doc, fieldname) {
      if (!doc[fieldname]) {
        frappe.throw(
          __("Please specify") + ": " + __(frappe.meta.get_label(doc.doctype, fieldname, doc.parent || doc.name))
        );
      }
    },
    get_all_docs: function(doc) {
      var all = [doc];
      for (var key in doc) {
        if ($.isArray(doc[key]) && !key.startsWith("_")) {
          var children = doc[key];
          for (var i2 = 0, l = children.length; i2 < l; i2++) {
            all.push(children[i2]);
          }
        }
      }
      return all;
    },
    get_full_column_name: function(fieldname, doctype) {
      if (fieldname.includes("`tab"))
        return fieldname;
      return "`tab" + doctype + "`.`" + fieldname + "`";
    },
    is_numeric_field: function(fieldtype) {
      if (!fieldtype)
        return;
      if (typeof fieldtype === "object") {
        fieldtype = fieldtype.fieldtype;
      }
      return frappe.model.numeric_fieldtypes.includes(fieldtype);
    },
    set_default_views_for_doctype(doctype, frm) {
      frappe.model.with_doctype(doctype, () => {
        var _a, _b, _c;
        let meta = frappe.get_meta(doctype);
        let default_views = ["List", "Report", "Dashboard", "Kanban"];
        if (meta.is_calendar_and_gantt && frappe.views.calendar[doctype]) {
          let views = ["Calendar", "Gantt"];
          default_views.push(...views);
        }
        if (meta.is_tree) {
          default_views.push("Tree");
        }
        if (frm.doc.image_field) {
          default_views.push("Image");
        }
        if (doctype === "Communication" && frappe.boot.email_accounts.length) {
          default_views.push("Inbox");
        }
        if (((_a = frm.doc.fields) == null ? void 0 : _a.find((i2) => i2.fieldname === "latitude")) && ((_b = frm.doc.fields) == null ? void 0 : _b.find((i2) => i2.fieldname === "longitude")) || ((_c = frm.doc.fields) == null ? void 0 : _c.find(
          (i2) => i2.fieldname === "location" && i2.fieldtype == "Geolocation"
        ))) {
          default_views.push("Map");
        }
        frm.set_df_property("default_view", "options", default_views);
      });
    }
  });
  frappe.get_doc = frappe.model.get_doc;
  frappe.get_children = frappe.model.get_children;
  frappe.get_list = frappe.model.get_list;

  // frappe/public/js/frappe/model/perm.js
  frappe.provide("frappe.perm");
  Object.assign(window, {
    READ: "read",
    WRITE: "write",
    CREATE: "create",
    DELETE: "delete",
    SUBMIT: "submit",
    CANCEL: "cancel",
    AMEND: "amend"
  });
  $.extend(frappe.perm, {
    rights: [
      "select",
      "read",
      "write",
      "create",
      "delete",
      "submit",
      "cancel",
      "amend",
      "report",
      "import",
      "export",
      "print",
      "email",
      "share"
    ],
    doctype_perm: {},
    has_perm: (doctype, permlevel = 0, ptype = "read", doc) => {
      var _a;
      const perms = frappe.perm.get_perm(doctype, doc);
      return !!((_a = perms == null ? void 0 : perms[permlevel]) == null ? void 0 : _a[ptype]);
    },
    get_perm: (doctype, doc) => {
      var _a, _b;
      if (doc && !doc.__islocal) {
        return frappe.perm._get_perm(doctype, doc);
      }
      return (_b = (_a = frappe.perm.doctype_perm)[doctype]) != null ? _b : _a[doctype] = frappe.perm._get_perm(doctype);
    },
    _get_perm: (doctype, doc) => {
      let perm = [{ read: 0, permlevel: 0 }];
      let meta = frappe.get_doc("DocType", doctype);
      const user = frappe.session.user;
      if (user === "Administrator" || frappe.user_roles.includes("Administrator")) {
        perm[0].read = 1;
      }
      if (!meta)
        return perm;
      perm = frappe.perm.get_role_permissions(meta);
      const base_perm = perm[0];
      if (doc) {
        let docinfo = frappe.model.get_docinfo(doctype, doc.name);
        if (docinfo && docinfo.permissions) {
          Object.keys(docinfo.permissions).forEach((ptype) => {
            base_perm[ptype] = docinfo.permissions[ptype];
          });
        }
        if (doc.owner !== user) {
          for (const right of frappe.perm.rights) {
            if (base_perm[right] && !base_perm.rights_without_if_owner.has(right)) {
              base_perm[right] = 0;
            }
          }
        }
        if (docinfo && docinfo.shared) {
          for (const s of docinfo.shared) {
            if (s.user !== user)
              continue;
            for (const right of ["read", "write", "submit", "share"]) {
              if (!base_perm[right])
                base_perm[right] = s[right];
            }
            if (s.read) {
              base_perm.email = frappe.boot.user.can_email.indexOf(doctype) !== -1 ? 1 : 0;
              base_perm.print = frappe.boot.user.can_print.indexOf(doctype) !== -1 ? 1 : 0;
            }
          }
        }
      }
      if (!base_perm.read && frappe.model.can_read(doctype)) {
        base_perm.read = 1;
      }
      return perm;
    },
    get_role_permissions: (meta) => {
      let perm = [{ read: 0, permlevel: 0 }];
      (meta.permissions || []).forEach((p) => {
        var _a, _b;
        const permlevel = cint(p.permlevel);
        const current_perm = (_a = perm[permlevel]) != null ? _a : perm[permlevel] = { permlevel };
        if (permlevel === 0) {
          (_b = current_perm.rights_without_if_owner) != null ? _b : current_perm.rights_without_if_owner = /* @__PURE__ */ new Set();
        }
        if (frappe.user_roles.includes(p.role)) {
          frappe.perm.rights.forEach((right) => {
            if (!p[right])
              return;
            current_perm[right] = 1;
            if (permlevel === 0 && !p.if_owner) {
              current_perm.rights_without_if_owner.add(right);
            }
          });
        }
      });
      perm = perm.map((p) => p || {});
      return perm;
    },
    get_match_rules: (doctype, ptype) => {
      let match_rules = [];
      if (!ptype)
        ptype = "read";
      let perm = frappe.perm.get_perm(doctype);
      let user_permissions = frappe.defaults.get_user_permissions();
      if (user_permissions && !$.isEmptyObject(user_permissions)) {
        let rules = {};
        let fields_to_check = frappe.meta.get_fields_to_check_permissions(doctype);
        $.each(fields_to_check, (i2, df) => {
          const user_permissions_for_doctype = user_permissions[df.options] || [];
          const allowed_records = frappe.perm.get_allowed_docs_for_doctype(
            user_permissions_for_doctype,
            doctype
          );
          if (allowed_records.length) {
            rules[df.label] = allowed_records;
          }
        });
        if (!$.isEmptyObject(rules)) {
          match_rules.push(rules);
        }
      }
      const base_perm = perm[0];
      if (base_perm.read && !base_perm.rights_without_if_owner.has("read")) {
        match_rules.push({ Owner: frappe.session.user });
      }
      return match_rules;
    },
    get_field_display_status: (df, doc, perm, explain) => {
      if (!perm && doc) {
        perm = frappe.perm.get_perm(doc.doctype, doc);
      }
      if (!perm) {
        let is_hidden = df && (cint(df.hidden) || cint(df.hidden_due_to_dependency));
        let is_read_only = df && (cint(df.read_only) || cint(df.is_virtual));
        return is_hidden ? "None" : is_read_only ? "Read" : "Write";
      }
      if (!df.permlevel)
        df.permlevel = 0;
      let p = perm[df.permlevel];
      let status = "None";
      if (p) {
        if (p.write && !df.disabled && !df.is_virtual) {
          status = "Write";
        } else if (p.read) {
          status = "Read";
        }
      }
      if (explain)
        console.log("By Permission:" + status);
      if (cint(df.hidden))
        status = "None";
      if (explain)
        console.log("By Hidden:" + status);
      if (cint(df.hidden_due_to_dependency))
        status = "None";
      if (explain)
        console.log("By Hidden Due To Dependency:" + status);
      if (!doc) {
        return status;
      }
      if (status === "Write" && cint(doc.docstatus) > 0)
        status = "Read";
      if (explain)
        console.log("By Submit:" + status);
      let allow_on_submit = cint(df.allow_on_submit);
      if (status === "Read" && allow_on_submit && cint(doc.docstatus) === 1 && p.write) {
        status = "Write";
      }
      if (explain)
        console.log("By Allow on Submit:" + status);
      if (status === "Read" && cur_frm && cur_frm.state_fieldname) {
        if (cint(cur_frm.read_only) || cur_frm.states.update_fields.includes(df.fieldname) || df.fieldname == cur_frm.state_fieldname) {
          status = "Read";
        }
      }
      if (explain)
        console.log("By Workflow:" + status);
      if (status === "Write" && (cint(df.read_only) || df.fieldtype === "Read Only")) {
        status = "Read";
      }
      if (explain)
        console.log("By Read Only:" + status);
      if (status === "Write" && df.set_only_once && !doc.__islocal) {
        status = "Read";
      }
      if (explain)
        console.log("By Set Only Once:" + status);
      return status;
    },
    is_visible: (df, doc, perm) => {
      if (typeof df === "string") {
        df = frappe.meta.get_docfield(doc.doctype, df, doc.parent || doc.name);
      }
      let status = frappe.perm.get_field_display_status(df, doc, perm);
      return status === "None" ? false : true;
    },
    get_allowed_docs_for_doctype: (user_permissions, doctype) => {
      return frappe.perm.filter_allowed_docs_for_doctype(user_permissions, doctype, false);
    },
    filter_allowed_docs_for_doctype: (user_permissions, doctype, with_default_doc = true) => {
      const filtered_perms = (user_permissions || []).filter((perm) => {
        return perm.applicable_for === doctype || !perm.applicable_for;
      });
      const allowed_docs = filtered_perms.map((perm) => perm.doc);
      if (with_default_doc) {
        const default_doc = filtered_perms.filter((perm) => perm.is_default).map((record) => record.doc);
        return {
          allowed_records: allowed_docs,
          default_doc: default_doc[0]
        };
      } else {
        return allowed_docs;
      }
    }
  });

  // frappe/public/js/bootstrap-4-web.bundle.js
  $(".dropdown-menu a.dropdown-toggle").on("click", function(e) {
    e.preventDefault();
    e.stopImmediatePropagation();
    if (!$(this).next().hasClass("show")) {
      $(this).parents(".dropdown-menu").first().find(".show").removeClass("show");
    }
    var $subMenu = $(this).next(".dropdown-menu");
    $subMenu.toggleClass("show");
    $(this).parents("li.nav-item.dropdown.show").on("hidden.bs.dropdown", function() {
      $(".dropdown-submenu .show").removeClass("show");
    });
    return false;
  });
  frappe.get_modal = function(title, content) {
    return $(
      `<div class="modal" tabindex="-1" role="dialog">
			<div class="modal-dialog modal-dialog-scrollable" role="document">
				<div class="modal-content">
					<div class="modal-header">
						<h5 class="modal-title">${title}</h5>
						<button type="button" class="close" data-dismiss="modal" aria-label="Close">
						${frappe.utils.icon("close-alt", "sm", "close-alt")}
						</button>
					</div>
					<div class="modal-body">
						${content}
					</div>
					<div class="modal-footer hidden">
						<button type="button" class="btn btn-sm btn-secondary hidden"></button>
						<button type="button" class="btn btn-sm btn-primary hidden"></button>
					</div>
				</div>
			</div>
		</div>`
    );
  };
  frappe.ui.Dialog = class Dialog2 extends frappe.ui.Dialog {
    get_primary_btn() {
      return this.$wrapper.find(".modal-footer .btn-primary");
    }
    get_secondary_btn() {
      return this.$wrapper.find(".modal-footer .btn-secondary");
    }
    set_primary_action(label, click) {
      this.$wrapper.find(".modal-footer").removeClass("hidden");
      return super.set_primary_action(label, click).removeClass("hidden");
    }
    set_secondary_action(click) {
      return super.set_secondary_action(click).removeClass("hidden");
    }
    make() {
      super.make();
      if (this.fields) {
        this.$wrapper.find(".section-body").addClass("w-100");
      }
    }
  };

  // frappe/website/js/website.js
  var import_syntax_highlight = __toESM(require_syntax_highlight());
  frappe.provide("website");
  frappe.provide("frappe.awesome_bar_path");
  window.cur_frm = null;
  $.extend(frappe, {
    _assets_loaded: [],
    require: async function(links, callback) {
      if (typeof links === "string") {
        links = [links];
      }
      links = links.map((link) => frappe.bundled_asset(link));
      for (let link of links) {
        await this.add_asset_to_head(link);
      }
      callback && callback();
    },
    bundled_asset(path, is_rtl = null) {
      if (!path.startsWith("/assets") && path.includes(".bundle.")) {
        if (path.endsWith(".css") && is_rtl) {
          path = `rtl_${path}`;
        }
        path = frappe.boot.assets_json[path] || path;
        return path;
      }
      return path;
    },
    add_asset_to_head(link) {
      return new Promise((resolve) => {
        if (frappe._assets_loaded.includes(link))
          return resolve();
        let el;
        if (link.split(".").pop() === "js") {
          el = document.createElement("script");
          el.type = "text/javascript";
          el.src = link;
        } else {
          el = document.createElement("link");
          el.type = "text/css";
          el.rel = "stylesheet";
          el.href = link;
        }
        document.getElementsByTagName("head")[0].appendChild(el);
        el.onload = () => {
          frappe._assets_loaded.push(link);
          resolve();
        };
      });
    },
    hide_message: function() {
      $(".message-overlay").remove();
    },
    xcall: function(method, params) {
      return new Promise((resolve, reject) => {
        frappe.call({
          method,
          args: params,
          callback: (r) => {
            resolve(r.message);
          },
          error: (r) => {
            reject(r.message);
          }
        });
      });
    },
    call: function(opts) {
      if (typeof arguments[0] === "string") {
        opts = {
          method: arguments[0],
          args: arguments[1],
          callback: arguments[2]
        };
      }
      frappe.prepare_call(opts);
      if (opts.freeze) {
        frappe.freeze();
      }
      return $.ajax({
        type: opts.type || "POST",
        url: opts.url || "/",
        data: opts.args,
        dataType: "json",
        headers: {
          "X-Frappe-CSRF-Token": frappe.csrf_token,
          "X-Frappe-CMD": opts.args && opts.args.cmd || "" || ""
        },
        statusCode: opts.statusCode || {
          404: function() {
            frappe.msgprint(__("Not found"));
          },
          403: function() {
            frappe.msgprint(__("Not permitted"));
          },
          200: function(data) {
            if (opts.callback)
              opts.callback(data);
            if (opts.success)
              opts.success(data);
          }
        }
      }).always(function(data) {
        if (opts.freeze) {
          frappe.unfreeze();
        }
        if (data.responseText) {
          try {
            data = JSON.parse(data.responseText);
          } catch (e) {
            data = {};
          }
        }
        frappe.process_response(opts, data);
      });
    },
    prepare_call: function(opts) {
      if (opts.btn) {
        $(opts.btn).prop("disabled", true);
      }
      if (opts.msg) {
        $(opts.msg).toggle(false);
      }
      if (!opts.args)
        opts.args = {};
      if (opts.method) {
        opts.args.cmd = opts.method;
      }
      $.each(opts.args, function(key, val) {
        if (typeof val != "string" && val !== null) {
          opts.args[key] = JSON.stringify(val);
        }
      });
      if (!opts.no_spinner) {
      }
    },
    process_response: function(opts, data) {
      if (opts.btn) {
        $(opts.btn).prop("disabled", false);
      }
      if (data._server_messages) {
        var server_messages = JSON.parse(data._server_messages || "[]");
        server_messages.map((msg) => {
          try {
            return JSON.parse(msg);
          } catch (e) {
            return msg;
          }
        }).join("<br>");
        if (opts.error_msg) {
          $(opts.error_msg).html(server_messages).toggle(true);
        } else {
          frappe.msgprint(server_messages);
        }
      }
      if (data.exc) {
        try {
          var err = JSON.parse(data.exc);
          if ($.isArray(err)) {
            err = err.join("\n");
          }
          console.error ? console.error(err) : console.log(err);
        } catch (e) {
          console.log(data.exc);
        }
      } else {
      }
      if (opts.msg && data.message) {
        $(opts.msg).html(data.message).toggle(true);
      }
      if (opts.always) {
        opts.always(data);
      }
    },
    show_message: function(text, icon) {
      if (!icon)
        icon = "fa fa-refresh fa-spin";
      frappe.hide_message();
      $('<div class="message-overlay"></div>').html(
        '<div class="content"><i class="' + icon + ' text-muted"></i><br>' + text + "</div>"
      ).appendTo(document.body);
    },
    has_permission: function(doctype, docname, perm_type, callback) {
      return frappe.call({
        type: "GET",
        method: "frappe.client.has_permission",
        no_spinner: true,
        args: { doctype, docname, perm_type },
        callback: function(r) {
          if (!r.exc && r.message.has_permission) {
            if (callback) {
              return callback(r);
            }
          }
        }
      });
    },
    render_user: function() {
      if (frappe.is_user_logged_in()) {
        $(".btn-login-area").toggle(false);
        $(".logged-in").toggle(true);
        $(".user-image").attr("src", frappe.get_cookie("user_image"));
        $(".user-image-wrapper").html(
          frappe.avatar(null, "avatar-medium", null, null, null, true)
        );
        $(".user-image-sidebar").html(
          frappe.avatar(null, "avatar-medium", null, null, null, true)
        );
        $(".user-image-myaccount").html(
          frappe.avatar(null, "avatar-large", null, null, null, true)
        );
      }
    },
    freeze_count: 0,
    freeze: function(msg) {
      if (!$("#freeze").length) {
        var freeze = $('<div id="freeze" class="modal-backdrop fade"></div>').appendTo("body");
        freeze.html(
          repl(
            '<div class="freeze-message-container"><div class="freeze-message">%(msg)s</div></div>',
            { msg: msg || "" }
          )
        );
        setTimeout(function() {
          freeze.addClass("in");
        }, 1);
      } else {
        $("#freeze").addClass("in");
      }
      frappe.freeze_count++;
    },
    unfreeze: function() {
      if (!frappe.freeze_count)
        return;
      frappe.freeze_count--;
      if (!frappe.freeze_count) {
        var freeze = $("#freeze").removeClass("in");
        setTimeout(function() {
          if (!frappe.freeze_count) {
            freeze.remove();
          }
        }, 150);
      }
    },
    trigger_ready: function() {
      frappe.ready_events.forEach(function(fn) {
        fn();
      });
    },
    highlight_code_blocks: function() {
      import_syntax_highlight.default.initHighlighting();
    },
    bind_filters: function() {
      $(".filter").each(function() {
        var key = $(this).attr("data-key");
        var val = frappe.utils.get_url_arg(key).replace(/\+/g, " ");
        if (val)
          $(this).val(val);
      });
      var search = function() {
        var args = {};
        $(".filter").each(function() {
          var val = $(this).val();
          if (val)
            args[$(this).attr("data-key")] = val;
        });
        window.location.href = location.pathname + "?" + $.param(args);
      };
      $(".filter").on("change", function() {
        search();
      });
    },
    bind_navbar_search: function() {
      frappe.get_navbar_search().on("keypress", function(e) {
        var val = $(this).val();
        if (e.which === 13 && val) {
          $(this).val("").blur();
          frappe.do_search(val);
          return false;
        }
      });
    },
    do_search: function(val) {
      var path = frappe.awesome_bar_path && frappe.awesome_bar_path[location.pathname] || window.search_path || location.pathname;
      window.location.href = path + "?txt=" + encodeURIComponent(val);
    },
    set_search_path: function(path) {
      frappe.awesome_bar_path[location.pathname] = path;
    },
    make_navbar_active: function() {
      var pathname = window.location.pathname;
      $(".navbar-nav li.active").removeClass("active");
      $(".navbar-nav li").each(function() {
        var href = $(this.getElementsByTagName("a")).attr("href");
        if (href === pathname) {
          $(this).addClass("active");
          return false;
        }
      });
    },
    get_navbar_search: function() {
      return $(".navbar .search, .sidebar .search");
    },
    is_user_logged_in: function() {
      return frappe.get_cookie("user_id") !== "Guest" && frappe.session.user !== "Guest";
    },
    add_switch_to_desk: function() {
      $(".switch-to-desk").removeClass("hidden");
    },
    add_apps: function(obj) {
      $(".logged-in .apps").attr("href", obj.route).text(obj.label);
      $(".logged-in .apps").removeClass("hidden");
    },
    add_link_to_headings: function() {
      $(".doc-content .from-markdown").find("h2, h3, h4, h5, h6").each((i2, $heading) => {
        let id = $heading.id;
        let $a = $('<a class="no-underline">').prop("href", "#" + id).attr("aria-hidden", "true").html(`
					<svg xmlns="http://www.w3.org/2000/svg" style="width: 0.8em; height: 0.8em;" viewBox="0 0 24 24" fill="none" stroke="currentColor"
						stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
						<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path>
						<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
					</svg>
				`);
        $($heading).append($a);
      });
    },
    show_language_picker() {
      if (frappe.session.user === "Guest" && window.show_language_picker) {
        frappe.call("frappe.translate.get_all_languages", {
          with_language_name: true
        }).then((res) => {
          let language_list = res.message;
          let language = frappe.get_cookie("preferred_language");
          let language_codes = [];
          let language_switcher = $("#language-switcher .form-control");
          language_list.forEach((language_doc) => {
            language_codes.push(language_doc.language_code);
            language_switcher.append(
              $("<option></option>").attr("value", language_doc.language_code).text(language_doc.language_name)
            );
          });
          $("#language-switcher").removeClass("hide");
          language = language || (language_codes.includes(navigator.language) ? navigator.language : "en");
          language_switcher.val(language);
          document.documentElement.lang = language;
          language_switcher.change(() => {
            const lang = language_switcher.val();
            document.cookie = `preferred_language=${lang}`;
            window.location.reload();
          });
        });
      }
    },
    setup_videos: () => {
      $(".section-video-wrapper").on("click", (e) => {
        let $video = $(e.currentTarget);
        let id = $video.data("youtubeId");
        console.log(id);
        $video.find(".video-thumbnail").hide();
        $video.append(`
				<iframe allowfullscreen="" class="section-video" f;rameborder="0" src="//youtube.com/embed/${id}?autoplay=1"></iframe>
			`);
      });
    }
  });
  frappe.setup_search = function(target, search_scope) {
    if (typeof target === "string") {
      target = $(target);
    }
    let $search_input = $(`<div class="dropdown" id="dropdownMenuSearch">
			<input type="search" class="form-control" placeholder="Search the docs (Press / to focus)" />
			<div class="overflow-hidden shadow dropdown-menu w-100" aria-labelledby="dropdownMenuSearch">
			</div>
			<div class="search-icon">
				<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"
					fill="none"
					stroke="currentColor" stroke-width="2" stroke-linecap="round"
					stroke-linejoin="round"
					class="feather feather-search">
					<circle cx="11" cy="11" r="8"></circle>
					<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
				</svg>
			</div>
		</div>`);
    target.empty();
    $search_input.appendTo(target);
    let $dropdown_menu = $search_input.find(".dropdown-menu");
    let $input = $search_input.find("input");
    let dropdownItems;
    let offsetIndex = 0;
    $(document).on("keypress", (e) => {
      if ($(e.target).is("textarea, input, select")) {
        return;
      }
      if (e.key === "/") {
        e.preventDefault();
        $input.focus();
      }
    });
    $input.on(
      "input",
      frappe.utils.debounce(() => {
        if (!$input.val()) {
          clear_dropdown();
          return;
        }
        frappe.call({
          method: "frappe.search.web_search",
          args: {
            scope: search_scope || null,
            query: $input.val(),
            limit: 5
          }
        }).then((r) => {
          let results = r.message || [];
          let dropdown_html;
          if (results.length == 0) {
            dropdown_html = `<div class="dropdown-item">No results found</div>`;
          } else {
            dropdown_html = results.map((r2) => {
              return `<a class="dropdown-item" href="/${r2.path}">
						<h6>${r2.title_highlights || r2.title}</h6>
						<div style="white-space: normal;">${r2.content_highlights}</div>
					</a>`;
            }).join("");
          }
          $dropdown_menu.html(dropdown_html);
          $dropdown_menu.addClass("show");
          dropdownItems = $dropdown_menu.find(".dropdown-item");
        });
      }, 500)
    );
    $input.on("focus", () => {
      if (!$input.val()) {
        clear_dropdown();
      } else {
        $input.trigger("input");
      }
    });
    $input.keydown(function(e) {
      if (e.which == 40) {
        navigate(0);
      }
    });
    $dropdown_menu.keydown(function(e) {
      if (e.which == 38) {
        navigate(-1);
      } else if (e.which == 40) {
        navigate(1);
      } else if (e.which == 27) {
        setTimeout(() => {
          clear_dropdown();
        }, 300);
      }
    });
    $(window).click(function() {
      clear_dropdown();
    });
    $search_input.click(function(event) {
      event.stopPropagation();
    });
    var navigate = function(diff) {
      offsetIndex += diff;
      if (offsetIndex >= dropdownItems.length)
        offsetIndex = 0;
      if (offsetIndex < 0)
        offsetIndex = dropdownItems.length - 1;
      $input.off("blur");
      dropdownItems.eq(offsetIndex).focus();
    };
    function clear_dropdown() {
      offsetIndex = 0;
      $dropdown_menu.html("");
      $dropdown_menu.removeClass("show");
      dropdownItems = void 0;
    }
    $dropdown_menu.mouseover(function() {
      dropdownItems.blur();
    });
  };
  window.valid_email = function(id) {
    return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/.test(
      id.toLowerCase()
    );
  };
  window.validate_email = window.valid_email;
  window.cstr = function(s) {
    return s == null ? "" : s + "";
  };
  window.is_null = function is_null2(v) {
    if (v === null || v === void 0 || cstr(v).trim() === "")
      return true;
  };
  window.is_html = function is_html(txt) {
    if (txt.indexOf("<br>") == -1 && txt.indexOf("<p") == -1 && txt.indexOf("<img") == -1 && txt.indexOf("<div") == -1) {
      return false;
    }
    return true;
  };
  window.ask_to_login = function ask_to_login() {
    if (!frappe.is_user_logged_in()) {
      if (localStorage) {
        localStorage.setItem(
          "last_visited",
          window.location.href.replace(window.location.origin, "")
        );
      }
      window.location.href = "login";
    }
  };
  $(document).ready(function() {
    var _a, _b, _c, _d;
    window.full_name = frappe.get_cookie("full_name");
    var logged_in = frappe.is_user_logged_in();
    $("#website-login").toggleClass("hide", logged_in ? true : false);
    $("#website-post-login").toggleClass("hide", logged_in ? false : true);
    $(".logged-in").toggleClass("hide", logged_in ? false : true);
    frappe.bind_navbar_search();
    let apps = (_b = (_a = frappe.boot) == null ? void 0 : _a.apps_data) == null ? void 0 : _b.apps;
    let obj = {
      label: __("Apps"),
      route: "/apps"
    };
    if (apps == null ? void 0 : apps.length) {
      if (apps.length == 1) {
        obj = {
          label: __(apps[0].title),
          route: apps[0].route
        };
      }
      let is_desk_apps = (_d = (_c = frappe.boot) == null ? void 0 : _c.apps_data) == null ? void 0 : _d.is_desk_apps;
      !is_desk_apps && frappe.add_apps(obj);
    }
    if (frappe.get_cookie("system_user") === "yes" && logged_in) {
      frappe.add_switch_to_desk();
    }
    frappe.render_user();
    $(document).trigger("page-change");
  });
  $(document).on("page-change", function() {
    $(document).trigger("apply_permissions");
    $(".dropdown-toggle").dropdown();
    $(".dropdown-menu .dropdown-submenu .dropdown-toggle").on("click", function(e) {
      e.stopPropagation();
      $(this).parent().parent().parent().addClass("open");
    });
    $.extend(frappe, frappe.get_cookies());
    frappe.session = { user: frappe.user_id };
    frappe.datetime.refresh_when();
    frappe.trigger_ready();
    frappe.bind_filters();
    frappe.highlight_code_blocks();
    frappe.add_link_to_headings();
    frappe.make_navbar_active();
    if (window.location.hash) {
      var element = document.getElementById(window.location.hash.substring(1));
      element && element.scrollIntoView(true);
    }
  });
  frappe.ready(function() {
    frappe.show_language_picker();
    frappe.setup_videos();
    frappe.realtime.init(window.socketio_port, true);
  });

  // node_modules/engine.io-parser/build/esm/commons.js
  var PACKET_TYPES = /* @__PURE__ */ Object.create(null);
  PACKET_TYPES["open"] = "0";
  PACKET_TYPES["close"] = "1";
  PACKET_TYPES["ping"] = "2";
  PACKET_TYPES["pong"] = "3";
  PACKET_TYPES["message"] = "4";
  PACKET_TYPES["upgrade"] = "5";
  PACKET_TYPES["noop"] = "6";
  var PACKET_TYPES_REVERSE = /* @__PURE__ */ Object.create(null);
  Object.keys(PACKET_TYPES).forEach((key) => {
    PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;
  });
  var ERROR_PACKET = { type: "error", data: "parser error" };

  // node_modules/engine.io-parser/build/esm/encodePacket.browser.js
  var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]";
  var withNativeArrayBuffer = typeof ArrayBuffer === "function";
  var isView = (obj) => {
    return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;
  };
  var encodePacket = ({ type: type2, data }, supportsBinary, callback) => {
    if (withNativeBlob && data instanceof Blob) {
      if (supportsBinary) {
        return callback(data);
      } else {
        return encodeBlobAsBase64(data, callback);
      }
    } else if (withNativeArrayBuffer && (data instanceof ArrayBuffer || isView(data))) {
      if (supportsBinary) {
        return callback(data);
      } else {
        return encodeBlobAsBase64(new Blob([data]), callback);
      }
    }
    return callback(PACKET_TYPES[type2] + (data || ""));
  };
  var encodeBlobAsBase64 = (data, callback) => {
    const fileReader = new FileReader();
    fileReader.onload = function() {
      const content = fileReader.result.split(",")[1];
      callback("b" + (content || ""));
    };
    return fileReader.readAsDataURL(data);
  };
  function toArray(data) {
    if (data instanceof Uint8Array) {
      return data;
    } else if (data instanceof ArrayBuffer) {
      return new Uint8Array(data);
    } else {
      return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
    }
  }
  var TEXT_ENCODER;
  function encodePacketToBinary(packet, callback) {
    if (withNativeBlob && packet.data instanceof Blob) {
      return packet.data.arrayBuffer().then(toArray).then(callback);
    } else if (withNativeArrayBuffer && (packet.data instanceof ArrayBuffer || isView(packet.data))) {
      return callback(toArray(packet.data));
    }
    encodePacket(packet, false, (encoded) => {
      if (!TEXT_ENCODER) {
        TEXT_ENCODER = new TextEncoder();
      }
      callback(TEXT_ENCODER.encode(encoded));
    });
  }

  // node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
  for (let i2 = 0; i2 < chars.length; i2++) {
    lookup[chars.charCodeAt(i2)] = i2;
  }
  var decode = (base64) => {
    let bufferLength = base64.length * 0.75, len = base64.length, i2, p = 0, encoded1, encoded2, encoded3, encoded4;
    if (base64[base64.length - 1] === "=") {
      bufferLength--;
      if (base64[base64.length - 2] === "=") {
        bufferLength--;
      }
    }
    const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
    for (i2 = 0; i2 < len; i2 += 4) {
      encoded1 = lookup[base64.charCodeAt(i2)];
      encoded2 = lookup[base64.charCodeAt(i2 + 1)];
      encoded3 = lookup[base64.charCodeAt(i2 + 2)];
      encoded4 = lookup[base64.charCodeAt(i2 + 3)];
      bytes[p++] = encoded1 << 2 | encoded2 >> 4;
      bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
      bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
    }
    return arraybuffer;
  };

  // node_modules/engine.io-parser/build/esm/decodePacket.browser.js
  var withNativeArrayBuffer2 = typeof ArrayBuffer === "function";
  var decodePacket = (encodedPacket, binaryType) => {
    if (typeof encodedPacket !== "string") {
      return {
        type: "message",
        data: mapBinary(encodedPacket, binaryType)
      };
    }
    const type2 = encodedPacket.charAt(0);
    if (type2 === "b") {
      return {
        type: "message",
        data: decodeBase64Packet(encodedPacket.substring(1), binaryType)
      };
    }
    const packetType = PACKET_TYPES_REVERSE[type2];
    if (!packetType) {
      return ERROR_PACKET;
    }
    return encodedPacket.length > 1 ? {
      type: PACKET_TYPES_REVERSE[type2],
      data: encodedPacket.substring(1)
    } : {
      type: PACKET_TYPES_REVERSE[type2]
    };
  };
  var decodeBase64Packet = (data, binaryType) => {
    if (withNativeArrayBuffer2) {
      const decoded = decode(data);
      return mapBinary(decoded, binaryType);
    } else {
      return { base64: true, data };
    }
  };
  var mapBinary = (data, binaryType) => {
    switch (binaryType) {
      case "blob":
        if (data instanceof Blob) {
          return data;
        } else {
          return new Blob([data]);
        }
      case "arraybuffer":
      default:
        if (data instanceof ArrayBuffer) {
          return data;
        } else {
          return data.buffer;
        }
    }
  };

  // node_modules/engine.io-parser/build/esm/index.js
  var SEPARATOR = String.fromCharCode(30);
  var encodePayload = (packets, callback) => {
    const length2 = packets.length;
    const encodedPackets = new Array(length2);
    let count = 0;
    packets.forEach((packet, i2) => {
      encodePacket(packet, false, (encodedPacket) => {
        encodedPackets[i2] = encodedPacket;
        if (++count === length2) {
          callback(encodedPackets.join(SEPARATOR));
        }
      });
    });
  };
  var decodePayload = (encodedPayload, binaryType) => {
    const encodedPackets = encodedPayload.split(SEPARATOR);
    const packets = [];
    for (let i2 = 0; i2 < encodedPackets.length; i2++) {
      const decodedPacket = decodePacket(encodedPackets[i2], binaryType);
      packets.push(decodedPacket);
      if (decodedPacket.type === "error") {
        break;
      }
    }
    return packets;
  };
  function createPacketEncoderStream() {
    return new TransformStream({
      transform(packet, controller) {
        encodePacketToBinary(packet, (encodedPacket) => {
          const payloadLength = encodedPacket.length;
          let header;
          if (payloadLength < 126) {
            header = new Uint8Array(1);
            new DataView(header.buffer).setUint8(0, payloadLength);
          } else if (payloadLength < 65536) {
            header = new Uint8Array(3);
            const view = new DataView(header.buffer);
            view.setUint8(0, 126);
            view.setUint16(1, payloadLength);
          } else {
            header = new Uint8Array(9);
            const view = new DataView(header.buffer);
            view.setUint8(0, 127);
            view.setBigUint64(1, BigInt(payloadLength));
          }
          if (packet.data && typeof packet.data !== "string") {
            header[0] |= 128;
          }
          controller.enqueue(header);
          controller.enqueue(encodedPacket);
        });
      }
    });
  }
  var TEXT_DECODER;
  function totalLength(chunks) {
    return chunks.reduce((acc, chunk) => acc + chunk.length, 0);
  }
  function concatChunks(chunks, size) {
    if (chunks[0].length === size) {
      return chunks.shift();
    }
    const buffer = new Uint8Array(size);
    let j = 0;
    for (let i2 = 0; i2 < size; i2++) {
      buffer[i2] = chunks[0][j++];
      if (j === chunks[0].length) {
        chunks.shift();
        j = 0;
      }
    }
    if (chunks.length && j < chunks[0].length) {
      chunks[0] = chunks[0].slice(j);
    }
    return buffer;
  }
  function createPacketDecoderStream(maxPayload, binaryType) {
    if (!TEXT_DECODER) {
      TEXT_DECODER = new TextDecoder();
    }
    const chunks = [];
    let state = 0;
    let expectedLength = -1;
    let isBinary2 = false;
    return new TransformStream({
      transform(chunk, controller) {
        chunks.push(chunk);
        while (true) {
          if (state === 0) {
            if (totalLength(chunks) < 1) {
              break;
            }
            const header = concatChunks(chunks, 1);
            isBinary2 = (header[0] & 128) === 128;
            expectedLength = header[0] & 127;
            if (expectedLength < 126) {
              state = 3;
            } else if (expectedLength === 126) {
              state = 1;
            } else {
              state = 2;
            }
          } else if (state === 1) {
            if (totalLength(chunks) < 2) {
              break;
            }
            const headerArray = concatChunks(chunks, 2);
            expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);
            state = 3;
          } else if (state === 2) {
            if (totalLength(chunks) < 8) {
              break;
            }
            const headerArray = concatChunks(chunks, 8);
            const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);
            const n = view.getUint32(0);
            if (n > Math.pow(2, 53 - 32) - 1) {
              controller.enqueue(ERROR_PACKET);
              break;
            }
            expectedLength = n * Math.pow(2, 32) + view.getUint32(4);
            state = 3;
          } else {
            if (totalLength(chunks) < expectedLength) {
              break;
            }
            const data = concatChunks(chunks, expectedLength);
            controller.enqueue(decodePacket(isBinary2 ? data : TEXT_DECODER.decode(data), binaryType));
            state = 0;
          }
          if (expectedLength === 0 || expectedLength > maxPayload) {
            controller.enqueue(ERROR_PACKET);
            break;
          }
        }
      }
    });
  }
  var protocol = 4;

  // node_modules/@socket.io/component-emitter/index.mjs
  function Emitter(obj) {
    if (obj)
      return mixin(obj);
  }
  function mixin(obj) {
    for (var key in Emitter.prototype) {
      obj[key] = Emitter.prototype[key];
    }
    return obj;
  }
  Emitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) {
    this._callbacks = this._callbacks || {};
    (this._callbacks["$" + event] = this._callbacks["$" + event] || []).push(fn);
    return this;
  };
  Emitter.prototype.once = function(event, fn) {
    function on2() {
      this.off(event, on2);
      fn.apply(this, arguments);
    }
    on2.fn = fn;
    this.on(event, on2);
    return this;
  };
  Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) {
    this._callbacks = this._callbacks || {};
    if (0 == arguments.length) {
      this._callbacks = {};
      return this;
    }
    var callbacks = this._callbacks["$" + event];
    if (!callbacks)
      return this;
    if (1 == arguments.length) {
      delete this._callbacks["$" + event];
      return this;
    }
    var cb;
    for (var i2 = 0; i2 < callbacks.length; i2++) {
      cb = callbacks[i2];
      if (cb === fn || cb.fn === fn) {
        callbacks.splice(i2, 1);
        break;
      }
    }
    if (callbacks.length === 0) {
      delete this._callbacks["$" + event];
    }
    return this;
  };
  Emitter.prototype.emit = function(event) {
    this._callbacks = this._callbacks || {};
    var args = new Array(arguments.length - 1), callbacks = this._callbacks["$" + event];
    for (var i2 = 1; i2 < arguments.length; i2++) {
      args[i2 - 1] = arguments[i2];
    }
    if (callbacks) {
      callbacks = callbacks.slice(0);
      for (var i2 = 0, len = callbacks.length; i2 < len; ++i2) {
        callbacks[i2].apply(this, args);
      }
    }
    return this;
  };
  Emitter.prototype.emitReserved = Emitter.prototype.emit;
  Emitter.prototype.listeners = function(event) {
    this._callbacks = this._callbacks || {};
    return this._callbacks["$" + event] || [];
  };
  Emitter.prototype.hasListeners = function(event) {
    return !!this.listeners(event).length;
  };

  // node_modules/engine.io-client/build/esm/globalThis.browser.js
  var globalThisShim = (() => {
    if (typeof self !== "undefined") {
      return self;
    } else if (typeof window !== "undefined") {
      return window;
    } else {
      return Function("return this")();
    }
  })();

  // node_modules/engine.io-client/build/esm/util.js
  function pick(obj, ...attr) {
    return attr.reduce((acc, k) => {
      if (obj.hasOwnProperty(k)) {
        acc[k] = obj[k];
      }
      return acc;
    }, {});
  }
  var NATIVE_SET_TIMEOUT = globalThisShim.setTimeout;
  var NATIVE_CLEAR_TIMEOUT = globalThisShim.clearTimeout;
  function installTimerFunctions(obj, opts) {
    if (opts.useNativeTimers) {
      obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThisShim);
      obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThisShim);
    } else {
      obj.setTimeoutFn = globalThisShim.setTimeout.bind(globalThisShim);
      obj.clearTimeoutFn = globalThisShim.clearTimeout.bind(globalThisShim);
    }
  }
  var BASE64_OVERHEAD = 1.33;
  function byteLength(obj) {
    if (typeof obj === "string") {
      return utf8Length(obj);
    }
    return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);
  }
  function utf8Length(str) {
    let c = 0, length2 = 0;
    for (let i2 = 0, l = str.length; i2 < l; i2++) {
      c = str.charCodeAt(i2);
      if (c < 128) {
        length2 += 1;
      } else if (c < 2048) {
        length2 += 2;
      } else if (c < 55296 || c >= 57344) {
        length2 += 3;
      } else {
        i2++;
        length2 += 4;
      }
    }
    return length2;
  }

  // node_modules/engine.io-client/build/esm/contrib/parseqs.js
  function encode(obj) {
    let str = "";
    for (let i2 in obj) {
      if (obj.hasOwnProperty(i2)) {
        if (str.length)
          str += "&";
        str += encodeURIComponent(i2) + "=" + encodeURIComponent(obj[i2]);
      }
    }
    return str;
  }
  function decode2(qs) {
    let qry = {};
    let pairs = qs.split("&");
    for (let i2 = 0, l = pairs.length; i2 < l; i2++) {
      let pair = pairs[i2].split("=");
      qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
    }
    return qry;
  }

  // node_modules/engine.io-client/build/esm/transport.js
  var TransportError = class extends Error {
    constructor(reason, description, context) {
      super(reason);
      this.description = description;
      this.context = context;
      this.type = "TransportError";
    }
  };
  var Transport = class extends Emitter {
    constructor(opts) {
      super();
      this.writable = false;
      installTimerFunctions(this, opts);
      this.opts = opts;
      this.query = opts.query;
      this.socket = opts.socket;
    }
    onError(reason, description, context) {
      super.emitReserved("error", new TransportError(reason, description, context));
      return this;
    }
    open() {
      this.readyState = "opening";
      this.doOpen();
      return this;
    }
    close() {
      if (this.readyState === "opening" || this.readyState === "open") {
        this.doClose();
        this.onClose();
      }
      return this;
    }
    send(packets) {
      if (this.readyState === "open") {
        this.write(packets);
      } else {
      }
    }
    onOpen() {
      this.readyState = "open";
      this.writable = true;
      super.emitReserved("open");
    }
    onData(data) {
      const packet = decodePacket(data, this.socket.binaryType);
      this.onPacket(packet);
    }
    onPacket(packet) {
      super.emitReserved("packet", packet);
    }
    onClose(details) {
      this.readyState = "closed";
      super.emitReserved("close", details);
    }
    pause(onPause) {
    }
    createUri(schema, query = {}) {
      return schema + "://" + this._hostname() + this._port() + this.opts.path + this._query(query);
    }
    _hostname() {
      const hostname = this.opts.hostname;
      return hostname.indexOf(":") === -1 ? hostname : "[" + hostname + "]";
    }
    _port() {
      if (this.opts.port && (this.opts.secure && Number(this.opts.port !== 443) || !this.opts.secure && Number(this.opts.port) !== 80)) {
        return ":" + this.opts.port;
      } else {
        return "";
      }
    }
    _query(query) {
      const encodedQuery = encode(query);
      return encodedQuery.length ? "?" + encodedQuery : "";
    }
  };

  // node_modules/engine.io-client/build/esm/contrib/yeast.js
  var alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split("");
  var length = 64;
  var map = {};
  var seed = 0;
  var i = 0;
  var prev;
  function encode2(num) {
    let encoded = "";
    do {
      encoded = alphabet[num % length] + encoded;
      num = Math.floor(num / length);
    } while (num > 0);
    return encoded;
  }
  function yeast() {
    const now = encode2(+new Date());
    if (now !== prev)
      return seed = 0, prev = now;
    return now + "." + encode2(seed++);
  }
  for (; i < length; i++)
    map[alphabet[i]] = i;

  // node_modules/engine.io-client/build/esm/contrib/has-cors.js
  var value = false;
  try {
    value = typeof XMLHttpRequest !== "undefined" && "withCredentials" in new XMLHttpRequest();
  } catch (err) {
  }
  var hasCORS = value;

  // node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js
  function XHR(opts) {
    const xdomain = opts.xdomain;
    try {
      if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {
        return new XMLHttpRequest();
      }
    } catch (e) {
    }
    if (!xdomain) {
      try {
        return new globalThisShim[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP");
      } catch (e) {
      }
    }
  }
  function createCookieJar() {
  }

  // node_modules/engine.io-client/build/esm/transports/polling.js
  function empty() {
  }
  var hasXHR2 = function() {
    const xhr = new XHR({
      xdomain: false
    });
    return null != xhr.responseType;
  }();
  var Polling = class extends Transport {
    constructor(opts) {
      super(opts);
      this.polling = false;
      if (typeof location !== "undefined") {
        const isSSL = "https:" === location.protocol;
        let port = location.port;
        if (!port) {
          port = isSSL ? "443" : "80";
        }
        this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port;
      }
      const forceBase64 = opts && opts.forceBase64;
      this.supportsBinary = hasXHR2 && !forceBase64;
      if (this.opts.withCredentials) {
        this.cookieJar = createCookieJar();
      }
    }
    get name() {
      return "polling";
    }
    doOpen() {
      this.poll();
    }
    pause(onPause) {
      this.readyState = "pausing";
      const pause = () => {
        this.readyState = "paused";
        onPause();
      };
      if (this.polling || !this.writable) {
        let total = 0;
        if (this.polling) {
          total++;
          this.once("pollComplete", function() {
            --total || pause();
          });
        }
        if (!this.writable) {
          total++;
          this.once("drain", function() {
            --total || pause();
          });
        }
      } else {
        pause();
      }
    }
    poll() {
      this.polling = true;
      this.doPoll();
      this.emitReserved("poll");
    }
    onData(data) {
      const callback = (packet) => {
        if ("opening" === this.readyState && packet.type === "open") {
          this.onOpen();
        }
        if ("close" === packet.type) {
          this.onClose({ description: "transport closed by the server" });
          return false;
        }
        this.onPacket(packet);
      };
      decodePayload(data, this.socket.binaryType).forEach(callback);
      if ("closed" !== this.readyState) {
        this.polling = false;
        this.emitReserved("pollComplete");
        if ("open" === this.readyState) {
          this.poll();
        } else {
        }
      }
    }
    doClose() {
      const close = () => {
        this.write([{ type: "close" }]);
      };
      if ("open" === this.readyState) {
        close();
      } else {
        this.once("open", close);
      }
    }
    write(packets) {
      this.writable = false;
      encodePayload(packets, (data) => {
        this.doWrite(data, () => {
          this.writable = true;
          this.emitReserved("drain");
        });
      });
    }
    uri() {
      const schema = this.opts.secure ? "https" : "http";
      const query = this.query || {};
      if (false !== this.opts.timestampRequests) {
        query[this.opts.timestampParam] = yeast();
      }
      if (!this.supportsBinary && !query.sid) {
        query.b64 = 1;
      }
      return this.createUri(schema, query);
    }
    request(opts = {}) {
      Object.assign(opts, { xd: this.xd, cookieJar: this.cookieJar }, this.opts);
      return new Request(this.uri(), opts);
    }
    doWrite(data, fn) {
      const req = this.request({
        method: "POST",
        data
      });
      req.on("success", fn);
      req.on("error", (xhrStatus, context) => {
        this.onError("xhr post error", xhrStatus, context);
      });
    }
    doPoll() {
      const req = this.request();
      req.on("data", this.onData.bind(this));
      req.on("error", (xhrStatus, context) => {
        this.onError("xhr poll error", xhrStatus, context);
      });
      this.pollXhr = req;
    }
  };
  var Request = class extends Emitter {
    constructor(uri, opts) {
      super();
      installTimerFunctions(this, opts);
      this.opts = opts;
      this.method = opts.method || "GET";
      this.uri = uri;
      this.data = void 0 !== opts.data ? opts.data : null;
      this.create();
    }
    create() {
      var _a;
      const opts = pick(this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref");
      opts.xdomain = !!this.opts.xd;
      const xhr = this.xhr = new XHR(opts);
      try {
        xhr.open(this.method, this.uri, true);
        try {
          if (this.opts.extraHeaders) {
            xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);
            for (let i2 in this.opts.extraHeaders) {
              if (this.opts.extraHeaders.hasOwnProperty(i2)) {
                xhr.setRequestHeader(i2, this.opts.extraHeaders[i2]);
              }
            }
          }
        } catch (e) {
        }
        if ("POST" === this.method) {
          try {
            xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8");
          } catch (e) {
          }
        }
        try {
          xhr.setRequestHeader("Accept", "*/*");
        } catch (e) {
        }
        (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);
        if ("withCredentials" in xhr) {
          xhr.withCredentials = this.opts.withCredentials;
        }
        if (this.opts.requestTimeout) {
          xhr.timeout = this.opts.requestTimeout;
        }
        xhr.onreadystatechange = () => {
          var _a2;
          if (xhr.readyState === 3) {
            (_a2 = this.opts.cookieJar) === null || _a2 === void 0 ? void 0 : _a2.parseCookies(xhr);
          }
          if (4 !== xhr.readyState)
            return;
          if (200 === xhr.status || 1223 === xhr.status) {
            this.onLoad();
          } else {
            this.setTimeoutFn(() => {
              this.onError(typeof xhr.status === "number" ? xhr.status : 0);
            }, 0);
          }
        };
        xhr.send(this.data);
      } catch (e) {
        this.setTimeoutFn(() => {
          this.onError(e);
        }, 0);
        return;
      }
      if (typeof document !== "undefined") {
        this.index = Request.requestsCount++;
        Request.requests[this.index] = this;
      }
    }
    onError(err) {
      this.emitReserved("error", err, this.xhr);
      this.cleanup(true);
    }
    cleanup(fromError) {
      if ("undefined" === typeof this.xhr || null === this.xhr) {
        return;
      }
      this.xhr.onreadystatechange = empty;
      if (fromError) {
        try {
          this.xhr.abort();
        } catch (e) {
        }
      }
      if (typeof document !== "undefined") {
        delete Request.requests[this.index];
      }
      this.xhr = null;
    }
    onLoad() {
      const data = this.xhr.responseText;
      if (data !== null) {
        this.emitReserved("data", data);
        this.emitReserved("success");
        this.cleanup();
      }
    }
    abort() {
      this.cleanup();
    }
  };
  Request.requestsCount = 0;
  Request.requests = {};
  if (typeof document !== "undefined") {
    if (typeof attachEvent === "function") {
      attachEvent("onunload", unloadHandler);
    } else if (typeof addEventListener === "function") {
      const terminationEvent = "onpagehide" in globalThisShim ? "pagehide" : "unload";
      addEventListener(terminationEvent, unloadHandler, false);
    }
  }
  function unloadHandler() {
    for (let i2 in Request.requests) {
      if (Request.requests.hasOwnProperty(i2)) {
        Request.requests[i2].abort();
      }
    }
  }

  // node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js
  var nextTick = (() => {
    const isPromiseAvailable = typeof Promise === "function" && typeof Promise.resolve === "function";
    if (isPromiseAvailable) {
      return (cb) => Promise.resolve().then(cb);
    } else {
      return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);
    }
  })();
  var WebSocket = globalThisShim.WebSocket || globalThisShim.MozWebSocket;
  var usingBrowserWebSocket = true;
  var defaultBinaryType = "arraybuffer";

  // node_modules/engine.io-client/build/esm/transports/websocket.js
  var isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative";
  var WS = class extends Transport {
    constructor(opts) {
      super(opts);
      this.supportsBinary = !opts.forceBase64;
    }
    get name() {
      return "websocket";
    }
    doOpen() {
      if (!this.check()) {
        return;
      }
      const uri = this.uri();
      const protocols = this.opts.protocols;
      const opts = isReactNative ? {} : pick(this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity");
      if (this.opts.extraHeaders) {
        opts.headers = this.opts.extraHeaders;
      }
      try {
        this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket(uri, protocols) : new WebSocket(uri) : new WebSocket(uri, protocols, opts);
      } catch (err) {
        return this.emitReserved("error", err);
      }
      this.ws.binaryType = this.socket.binaryType;
      this.addEventListeners();
    }
    addEventListeners() {
      this.ws.onopen = () => {
        if (this.opts.autoUnref) {
          this.ws._socket.unref();
        }
        this.onOpen();
      };
      this.ws.onclose = (closeEvent) => this.onClose({
        description: "websocket connection closed",
        context: closeEvent
      });
      this.ws.onmessage = (ev) => this.onData(ev.data);
      this.ws.onerror = (e) => this.onError("websocket error", e);
    }
    write(packets) {
      this.writable = false;
      for (let i2 = 0; i2 < packets.length; i2++) {
        const packet = packets[i2];
        const lastPacket = i2 === packets.length - 1;
        encodePacket(packet, this.supportsBinary, (data) => {
          const opts = {};
          if (!usingBrowserWebSocket) {
            if (packet.options) {
              opts.compress = packet.options.compress;
            }
            if (this.opts.perMessageDeflate) {
              const len = "string" === typeof data ? Buffer.byteLength(data) : data.length;
              if (len < this.opts.perMessageDeflate.threshold) {
                opts.compress = false;
              }
            }
          }
          try {
            if (usingBrowserWebSocket) {
              this.ws.send(data);
            } else {
              this.ws.send(data, opts);
            }
          } catch (e) {
          }
          if (lastPacket) {
            nextTick(() => {
              this.writable = true;
              this.emitReserved("drain");
            }, this.setTimeoutFn);
          }
        });
      }
    }
    doClose() {
      if (typeof this.ws !== "undefined") {
        this.ws.close();
        this.ws = null;
      }
    }
    uri() {
      const schema = this.opts.secure ? "wss" : "ws";
      const query = this.query || {};
      if (this.opts.timestampRequests) {
        query[this.opts.timestampParam] = yeast();
      }
      if (!this.supportsBinary) {
        query.b64 = 1;
      }
      return this.createUri(schema, query);
    }
    check() {
      return !!WebSocket;
    }
  };

  // node_modules/engine.io-client/build/esm/transports/webtransport.js
  var WT = class extends Transport {
    get name() {
      return "webtransport";
    }
    doOpen() {
      if (typeof WebTransport !== "function") {
        return;
      }
      this.transport = new WebTransport(this.createUri("https"), this.opts.transportOptions[this.name]);
      this.transport.closed.then(() => {
        this.onClose();
      }).catch((err) => {
        this.onError("webtransport error", err);
      });
      this.transport.ready.then(() => {
        this.transport.createBidirectionalStream().then((stream) => {
          const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);
          const reader = stream.readable.pipeThrough(decoderStream).getReader();
          const encoderStream = createPacketEncoderStream();
          encoderStream.readable.pipeTo(stream.writable);
          this.writer = encoderStream.writable.getWriter();
          const read = () => {
            reader.read().then(({ done, value: value2 }) => {
              if (done) {
                return;
              }
              this.onPacket(value2);
              read();
            }).catch((err) => {
            });
          };
          read();
          const packet = { type: "open" };
          if (this.query.sid) {
            packet.data = `{"sid":"${this.query.sid}"}`;
          }
          this.writer.write(packet).then(() => this.onOpen());
        });
      });
    }
    write(packets) {
      this.writable = false;
      for (let i2 = 0; i2 < packets.length; i2++) {
        const packet = packets[i2];
        const lastPacket = i2 === packets.length - 1;
        this.writer.write(packet).then(() => {
          if (lastPacket) {
            nextTick(() => {
              this.writable = true;
              this.emitReserved("drain");
            }, this.setTimeoutFn);
          }
        });
      }
    }
    doClose() {
      var _a;
      (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close();
    }
  };

  // node_modules/engine.io-client/build/esm/transports/index.js
  var transports = {
    websocket: WS,
    webtransport: WT,
    polling: Polling
  };

  // node_modules/engine.io-client/build/esm/contrib/parseuri.js
  var re = /^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
  var parts = [
    "source",
    "protocol",
    "authority",
    "userInfo",
    "user",
    "password",
    "host",
    "port",
    "relative",
    "path",
    "directory",
    "file",
    "query",
    "anchor"
  ];
  function parse(str) {
    if (str.length > 2e3) {
      throw "URI too long";
    }
    const src = str, b = str.indexOf("["), e = str.indexOf("]");
    if (b != -1 && e != -1) {
      str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ";") + str.substring(e, str.length);
    }
    let m = re.exec(str || ""), uri = {}, i2 = 14;
    while (i2--) {
      uri[parts[i2]] = m[i2] || "";
    }
    if (b != -1 && e != -1) {
      uri.source = src;
      uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ":");
      uri.authority = uri.authority.replace("[", "").replace("]", "").replace(/;/g, ":");
      uri.ipv6uri = true;
    }
    uri.pathNames = pathNames(uri, uri["path"]);
    uri.queryKey = queryKey(uri, uri["query"]);
    return uri;
  }
  function pathNames(obj, path) {
    const regx = /\/{2,9}/g, names = path.replace(regx, "/").split("/");
    if (path.slice(0, 1) == "/" || path.length === 0) {
      names.splice(0, 1);
    }
    if (path.slice(-1) == "/") {
      names.splice(names.length - 1, 1);
    }
    return names;
  }
  function queryKey(uri, query) {
    const data = {};
    query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function($0, $1, $2) {
      if ($1) {
        data[$1] = $2;
      }
    });
    return data;
  }

  // node_modules/engine.io-client/build/esm/socket.js
  var Socket = class extends Emitter {
    constructor(uri, opts = {}) {
      super();
      this.binaryType = defaultBinaryType;
      this.writeBuffer = [];
      if (uri && "object" === typeof uri) {
        opts = uri;
        uri = null;
      }
      if (uri) {
        uri = parse(uri);
        opts.hostname = uri.host;
        opts.secure = uri.protocol === "https" || uri.protocol === "wss";
        opts.port = uri.port;
        if (uri.query)
          opts.query = uri.query;
      } else if (opts.host) {
        opts.hostname = parse(opts.host).host;
      }
      installTimerFunctions(this, opts);
      this.secure = null != opts.secure ? opts.secure : typeof location !== "undefined" && "https:" === location.protocol;
      if (opts.hostname && !opts.port) {
        opts.port = this.secure ? "443" : "80";
      }
      this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost");
      this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : this.secure ? "443" : "80");
      this.transports = opts.transports || [
        "polling",
        "websocket",
        "webtransport"
      ];
      this.writeBuffer = [];
      this.prevBufferLen = 0;
      this.opts = Object.assign({
        path: "/engine.io",
        agent: false,
        withCredentials: false,
        upgrade: true,
        timestampParam: "t",
        rememberUpgrade: false,
        addTrailingSlash: true,
        rejectUnauthorized: true,
        perMessageDeflate: {
          threshold: 1024
        },
        transportOptions: {},
        closeOnBeforeunload: false
      }, opts);
      this.opts.path = this.opts.path.replace(/\/$/, "") + (this.opts.addTrailingSlash ? "/" : "");
      if (typeof this.opts.query === "string") {
        this.opts.query = decode2(this.opts.query);
      }
      this.id = null;
      this.upgrades = null;
      this.pingInterval = null;
      this.pingTimeout = null;
      this.pingTimeoutTimer = null;
      if (typeof addEventListener === "function") {
        if (this.opts.closeOnBeforeunload) {
          this.beforeunloadEventListener = () => {
            if (this.transport) {
              this.transport.removeAllListeners();
              this.transport.close();
            }
          };
          addEventListener("beforeunload", this.beforeunloadEventListener, false);
        }
        if (this.hostname !== "localhost") {
          this.offlineEventListener = () => {
            this.onClose("transport close", {
              description: "network connection lost"
            });
          };
          addEventListener("offline", this.offlineEventListener, false);
        }
      }
      this.open();
    }
    createTransport(name2) {
      const query = Object.assign({}, this.opts.query);
      query.EIO = protocol;
      query.transport = name2;
      if (this.id)
        query.sid = this.id;
      const opts = Object.assign({}, this.opts, {
        query,
        socket: this,
        hostname: this.hostname,
        secure: this.secure,
        port: this.port
      }, this.opts.transportOptions[name2]);
      return new transports[name2](opts);
    }
    open() {
      let transport;
      if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1) {
        transport = "websocket";
      } else if (0 === this.transports.length) {
        this.setTimeoutFn(() => {
          this.emitReserved("error", "No transports available");
        }, 0);
        return;
      } else {
        transport = this.transports[0];
      }
      this.readyState = "opening";
      try {
        transport = this.createTransport(transport);
      } catch (e) {
        this.transports.shift();
        this.open();
        return;
      }
      transport.open();
      this.setTransport(transport);
    }
    setTransport(transport) {
      if (this.transport) {
        this.transport.removeAllListeners();
      }
      this.transport = transport;
      transport.on("drain", this.onDrain.bind(this)).on("packet", this.onPacket.bind(this)).on("error", this.onError.bind(this)).on("close", (reason) => this.onClose("transport close", reason));
    }
    probe(name2) {
      let transport = this.createTransport(name2);
      let failed = false;
      Socket.priorWebsocketSuccess = false;
      const onTransportOpen = () => {
        if (failed)
          return;
        transport.send([{ type: "ping", data: "probe" }]);
        transport.once("packet", (msg) => {
          if (failed)
            return;
          if ("pong" === msg.type && "probe" === msg.data) {
            this.upgrading = true;
            this.emitReserved("upgrading", transport);
            if (!transport)
              return;
            Socket.priorWebsocketSuccess = "websocket" === transport.name;
            this.transport.pause(() => {
              if (failed)
                return;
              if ("closed" === this.readyState)
                return;
              cleanup();
              this.setTransport(transport);
              transport.send([{ type: "upgrade" }]);
              this.emitReserved("upgrade", transport);
              transport = null;
              this.upgrading = false;
              this.flush();
            });
          } else {
            const err = new Error("probe error");
            err.transport = transport.name;
            this.emitReserved("upgradeError", err);
          }
        });
      };
      function freezeTransport() {
        if (failed)
          return;
        failed = true;
        cleanup();
        transport.close();
        transport = null;
      }
      const onerror = (err) => {
        const error = new Error("probe error: " + err);
        error.transport = transport.name;
        freezeTransport();
        this.emitReserved("upgradeError", error);
      };
      function onTransportClose() {
        onerror("transport closed");
      }
      function onclose() {
        onerror("socket closed");
      }
      function onupgrade(to) {
        if (transport && to.name !== transport.name) {
          freezeTransport();
        }
      }
      const cleanup = () => {
        transport.removeListener("open", onTransportOpen);
        transport.removeListener("error", onerror);
        transport.removeListener("close", onTransportClose);
        this.off("close", onclose);
        this.off("upgrading", onupgrade);
      };
      transport.once("open", onTransportOpen);
      transport.once("error", onerror);
      transport.once("close", onTransportClose);
      this.once("close", onclose);
      this.once("upgrading", onupgrade);
      if (this.upgrades.indexOf("webtransport") !== -1 && name2 !== "webtransport") {
        this.setTimeoutFn(() => {
          if (!failed) {
            transport.open();
          }
        }, 200);
      } else {
        transport.open();
      }
    }
    onOpen() {
      this.readyState = "open";
      Socket.priorWebsocketSuccess = "websocket" === this.transport.name;
      this.emitReserved("open");
      this.flush();
      if ("open" === this.readyState && this.opts.upgrade) {
        let i2 = 0;
        const l = this.upgrades.length;
        for (; i2 < l; i2++) {
          this.probe(this.upgrades[i2]);
        }
      }
    }
    onPacket(packet) {
      if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
        this.emitReserved("packet", packet);
        this.emitReserved("heartbeat");
        this.resetPingTimeout();
        switch (packet.type) {
          case "open":
            this.onHandshake(JSON.parse(packet.data));
            break;
          case "ping":
            this.sendPacket("pong");
            this.emitReserved("ping");
            this.emitReserved("pong");
            break;
          case "error":
            const err = new Error("server error");
            err.code = packet.data;
            this.onError(err);
            break;
          case "message":
            this.emitReserved("data", packet.data);
            this.emitReserved("message", packet.data);
            break;
        }
      } else {
      }
    }
    onHandshake(data) {
      this.emitReserved("handshake", data);
      this.id = data.sid;
      this.transport.query.sid = data.sid;
      this.upgrades = this.filterUpgrades(data.upgrades);
      this.pingInterval = data.pingInterval;
      this.pingTimeout = data.pingTimeout;
      this.maxPayload = data.maxPayload;
      this.onOpen();
      if ("closed" === this.readyState)
        return;
      this.resetPingTimeout();
    }
    resetPingTimeout() {
      this.clearTimeoutFn(this.pingTimeoutTimer);
      this.pingTimeoutTimer = this.setTimeoutFn(() => {
        this.onClose("ping timeout");
      }, this.pingInterval + this.pingTimeout);
      if (this.opts.autoUnref) {
        this.pingTimeoutTimer.unref();
      }
    }
    onDrain() {
      this.writeBuffer.splice(0, this.prevBufferLen);
      this.prevBufferLen = 0;
      if (0 === this.writeBuffer.length) {
        this.emitReserved("drain");
      } else {
        this.flush();
      }
    }
    flush() {
      if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {
        const packets = this.getWritablePackets();
        this.transport.send(packets);
        this.prevBufferLen = packets.length;
        this.emitReserved("flush");
      }
    }
    getWritablePackets() {
      const shouldCheckPayloadSize = this.maxPayload && this.transport.name === "polling" && this.writeBuffer.length > 1;
      if (!shouldCheckPayloadSize) {
        return this.writeBuffer;
      }
      let payloadSize = 1;
      for (let i2 = 0; i2 < this.writeBuffer.length; i2++) {
        const data = this.writeBuffer[i2].data;
        if (data) {
          payloadSize += byteLength(data);
        }
        if (i2 > 0 && payloadSize > this.maxPayload) {
          return this.writeBuffer.slice(0, i2);
        }
        payloadSize += 2;
      }
      return this.writeBuffer;
    }
    write(msg, options, fn) {
      this.sendPacket("message", msg, options, fn);
      return this;
    }
    send(msg, options, fn) {
      this.sendPacket("message", msg, options, fn);
      return this;
    }
    sendPacket(type2, data, options, fn) {
      if ("function" === typeof data) {
        fn = data;
        data = void 0;
      }
      if ("function" === typeof options) {
        fn = options;
        options = null;
      }
      if ("closing" === this.readyState || "closed" === this.readyState) {
        return;
      }
      options = options || {};
      options.compress = false !== options.compress;
      const packet = {
        type: type2,
        data,
        options
      };
      this.emitReserved("packetCreate", packet);
      this.writeBuffer.push(packet);
      if (fn)
        this.once("flush", fn);
      this.flush();
    }
    close() {
      const close = () => {
        this.onClose("forced close");
        this.transport.close();
      };
      const cleanupAndClose = () => {
        this.off("upgrade", cleanupAndClose);
        this.off("upgradeError", cleanupAndClose);
        close();
      };
      const waitForUpgrade = () => {
        this.once("upgrade", cleanupAndClose);
        this.once("upgradeError", cleanupAndClose);
      };
      if ("opening" === this.readyState || "open" === this.readyState) {
        this.readyState = "closing";
        if (this.writeBuffer.length) {
          this.once("drain", () => {
            if (this.upgrading) {
              waitForUpgrade();
            } else {
              close();
            }
          });
        } else if (this.upgrading) {
          waitForUpgrade();
        } else {
          close();
        }
      }
      return this;
    }
    onError(err) {
      Socket.priorWebsocketSuccess = false;
      this.emitReserved("error", err);
      this.onClose("transport error", err);
    }
    onClose(reason, description) {
      if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
        this.clearTimeoutFn(this.pingTimeoutTimer);
        this.transport.removeAllListeners("close");
        this.transport.close();
        this.transport.removeAllListeners();
        if (typeof removeEventListener === "function") {
          removeEventListener("beforeunload", this.beforeunloadEventListener, false);
          removeEventListener("offline", this.offlineEventListener, false);
        }
        this.readyState = "closed";
        this.id = null;
        this.emitReserved("close", reason, description);
        this.writeBuffer = [];
        this.prevBufferLen = 0;
      }
    }
    filterUpgrades(upgrades) {
      const filteredUpgrades = [];
      let i2 = 0;
      const j = upgrades.length;
      for (; i2 < j; i2++) {
        if (~this.transports.indexOf(upgrades[i2]))
          filteredUpgrades.push(upgrades[i2]);
      }
      return filteredUpgrades;
    }
  };
  Socket.protocol = protocol;

  // node_modules/engine.io-client/build/esm/index.js
  var protocol2 = Socket.protocol;

  // node_modules/socket.io-client/build/esm/url.js
  function url(uri, path = "", loc) {
    let obj = uri;
    loc = loc || typeof location !== "undefined" && location;
    if (null == uri)
      uri = loc.protocol + "//" + loc.host;
    if (typeof uri === "string") {
      if ("/" === uri.charAt(0)) {
        if ("/" === uri.charAt(1)) {
          uri = loc.protocol + uri;
        } else {
          uri = loc.host + uri;
        }
      }
      if (!/^(https?|wss?):\/\//.test(uri)) {
        if ("undefined" !== typeof loc) {
          uri = loc.protocol + "//" + uri;
        } else {
          uri = "https://" + uri;
        }
      }
      obj = parse(uri);
    }
    if (!obj.port) {
      if (/^(http|ws)$/.test(obj.protocol)) {
        obj.port = "80";
      } else if (/^(http|ws)s$/.test(obj.protocol)) {
        obj.port = "443";
      }
    }
    obj.path = obj.path || "/";
    const ipv6 = obj.host.indexOf(":") !== -1;
    const host = ipv6 ? "[" + obj.host + "]" : obj.host;
    obj.id = obj.protocol + "://" + host + ":" + obj.port + path;
    obj.href = obj.protocol + "://" + host + (loc && loc.port === obj.port ? "" : ":" + obj.port);
    return obj;
  }

  // node_modules/socket.io-parser/build/esm/index.js
  var esm_exports = {};
  __export(esm_exports, {
    Decoder: () => Decoder,
    Encoder: () => Encoder,
    PacketType: () => PacketType,
    protocol: () => protocol3
  });

  // node_modules/socket.io-parser/build/esm/is-binary.js
  var withNativeArrayBuffer3 = typeof ArrayBuffer === "function";
  var isView2 = (obj) => {
    return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;
  };
  var toString = Object.prototype.toString;
  var withNativeBlob2 = typeof Blob === "function" || typeof Blob !== "undefined" && toString.call(Blob) === "[object BlobConstructor]";
  var withNativeFile = typeof File === "function" || typeof File !== "undefined" && toString.call(File) === "[object FileConstructor]";
  function isBinary(obj) {
    return withNativeArrayBuffer3 && (obj instanceof ArrayBuffer || isView2(obj)) || withNativeBlob2 && obj instanceof Blob || withNativeFile && obj instanceof File;
  }
  function hasBinary(obj, toJSON) {
    if (!obj || typeof obj !== "object") {
      return false;
    }
    if (Array.isArray(obj)) {
      for (let i2 = 0, l = obj.length; i2 < l; i2++) {
        if (hasBinary(obj[i2])) {
          return true;
        }
      }
      return false;
    }
    if (isBinary(obj)) {
      return true;
    }
    if (obj.toJSON && typeof obj.toJSON === "function" && arguments.length === 1) {
      return hasBinary(obj.toJSON(), true);
    }
    for (const key in obj) {
      if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {
        return true;
      }
    }
    return false;
  }

  // node_modules/socket.io-parser/build/esm/binary.js
  function deconstructPacket(packet) {
    const buffers = [];
    const packetData = packet.data;
    const pack = packet;
    pack.data = _deconstructPacket(packetData, buffers);
    pack.attachments = buffers.length;
    return { packet: pack, buffers };
  }
  function _deconstructPacket(data, buffers) {
    if (!data)
      return data;
    if (isBinary(data)) {
      const placeholder = { _placeholder: true, num: buffers.length };
      buffers.push(data);
      return placeholder;
    } else if (Array.isArray(data)) {
      const newData = new Array(data.length);
      for (let i2 = 0; i2 < data.length; i2++) {
        newData[i2] = _deconstructPacket(data[i2], buffers);
      }
      return newData;
    } else if (typeof data === "object" && !(data instanceof Date)) {
      const newData = {};
      for (const key in data) {
        if (Object.prototype.hasOwnProperty.call(data, key)) {
          newData[key] = _deconstructPacket(data[key], buffers);
        }
      }
      return newData;
    }
    return data;
  }
  function reconstructPacket(packet, buffers) {
    packet.data = _reconstructPacket(packet.data, buffers);
    delete packet.attachments;
    return packet;
  }
  function _reconstructPacket(data, buffers) {
    if (!data)
      return data;
    if (data && data._placeholder === true) {
      const isIndexValid = typeof data.num === "number" && data.num >= 0 && data.num < buffers.length;
      if (isIndexValid) {
        return buffers[data.num];
      } else {
        throw new Error("illegal attachments");
      }
    } else if (Array.isArray(data)) {
      for (let i2 = 0; i2 < data.length; i2++) {
        data[i2] = _reconstructPacket(data[i2], buffers);
      }
    } else if (typeof data === "object") {
      for (const key in data) {
        if (Object.prototype.hasOwnProperty.call(data, key)) {
          data[key] = _reconstructPacket(data[key], buffers);
        }
      }
    }
    return data;
  }

  // node_modules/socket.io-parser/build/esm/index.js
  var RESERVED_EVENTS = [
    "connect",
    "connect_error",
    "disconnect",
    "disconnecting",
    "newListener",
    "removeListener"
  ];
  var protocol3 = 5;
  var PacketType;
  (function(PacketType2) {
    PacketType2[PacketType2["CONNECT"] = 0] = "CONNECT";
    PacketType2[PacketType2["DISCONNECT"] = 1] = "DISCONNECT";
    PacketType2[PacketType2["EVENT"] = 2] = "EVENT";
    PacketType2[PacketType2["ACK"] = 3] = "ACK";
    PacketType2[PacketType2["CONNECT_ERROR"] = 4] = "CONNECT_ERROR";
    PacketType2[PacketType2["BINARY_EVENT"] = 5] = "BINARY_EVENT";
    PacketType2[PacketType2["BINARY_ACK"] = 6] = "BINARY_ACK";
  })(PacketType || (PacketType = {}));
  var Encoder = class {
    constructor(replacer) {
      this.replacer = replacer;
    }
    encode(obj) {
      if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {
        if (hasBinary(obj)) {
          return this.encodeAsBinary({
            type: obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK,
            nsp: obj.nsp,
            data: obj.data,
            id: obj.id
          });
        }
      }
      return [this.encodeAsString(obj)];
    }
    encodeAsString(obj) {
      let str = "" + obj.type;
      if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {
        str += obj.attachments + "-";
      }
      if (obj.nsp && "/" !== obj.nsp) {
        str += obj.nsp + ",";
      }
      if (null != obj.id) {
        str += obj.id;
      }
      if (null != obj.data) {
        str += JSON.stringify(obj.data, this.replacer);
      }
      return str;
    }
    encodeAsBinary(obj) {
      const deconstruction = deconstructPacket(obj);
      const pack = this.encodeAsString(deconstruction.packet);
      const buffers = deconstruction.buffers;
      buffers.unshift(pack);
      return buffers;
    }
  };
  function isObject(value2) {
    return Object.prototype.toString.call(value2) === "[object Object]";
  }
  var Decoder = class extends Emitter {
    constructor(reviver) {
      super();
      this.reviver = reviver;
    }
    add(obj) {
      let packet;
      if (typeof obj === "string") {
        if (this.reconstructor) {
          throw new Error("got plaintext data when reconstructing a packet");
        }
        packet = this.decodeString(obj);
        const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;
        if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {
          packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;
          this.reconstructor = new BinaryReconstructor(packet);
          if (packet.attachments === 0) {
            super.emitReserved("decoded", packet);
          }
        } else {
          super.emitReserved("decoded", packet);
        }
      } else if (isBinary(obj) || obj.base64) {
        if (!this.reconstructor) {
          throw new Error("got binary data when not reconstructing a packet");
        } else {
          packet = this.reconstructor.takeBinaryData(obj);
          if (packet) {
            this.reconstructor = null;
            super.emitReserved("decoded", packet);
          }
        }
      } else {
        throw new Error("Unknown type: " + obj);
      }
    }
    decodeString(str) {
      let i2 = 0;
      const p = {
        type: Number(str.charAt(0))
      };
      if (PacketType[p.type] === void 0) {
        throw new Error("unknown packet type " + p.type);
      }
      if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) {
        const start = i2 + 1;
        while (str.charAt(++i2) !== "-" && i2 != str.length) {
        }
        const buf = str.substring(start, i2);
        if (buf != Number(buf) || str.charAt(i2) !== "-") {
          throw new Error("Illegal attachments");
        }
        p.attachments = Number(buf);
      }
      if ("/" === str.charAt(i2 + 1)) {
        const start = i2 + 1;
        while (++i2) {
          const c = str.charAt(i2);
          if ("," === c)
            break;
          if (i2 === str.length)
            break;
        }
        p.nsp = str.substring(start, i2);
      } else {
        p.nsp = "/";
      }
      const next = str.charAt(i2 + 1);
      if ("" !== next && Number(next) == next) {
        const start = i2 + 1;
        while (++i2) {
          const c = str.charAt(i2);
          if (null == c || Number(c) != c) {
            --i2;
            break;
          }
          if (i2 === str.length)
            break;
        }
        p.id = Number(str.substring(start, i2 + 1));
      }
      if (str.charAt(++i2)) {
        const payload = this.tryParse(str.substr(i2));
        if (Decoder.isPayloadValid(p.type, payload)) {
          p.data = payload;
        } else {
          throw new Error("invalid payload");
        }
      }
      return p;
    }
    tryParse(str) {
      try {
        return JSON.parse(str, this.reviver);
      } catch (e) {
        return false;
      }
    }
    static isPayloadValid(type2, payload) {
      switch (type2) {
        case PacketType.CONNECT:
          return isObject(payload);
        case PacketType.DISCONNECT:
          return payload === void 0;
        case PacketType.CONNECT_ERROR:
          return typeof payload === "string" || isObject(payload);
        case PacketType.EVENT:
        case PacketType.BINARY_EVENT:
          return Array.isArray(payload) && (typeof payload[0] === "number" || typeof payload[0] === "string" && RESERVED_EVENTS.indexOf(payload[0]) === -1);
        case PacketType.ACK:
        case PacketType.BINARY_ACK:
          return Array.isArray(payload);
      }
    }
    destroy() {
      if (this.reconstructor) {
        this.reconstructor.finishedReconstruction();
        this.reconstructor = null;
      }
    }
  };
  var BinaryReconstructor = class {
    constructor(packet) {
      this.packet = packet;
      this.buffers = [];
      this.reconPack = packet;
    }
    takeBinaryData(binData) {
      this.buffers.push(binData);
      if (this.buffers.length === this.reconPack.attachments) {
        const packet = reconstructPacket(this.reconPack, this.buffers);
        this.finishedReconstruction();
        return packet;
      }
      return null;
    }
    finishedReconstruction() {
      this.reconPack = null;
      this.buffers = [];
    }
  };

  // node_modules/socket.io-client/build/esm/on.js
  function on(obj, ev, fn) {
    obj.on(ev, fn);
    return function subDestroy() {
      obj.off(ev, fn);
    };
  }

  // node_modules/socket.io-client/build/esm/socket.js
  var RESERVED_EVENTS2 = Object.freeze({
    connect: 1,
    connect_error: 1,
    disconnect: 1,
    disconnecting: 1,
    newListener: 1,
    removeListener: 1
  });
  var Socket2 = class extends Emitter {
    constructor(io, nsp, opts) {
      super();
      this.connected = false;
      this.recovered = false;
      this.receiveBuffer = [];
      this.sendBuffer = [];
      this._queue = [];
      this._queueSeq = 0;
      this.ids = 0;
      this.acks = {};
      this.flags = {};
      this.io = io;
      this.nsp = nsp;
      if (opts && opts.auth) {
        this.auth = opts.auth;
      }
      this._opts = Object.assign({}, opts);
      if (this.io._autoConnect)
        this.open();
    }
    get disconnected() {
      return !this.connected;
    }
    subEvents() {
      if (this.subs)
        return;
      const io = this.io;
      this.subs = [
        on(io, "open", this.onopen.bind(this)),
        on(io, "packet", this.onpacket.bind(this)),
        on(io, "error", this.onerror.bind(this)),
        on(io, "close", this.onclose.bind(this))
      ];
    }
    get active() {
      return !!this.subs;
    }
    connect() {
      if (this.connected)
        return this;
      this.subEvents();
      if (!this.io["_reconnecting"])
        this.io.open();
      if ("open" === this.io._readyState)
        this.onopen();
      return this;
    }
    open() {
      return this.connect();
    }
    send(...args) {
      args.unshift("message");
      this.emit.apply(this, args);
      return this;
    }
    emit(ev, ...args) {
      if (RESERVED_EVENTS2.hasOwnProperty(ev)) {
        throw new Error('"' + ev.toString() + '" is a reserved event name');
      }
      args.unshift(ev);
      if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {
        this._addToQueue(args);
        return this;
      }
      const packet = {
        type: PacketType.EVENT,
        data: args
      };
      packet.options = {};
      packet.options.compress = this.flags.compress !== false;
      if ("function" === typeof args[args.length - 1]) {
        const id = this.ids++;
        const ack = args.pop();
        this._registerAckCallback(id, ack);
        packet.id = id;
      }
      const isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable;
      const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);
      if (discardPacket) {
      } else if (this.connected) {
        this.notifyOutgoingListeners(packet);
        this.packet(packet);
      } else {
        this.sendBuffer.push(packet);
      }
      this.flags = {};
      return this;
    }
    _registerAckCallback(id, ack) {
      var _a;
      const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;
      if (timeout === void 0) {
        this.acks[id] = ack;
        return;
      }
      const timer = this.io.setTimeoutFn(() => {
        delete this.acks[id];
        for (let i2 = 0; i2 < this.sendBuffer.length; i2++) {
          if (this.sendBuffer[i2].id === id) {
            this.sendBuffer.splice(i2, 1);
          }
        }
        ack.call(this, new Error("operation has timed out"));
      }, timeout);
      this.acks[id] = (...args) => {
        this.io.clearTimeoutFn(timer);
        ack.apply(this, [null, ...args]);
      };
    }
    emitWithAck(ev, ...args) {
      const withErr = this.flags.timeout !== void 0 || this._opts.ackTimeout !== void 0;
      return new Promise((resolve, reject) => {
        args.push((arg1, arg2) => {
          if (withErr) {
            return arg1 ? reject(arg1) : resolve(arg2);
          } else {
            return resolve(arg1);
          }
        });
        this.emit(ev, ...args);
      });
    }
    _addToQueue(args) {
      let ack;
      if (typeof args[args.length - 1] === "function") {
        ack = args.pop();
      }
      const packet = {
        id: this._queueSeq++,
        tryCount: 0,
        pending: false,
        args,
        flags: Object.assign({ fromQueue: true }, this.flags)
      };
      args.push((err, ...responseArgs) => {
        if (packet !== this._queue[0]) {
          return;
        }
        const hasError = err !== null;
        if (hasError) {
          if (packet.tryCount > this._opts.retries) {
            this._queue.shift();
            if (ack) {
              ack(err);
            }
          }
        } else {
          this._queue.shift();
          if (ack) {
            ack(null, ...responseArgs);
          }
        }
        packet.pending = false;
        return this._drainQueue();
      });
      this._queue.push(packet);
      this._drainQueue();
    }
    _drainQueue(force = false) {
      if (!this.connected || this._queue.length === 0) {
        return;
      }
      const packet = this._queue[0];
      if (packet.pending && !force) {
        return;
      }
      packet.pending = true;
      packet.tryCount++;
      this.flags = packet.flags;
      this.emit.apply(this, packet.args);
    }
    packet(packet) {
      packet.nsp = this.nsp;
      this.io._packet(packet);
    }
    onopen() {
      if (typeof this.auth == "function") {
        this.auth((data) => {
          this._sendConnectPacket(data);
        });
      } else {
        this._sendConnectPacket(this.auth);
      }
    }
    _sendConnectPacket(data) {
      this.packet({
        type: PacketType.CONNECT,
        data: this._pid ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data) : data
      });
    }
    onerror(err) {
      if (!this.connected) {
        this.emitReserved("connect_error", err);
      }
    }
    onclose(reason, description) {
      this.connected = false;
      delete this.id;
      this.emitReserved("disconnect", reason, description);
    }
    onpacket(packet) {
      const sameNamespace = packet.nsp === this.nsp;
      if (!sameNamespace)
        return;
      switch (packet.type) {
        case PacketType.CONNECT:
          if (packet.data && packet.data.sid) {
            this.onconnect(packet.data.sid, packet.data.pid);
          } else {
            this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));
          }
          break;
        case PacketType.EVENT:
        case PacketType.BINARY_EVENT:
          this.onevent(packet);
          break;
        case PacketType.ACK:
        case PacketType.BINARY_ACK:
          this.onack(packet);
          break;
        case PacketType.DISCONNECT:
          this.ondisconnect();
          break;
        case PacketType.CONNECT_ERROR:
          this.destroy();
          const err = new Error(packet.data.message);
          err.data = packet.data.data;
          this.emitReserved("connect_error", err);
          break;
      }
    }
    onevent(packet) {
      const args = packet.data || [];
      if (null != packet.id) {
        args.push(this.ack(packet.id));
      }
      if (this.connected) {
        this.emitEvent(args);
      } else {
        this.receiveBuffer.push(Object.freeze(args));
      }
    }
    emitEvent(args) {
      if (this._anyListeners && this._anyListeners.length) {
        const listeners = this._anyListeners.slice();
        for (const listener of listeners) {
          listener.apply(this, args);
        }
      }
      super.emit.apply(this, args);
      if (this._pid && args.length && typeof args[args.length - 1] === "string") {
        this._lastOffset = args[args.length - 1];
      }
    }
    ack(id) {
      const self2 = this;
      let sent = false;
      return function(...args) {
        if (sent)
          return;
        sent = true;
        self2.packet({
          type: PacketType.ACK,
          id,
          data: args
        });
      };
    }
    onack(packet) {
      const ack = this.acks[packet.id];
      if ("function" === typeof ack) {
        ack.apply(this, packet.data);
        delete this.acks[packet.id];
      } else {
      }
    }
    onconnect(id, pid) {
      this.id = id;
      this.recovered = pid && this._pid === pid;
      this._pid = pid;
      this.connected = true;
      this.emitBuffered();
      this.emitReserved("connect");
      this._drainQueue(true);
    }
    emitBuffered() {
      this.receiveBuffer.forEach((args) => this.emitEvent(args));
      this.receiveBuffer = [];
      this.sendBuffer.forEach((packet) => {
        this.notifyOutgoingListeners(packet);
        this.packet(packet);
      });
      this.sendBuffer = [];
    }
    ondisconnect() {
      this.destroy();
      this.onclose("io server disconnect");
    }
    destroy() {
      if (this.subs) {
        this.subs.forEach((subDestroy) => subDestroy());
        this.subs = void 0;
      }
      this.io["_destroy"](this);
    }
    disconnect() {
      if (this.connected) {
        this.packet({ type: PacketType.DISCONNECT });
      }
      this.destroy();
      if (this.connected) {
        this.onclose("io client disconnect");
      }
      return this;
    }
    close() {
      return this.disconnect();
    }
    compress(compress) {
      this.flags.compress = compress;
      return this;
    }
    get volatile() {
      this.flags.volatile = true;
      return this;
    }
    timeout(timeout) {
      this.flags.timeout = timeout;
      return this;
    }
    onAny(listener) {
      this._anyListeners = this._anyListeners || [];
      this._anyListeners.push(listener);
      return this;
    }
    prependAny(listener) {
      this._anyListeners = this._anyListeners || [];
      this._anyListeners.unshift(listener);
      return this;
    }
    offAny(listener) {
      if (!this._anyListeners) {
        return this;
      }
      if (listener) {
        const listeners = this._anyListeners;
        for (let i2 = 0; i2 < listeners.length; i2++) {
          if (listener === listeners[i2]) {
            listeners.splice(i2, 1);
            return this;
          }
        }
      } else {
        this._anyListeners = [];
      }
      return this;
    }
    listenersAny() {
      return this._anyListeners || [];
    }
    onAnyOutgoing(listener) {
      this._anyOutgoingListeners = this._anyOutgoingListeners || [];
      this._anyOutgoingListeners.push(listener);
      return this;
    }
    prependAnyOutgoing(listener) {
      this._anyOutgoingListeners = this._anyOutgoingListeners || [];
      this._anyOutgoingListeners.unshift(listener);
      return this;
    }
    offAnyOutgoing(listener) {
      if (!this._anyOutgoingListeners) {
        return this;
      }
      if (listener) {
        const listeners = this._anyOutgoingListeners;
        for (let i2 = 0; i2 < listeners.length; i2++) {
          if (listener === listeners[i2]) {
            listeners.splice(i2, 1);
            return this;
          }
        }
      } else {
        this._anyOutgoingListeners = [];
      }
      return this;
    }
    listenersAnyOutgoing() {
      return this._anyOutgoingListeners || [];
    }
    notifyOutgoingListeners(packet) {
      if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {
        const listeners = this._anyOutgoingListeners.slice();
        for (const listener of listeners) {
          listener.apply(this, packet.data);
        }
      }
    }
  };

  // node_modules/socket.io-client/build/esm/contrib/backo2.js
  function Backoff(opts) {
    opts = opts || {};
    this.ms = opts.min || 100;
    this.max = opts.max || 1e4;
    this.factor = opts.factor || 2;
    this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
    this.attempts = 0;
  }
  Backoff.prototype.duration = function() {
    var ms = this.ms * Math.pow(this.factor, this.attempts++);
    if (this.jitter) {
      var rand = Math.random();
      var deviation = Math.floor(rand * this.jitter * ms);
      ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
    }
    return Math.min(ms, this.max) | 0;
  };
  Backoff.prototype.reset = function() {
    this.attempts = 0;
  };
  Backoff.prototype.setMin = function(min) {
    this.ms = min;
  };
  Backoff.prototype.setMax = function(max) {
    this.max = max;
  };
  Backoff.prototype.setJitter = function(jitter) {
    this.jitter = jitter;
  };

  // node_modules/socket.io-client/build/esm/manager.js
  var Manager = class extends Emitter {
    constructor(uri, opts) {
      var _a;
      super();
      this.nsps = {};
      this.subs = [];
      if (uri && "object" === typeof uri) {
        opts = uri;
        uri = void 0;
      }
      opts = opts || {};
      opts.path = opts.path || "/socket.io";
      this.opts = opts;
      installTimerFunctions(this, opts);
      this.reconnection(opts.reconnection !== false);
      this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);
      this.reconnectionDelay(opts.reconnectionDelay || 1e3);
      this.reconnectionDelayMax(opts.reconnectionDelayMax || 5e3);
      this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);
      this.backoff = new Backoff({
        min: this.reconnectionDelay(),
        max: this.reconnectionDelayMax(),
        jitter: this.randomizationFactor()
      });
      this.timeout(null == opts.timeout ? 2e4 : opts.timeout);
      this._readyState = "closed";
      this.uri = uri;
      const _parser = opts.parser || esm_exports;
      this.encoder = new _parser.Encoder();
      this.decoder = new _parser.Decoder();
      this._autoConnect = opts.autoConnect !== false;
      if (this._autoConnect)
        this.open();
    }
    reconnection(v) {
      if (!arguments.length)
        return this._reconnection;
      this._reconnection = !!v;
      return this;
    }
    reconnectionAttempts(v) {
      if (v === void 0)
        return this._reconnectionAttempts;
      this._reconnectionAttempts = v;
      return this;
    }
    reconnectionDelay(v) {
      var _a;
      if (v === void 0)
        return this._reconnectionDelay;
      this._reconnectionDelay = v;
      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);
      return this;
    }
    randomizationFactor(v) {
      var _a;
      if (v === void 0)
        return this._randomizationFactor;
      this._randomizationFactor = v;
      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);
      return this;
    }
    reconnectionDelayMax(v) {
      var _a;
      if (v === void 0)
        return this._reconnectionDelayMax;
      this._reconnectionDelayMax = v;
      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);
      return this;
    }
    timeout(v) {
      if (!arguments.length)
        return this._timeout;
      this._timeout = v;
      return this;
    }
    maybeReconnectOnOpen() {
      if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {
        this.reconnect();
      }
    }
    open(fn) {
      if (~this._readyState.indexOf("open"))
        return this;
      this.engine = new Socket(this.uri, this.opts);
      const socket = this.engine;
      const self2 = this;
      this._readyState = "opening";
      this.skipReconnect = false;
      const openSubDestroy = on(socket, "open", function() {
        self2.onopen();
        fn && fn();
      });
      const onError = (err) => {
        this.cleanup();
        this._readyState = "closed";
        this.emitReserved("error", err);
        if (fn) {
          fn(err);
        } else {
          this.maybeReconnectOnOpen();
        }
      };
      const errorSub = on(socket, "error", onError);
      if (false !== this._timeout) {
        const timeout = this._timeout;
        const timer = this.setTimeoutFn(() => {
          openSubDestroy();
          onError(new Error("timeout"));
          socket.close();
        }, timeout);
        if (this.opts.autoUnref) {
          timer.unref();
        }
        this.subs.push(() => {
          this.clearTimeoutFn(timer);
        });
      }
      this.subs.push(openSubDestroy);
      this.subs.push(errorSub);
      return this;
    }
    connect(fn) {
      return this.open(fn);
    }
    onopen() {
      this.cleanup();
      this._readyState = "open";
      this.emitReserved("open");
      const socket = this.engine;
      this.subs.push(on(socket, "ping", this.onping.bind(this)), on(socket, "data", this.ondata.bind(this)), on(socket, "error", this.onerror.bind(this)), on(socket, "close", this.onclose.bind(this)), on(this.decoder, "decoded", this.ondecoded.bind(this)));
    }
    onping() {
      this.emitReserved("ping");
    }
    ondata(data) {
      try {
        this.decoder.add(data);
      } catch (e) {
        this.onclose("parse error", e);
      }
    }
    ondecoded(packet) {
      nextTick(() => {
        this.emitReserved("packet", packet);
      }, this.setTimeoutFn);
    }
    onerror(err) {
      this.emitReserved("error", err);
    }
    socket(nsp, opts) {
      let socket = this.nsps[nsp];
      if (!socket) {
        socket = new Socket2(this, nsp, opts);
        this.nsps[nsp] = socket;
      } else if (this._autoConnect && !socket.active) {
        socket.connect();
      }
      return socket;
    }
    _destroy(socket) {
      const nsps = Object.keys(this.nsps);
      for (const nsp of nsps) {
        const socket2 = this.nsps[nsp];
        if (socket2.active) {
          return;
        }
      }
      this._close();
    }
    _packet(packet) {
      const encodedPackets = this.encoder.encode(packet);
      for (let i2 = 0; i2 < encodedPackets.length; i2++) {
        this.engine.write(encodedPackets[i2], packet.options);
      }
    }
    cleanup() {
      this.subs.forEach((subDestroy) => subDestroy());
      this.subs.length = 0;
      this.decoder.destroy();
    }
    _close() {
      this.skipReconnect = true;
      this._reconnecting = false;
      this.onclose("forced close");
      if (this.engine)
        this.engine.close();
    }
    disconnect() {
      return this._close();
    }
    onclose(reason, description) {
      this.cleanup();
      this.backoff.reset();
      this._readyState = "closed";
      this.emitReserved("close", reason, description);
      if (this._reconnection && !this.skipReconnect) {
        this.reconnect();
      }
    }
    reconnect() {
      if (this._reconnecting || this.skipReconnect)
        return this;
      const self2 = this;
      if (this.backoff.attempts >= this._reconnectionAttempts) {
        this.backoff.reset();
        this.emitReserved("reconnect_failed");
        this._reconnecting = false;
      } else {
        const delay = this.backoff.duration();
        this._reconnecting = true;
        const timer = this.setTimeoutFn(() => {
          if (self2.skipReconnect)
            return;
          this.emitReserved("reconnect_attempt", self2.backoff.attempts);
          if (self2.skipReconnect)
            return;
          self2.open((err) => {
            if (err) {
              self2._reconnecting = false;
              self2.reconnect();
              this.emitReserved("reconnect_error", err);
            } else {
              self2.onreconnect();
            }
          });
        }, delay);
        if (this.opts.autoUnref) {
          timer.unref();
        }
        this.subs.push(() => {
          this.clearTimeoutFn(timer);
        });
      }
    }
    onreconnect() {
      const attempt = this.backoff.attempts;
      this._reconnecting = false;
      this.backoff.reset();
      this.emitReserved("reconnect", attempt);
    }
  };

  // node_modules/socket.io-client/build/esm/index.js
  var cache = {};
  function lookup2(uri, opts) {
    if (typeof uri === "object") {
      opts = uri;
      uri = void 0;
    }
    opts = opts || {};
    const parsed = url(uri, opts.path || "/socket.io");
    const source = parsed.source;
    const id = parsed.id;
    const path = parsed.path;
    const sameNamespace = cache[id] && path in cache[id]["nsps"];
    const newConnection = opts.forceNew || opts["force new connection"] || false === opts.multiplex || sameNamespace;
    let io;
    if (newConnection) {
      io = new Manager(source, opts);
    } else {
      if (!cache[id]) {
        cache[id] = new Manager(source, opts);
      }
      io = cache[id];
    }
    if (parsed.query && !opts.query) {
      opts.query = parsed.queryKey;
    }
    return io.socket(parsed.path, opts);
  }
  Object.assign(lookup2, {
    Manager,
    Socket: Socket2,
    io: lookup2,
    connect: lookup2
  });

  // frappe/public/js/frappe/socketio_client.js
  frappe.provide("frappe.realtime");
  var RealTimeClient = class {
    constructor() {
      this.open_tasks = {};
      this.open_docs = /* @__PURE__ */ new Set();
    }
    on(event, callback) {
      if (this.socket) {
        this.connect();
        this.socket.on(event, callback);
      }
    }
    off(event, callback) {
      if (this.socket) {
        this.socket.off(event, callback);
      }
    }
    connect() {
      if (this.lazy_connect) {
        this.socket.connect();
        this.lazy_connect = false;
      }
    }
    emit(event, ...args) {
      this.connect();
      this.socket.emit(event, ...args);
    }
    init(port = 9e3, lazy_connect = false) {
      if (frappe.boot.disable_async) {
        return;
      }
      if (this.socket) {
        return;
      }
      this.lazy_connect = lazy_connect;
      let me = this;
      if (window.location.protocol == "https:") {
        this.socket = lookup2(this.get_host(port), {
          secure: true,
          withCredentials: true,
          reconnectionAttempts: 3,
          autoConnect: !lazy_connect
        });
      } else if (window.location.protocol == "http:") {
        this.socket = lookup2(this.get_host(port), {
          withCredentials: true,
          reconnectionAttempts: 3,
          autoConnect: !lazy_connect
        });
      }
      if (!this.socket) {
        console.log("Unable to connect to " + this.get_host(port));
        return;
      }
      this.socket.on("msgprint", function(message) {
        frappe.msgprint(message);
      });
      this.socket.on("progress", function(data) {
        if (data.progress) {
          data.percent = flt(data.progress[0]) / data.progress[1] * 100;
        }
        if (data.percent) {
          frappe.show_progress(
            data.title || __("Progress"),
            data.percent,
            100,
            data.description,
            true
          );
        }
      });
      this.setup_listeners();
      $(document).on("form-load form-rename", function(e, frm) {
        if (!frm.doc || frm.is_new()) {
          return;
        }
        me.doc_subscribe(frm.doctype, frm.docname);
      });
      $(document).on("form-refresh", function(e, frm) {
        if (!frm.doc || frm.is_new()) {
          return;
        }
        me.doc_open(frm.doctype, frm.docname);
      });
      $(document).on("form-unload", function(e, frm) {
        if (!frm.doc || frm.is_new()) {
          return;
        }
        me.doc_close(frm.doctype, frm.docname);
      });
    }
    get_host(port = 9e3) {
      let host = window.location.origin;
      if (window.dev_server) {
        let parts2 = host.split(":");
        port = frappe.boot.socketio_port || port.toString() || "9000";
        if (parts2.length > 2) {
          host = parts2[0] + ":" + parts2[1];
        }
        host = host + ":" + port;
      }
      return host + `/${frappe.boot.sitename}`;
    }
    subscribe(task_id, opts) {
      this.emit("task_subscribe", task_id);
      this.emit("progress_subscribe", task_id);
      this.open_tasks[task_id] = opts;
    }
    task_subscribe(task_id) {
      this.emit("task_subscribe", task_id);
    }
    task_unsubscribe(task_id) {
      this.emit("task_unsubscribe", task_id);
    }
    doctype_subscribe(doctype) {
      this.emit("doctype_subscribe", doctype);
    }
    doctype_unsubscribe(doctype) {
      this.emit("doctype_unsubscribe", doctype);
    }
    doc_subscribe(doctype, docname) {
      if (frappe.flags.doc_subscribe) {
        console.log("throttled");
        return;
      }
      if (this.open_docs.has(`${doctype}:${docname}`)) {
        return;
      }
      frappe.flags.doc_subscribe = true;
      setTimeout(function() {
        frappe.flags.doc_subscribe = false;
      }, 1e3);
      this.emit("doc_subscribe", doctype, docname);
      this.open_docs.add(`${doctype}:${docname}`);
    }
    doc_unsubscribe(doctype, docname) {
      this.emit("doc_unsubscribe", doctype, docname);
      return this.open_docs.delete(`${doctype}:${docname}`);
    }
    doc_open(doctype, docname) {
      this.emit("doc_open", doctype, docname);
    }
    doc_close(doctype, docname) {
      this.emit("doc_close", doctype, docname);
    }
    setup_listeners() {
      this.socket.on("task_status_change", function(data) {
        this.process_response(data, data.status.toLowerCase());
      });
      this.socket.on("task_progress", function(data) {
        this.process_response(data, "progress");
      });
    }
    process_response(data, method) {
      if (!data) {
        return;
      }
      let opts = this.open_tasks[data.task_id];
      if (opts[method]) {
        opts[method](data);
      }
      if (method === "success") {
        if (opts.callback)
          opts.callback(data);
      }
      frappe.request.cleanup(opts, data);
      if (opts.always) {
        opts.always(data);
      }
      if (data.status_code && data.status_code > 400 && opts.error) {
        opts.error(data);
      }
    }
    publish(event, message) {
      if (this.socket) {
        this.emit(event, message);
      }
    }
  };
  frappe.realtime = new RealTimeClient();
  frappe.socketio = frappe.realtime;
})();
/* @preserve
 * Leaflet 1.2.0, a JS library for interactive maps. http://leafletjs.com
 * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade
 */
/*!
  * Bootstrap alert.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap button.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap carousel.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap collapse.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap dropdown.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap modal.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap popover.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap scrollspy.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap tab.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap toast.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap tooltip.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
  * Bootstrap util.js v4.6.2 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
/*!
 * Determine if an object is a Buffer
 *
 * @author   Feross Aboukhadijeh <https://feross.org>
 * @license  MIT
 */
/*!
 * jQuery JavaScript Library v3.7.0
 * https://jquery.com/
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license
 * https://jquery.org/license
 *
 * Date: 2023-05-11T18:29Z
 */
/*!
Copyright (c) 2016 Dominik Moritz

This file is part of the leaflet locate control. It is licensed under the MIT license.
You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
*/
/*! Sortable 1.15.0 - MIT | git://github.com/SortableJS/Sortable.git */
/**!
 * @fileOverview Kickass library to create and place poppers near their reference elements.
 * @version 1.16.1
 * @license
 * Copyright (c) 2016 Federico Zivolo and contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! moment.js
//! momentjs.com
//! version : 2.29.4
//# sourceMappingURL=frappe-web.bundle.TUOLBSY5.js.map
